Skip to content
Open
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 109 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,78 +9,150 @@
- - -

## IP란?
> 내용
> 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다. IPv4, IPV6 두 종류로 나뉜다. IPv4가 전 세계적으로 사용된 첫번째 인터넷 프로토콜이다. 일반적으로 IP주소 라고 하면 IPv4를 말한다. 4개의 숫자를 점으로 분리된 10진수로 표현한 192.168.52.11 의 형태를 가진다. 이를 2진법으로 표현하면 32비트 숫자가 된다. 즉, IPv4는 약 43억개의 주소를 가질 수 있다. 하지만 전세계적으로 인터넷 사용자 수가 급증하면서 IPv4는 고갈될 위기에 처했다. 이러한 고갈 문제를 해결하기 위해 등장한 주소가 IPv6이다. IPv6은 IPv4의 주소체계를 128비트 크기로 확장한 주소이다. 16비트씩 8자리로 각 자리를 콜론으로 구분한다. IPv6은 2<sup>128</sup>개의 주소를 가지고 있어 거의 무한대로 쓸 수 있다. 하지만 비용 문제로 완전히 상용화 되진 못했다.

## DNS란?
> 내용
> 도메인 네임 시스템의 약자로 IP네트워크에서 사용하는 시스템이다. 원래 IP주소는 숫자로 이루어져 있는데 사람이 외우기 힘들다. 그래서 naver.com 과 같이 사람이 알아볼 수 있도록 ‘별명’을 지어 정리하고 접근하기 쉽게 해준다. 이걸 또 컴퓨터가 알아볼 수 있게 다시 숫자로 바꿔주는 역할도 한다. 아래와 같은 동작과정을 거친다.
<p>
<ol>
<li>사용자가 naver.com을 입력하면 도메인 주소들을 가지고 있는 DNS서버에 접속된다.</li>
<li>naver.com의 IP주소(223.130.192.200)를 확인하고, 사용자 PC에 저달한다.</li>
<li>사용자가 전달받은 IP주소로 접속하고 화면에 홈페이지가 나타난다.</li>
</ol>
</p>

## Stateful과 Stateless란?
> 내용
> Stateful은 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존함을 의미한다. 홈페이지에서 한 번 로그인을 하면 페이지를 이동해도 계속 로그인이 유지되는 것이 Stateful이다. 클라이언트의 정보를 브라우저의 쿠키나 서버의 세션 메모리 등에 저장하고 통신 할 때마다 읽는다. Stateless는 반대로 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다. 단순히 서버에 요청이 오면 응답을 보내는 역할만 수행한다. 즉, 클라이언트와 서버간의 통신이 필요한 모든 상태 정보들은 클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어 보낸다.

### Stateful과 Stateless의 차이점
<p>
서버가 클라이언트의 상태를 저장하는지에 대한 유무의 차이가 있다. Stateful은 서버와 클라이언트의 상태를 저장하고 Stateless는 저장하지 않는다.
</p>

## HTTP란?
> 내용
> HTTP란 Hyper Text Transfer Protocol의 약자로, 서버와 클라이언트 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식이다. 우리가 흔히 사용하는 http://abc.com 은 abc.com이라는 주소가 가진 데이터 정보 등의 교환을 HTTP 방식으로 처리한다는것이다.
>
> HTTP는 특정 상태를 유지하지 않는 특징이 있다. 이것을 무상태성(Stateless)이라고 하는데 클라이언트와 서버 사이에 상태를 유지하지 않는 것이다. 서버 확장성이 높다는 장점이 있지만 클라이언트가 추가 데이터 전송을 많이 하게된다는 단점이 있다. 또, HTTP는 연결을 유지하지 않는다. 이를 비연결성(Connectionless)라고 하는데 앞서 나온 Stateless와 차이가 있다. 무상태성은 클라이언트와 서버 간에 상태 정보를 들고있지 않아 클라이언트가 상태 정보를 일일히 http에 실어 요청해야되는 것을 말하고, 비연결성은 클라이언트와 서버 간에 네트워크 연결이 끊어져 단절된다고 보면 된다. 이러한 비연결성 특성 덕분에 서버 자원을 매우 효율적으로 사용할 수 있다. 만약 서버와 클라이언트 사이의 연결을 유지한다면 서로의 네트워킹 요청이 없더라도 연결이 계속해서 유지되어 자원이 계속해서 사용된다. 이러한 점 때문에 HTTP는 기본적으로 연결을 유지하지 않는 모델이다.
>
> HTTP 통신은 클라이언트와 서버로 나뉘어진 구조로 되어있다. 클라이언트와 서버를 독립적으로 구분하여 각자의 역할에 집중할 수 있게 한다. 클라이언트에서 복잡한 로직이나 데이터를 다룰 필요없고, 서버는 로직과 데이터를 다루는데에만 집중하면 된다.
### HTTP 메세지 기본 구조 알아보기
- Start Line
- Header
- Content-Length
- Content-Type
- Host
- Date
- User-Agent
- Accept
- Body
- Start Line: HTTP Request Message의 시작 라인이다. 항상 첫번째 줄에 위치한다.

GET /test.html HTTP/1.1
[HTTP Method] [Request target] [HTTP version]
- Header: 해당 Request에 대한 추가 정보를 담고 있는 부분이다.
- Content-Length: 헤더 이후 요청한 파일의 데이터의 길이이다. 바이트 단위로 나타낸다.
- Content-Type: 클라이언트에게 반환된 데이터의 미디어 유형을 알려준다.
- Host: 요청하려는 서버 호스트 이름과 포트번호를 나타낸다.
- Date: 현재 날짜를 나타낸다.
- User-Agent: 클라이언트 프로그램 정보를 나타낸다. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.
- Accept: 클라이언트가 처리 가능한 미디어 타입 종류 나열한다.
- Body: HTTP Request가 전송하는 데이터를 담고 있는 부분이다. 전송하는 데이터가 없다면 body 부분은 비어있다.

### 상태 코드란?
- 200
- 201
- 300
- 400
- 401
- 403
- 404
- 500
- 200: 요청이 성공적으로 처리되었음을 의미한다. 성공의 의미는 http메소드에 따라 달라진다.
- 201: 요청이 성공적으로 처리되었으며 그 결과로 새로운 리소스가 생성되었음을 의미한다.
- 300: 요청에 대해서 하나 이상의 응답이 가능함을 의미한다. 요청 완료를 위해서 추가 작업 조치가 필요하다.
- 400: 클라이언트 에러 응답으로 잘못된 문법으로 인해 서버가 요청을 이해할 수 없음을 의미한다.
- 401: 비인증을 의미한다. 클라이언트가 응답을 받기 위해서는 스스로를 인증해야 한다.
- 403: 클라이언트가 콘텐츠에 접근할 권리가 없음을 의미한다. 401과 다른점은 서버가 클라이언트가 누구인지 알고 있다는 것이다.
- 404: 제일 흔하게 볼 수 있는 요청 처리 실패 코드로 서버가 요청받은 리소스를 찾을 수 없음을 의미한다.
- 500: 서버 에러 응답으로 서버가 처리 방법을 알 수 없어서 요청에 실패했음을 의미한다.
### http 메서드 알아보기 ([참고](https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC))
- GET
- POST
- PUT
- PATCH
- DELETE
- GET: 리소스 조회 메서드이다. POST도 조회할 수 있지만 GET메서드는 캐싱이 가능하다는 차이점이 있다.
- POST: 전달 데이터를 처리, 생성 요청 메서드 이다.
- PUT: 리소스 대체(수정) 메서드이다. 요청 메세지에 리소스가 있으면덮어쓰고 없으면 생성한다. 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내주어야 한다.
- PATCH: 리소스 일부분을 변경하는 메서드이다. PUT은 전체를 바꾸는거라면 PATCH는 일부분만 수정이 가능하다.
- DELETE: 리소스를 삭제하는 메서드이다.
### http와 https의 차이 알아보기
<p>
https는 암호화 및 인증이 있는 http이다. https는 TLS(SSL)를 사용하여 일반 http요청과 응답을 암호화한다. SSL이란, 웹사이트와 브라우저 사이 또는 두 서버 사이에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술이다. TLS는 SSL보다 안전한 버전이다. https는 http에 비해 보안상 더 안전한 프로토콜이다.
</p>
<img width="311" alt="image" src="https://github.com/user-attachments/assets/1c687718-a800-485b-a6f4-0532ed3cec8c">

## 세계표준시(UTC)란?
> 내용
> 국제적인 표준 시간의 기준으로 쓰이는 시각을 말한다. 1972년 1월 1일부터 시행된 국제 표준시로 국제사회가 사용하는 과학적 시간의 표준이다. UTC에서 0시, 즉 기준점에 달하는 도시는 런던이다.
### 대한민국의 표준시는 무엇인지 **간단**하게 알아보기
<p>
우리나라는 런던을 기준으로 +9시인 UTC+9가 표준시이다.
</p>

## 캐시란?
> 내용
> 한번 조회된 데이터를 미리 특정 공간에 저장해놓고 똑같은 요청이 발생하게 되면 저장한 데이터를 제공해서 빠르게 서비스를 제공해주는 것을 의미한다. 즉, 결과를 미리 저장하고 나중에 요청이 오면 그 요청에 대해서 DB또는 API를 참조하지 않고 캐시를 접근하여 요청을 처리하는 기법이다.

## 프록시란?
> 내용
> Proxy는 “대리”의 의미를 가지며 프로토콜에 있어서는 대리 응답 등에서 사용하는 개념이다. 인터넷 접속을 할 때 빠른 액세스나 안전한 통신 등을 확보하기 위한 중계서버를 “프록시 서버” 라고 한다. 클라이언트와 웹서버의 중간에 위치하고 있어 대신 통신을 받아준다.

## json이란?
> 내용
> JavaScript Object Notation 의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 data교환 형식이다. 데이터를 주고 받을 때 다양한 형식이 있는데 JSON 표현식은 사람과 기계가 이해하기 쉽고 용량이 작아서 가장 많이 쓰인다. JSON문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어졌다. 그래서 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환 할 수 있다. key/value가 존재할 수 있으며 key 값이나 문자열은 항상 쌍따옴표를 이용하여 표기해야 한다. 일반 자바스크립트 객체처럼 원하는 만큼 중첩시켜서 사용할 수도 있다. 자바스크립트를 기반으로 이루어져 있지만 JSON은 문법이 아닌 텍스트 형식이다.
### 자신의 이름, 학번, 나이가 들어가는 json배열을 만들어서 아래의 코드 블럭에 적으세요
안예성, 2209, 18의 데이터 한 개와 자신의 정보를 적은 데이터를 만들어 총 2개의 데이터를 만드세요
```json
json 작성하기
[
{
"name": "안예성",
"number": 2209,
"age": 18
},
{
"name": "심현진",
"number": 1308,
"age": 17
}
]
```

## .gitignore란?
> 내용
> 프로젝트에 원하지 않는 백업 파일이나 로그 파일 혹은 컴파일 된 파일들을 Git에서 제외할 수 있는 설정 파일을 말한다.

## URL, URI, URN이란?
> 내용
> <ul>
<li>
URI란 Uniform Resource Identifier, 통합 자원 식별자의 줄임말이다. 인터넷의 자원을 식별할 수 있는 문자열을 의미한다.
</li>
<li>
URL이란 Uniform Resource Locator의 줄임말이다. URI의 하위 개념으로 네트워크 상에서 웹페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. 웹 상의 주소를 나타내는 문자열이다.
</li>
<li>
URN이란, Uniform Resource Name의 줄임말로 URI의 하위개념이다. 이름으로 리소스를 특정하는 URI이다.
</li>
</ul>

## .md(markdown)이란?
> 내용
> 마크다운이란, 일반 텍스트 기반의 경량 마크업 언어이다. 쉽게 말하면, 웹상에서 글을 쓰는 모든 사람들을 위한 글쓰기 도구이다.
### 많이 쓰는 문법 적기
<ul>
<li>제목</li>

# 제목1 : HTML의 <h1> 태그
## 제목2 : HTML의 <h2> 태그
### 제목3 : HTML의 <h3> 태그
#### 제목4 : HTML의 <h4> 태그
##### 제목5 : HTML의 <h5> 태그
###### 제목6 : HTML의 <h6> 태그

<li>인용구문</li>

>인용구문
>>인용의 인용
<li>굵은 글씨</li>

이것은 **굵은 글씨** 입니다.
이것은 __굵은 글씨__ 입니다.
<li>리스트</li>

<ul>
<li>순서없는 리스트</li>
<li>리스트</li>
</ul>
</ul>


## 스레드란?
> 내용
> 하나의 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위를 말한다.

## 세션이란?
> 내용
> 비밀번호 등 클라이언트의 민감한 인증 정보를 브라우저가 아닌 서버 측에 저장하고 관리한다. 서버의 메모리에 저장하기도 하고, 서버의 로컬파일이나 데이터 베이스에 저장하기도 한다.

## 쿠키란?
> 내용
> 사용자의 웹 브라우저에 정보를 저장한다. 웹 서버는 쿠키를 생성하여 브라우저로 전송하고, 브라우저는 향후 HTTP 요청에 해당 쿠키를 포함한다.