본문 바로가기
Study

[STUDY] HTTP (Hyper Text Transfer Protocol)

by 물코더 2021. 12. 10.

 

1.HTTP (Hyper Text Transfer Protocol)

· TCP/IP 최상위 계층 (비연결성/비상태성)
· HTTP 메시지(ASCII 인코딩)는 클라이언트(client)-서버(server) 간 데이터를 교환하는 방식 ( 요청(request)-응답(response) )

 

1) HTTP 메시지 구조

 

[START LINE] POST / HTTP 1.1 | [STATUS LINE] HTTP / 1.1 200 ok
[HTTP HEADER] [HOST]:[PORT]
              User-Agent : Mozila ···
\r\n
[BODY]        ···

 

2) HTTP 요청(Request)

· 클라이언트(client) → 서버(server) HTTP 메시지 전달

 

① 시작줄 (Start Line)

[HTTP METHOD] / [REQUEST URL] / [HTTP VERSION]

② HTTP 헤더 (HTTP Header)

- General header : 메시지 전체에 적용
- Request header : User Agent, Accept Type ··· 헤더 내용을 구체화
- Entity header : 컨텐츠 길이 등 본문(Body)에 적용

③ 본문 (Body)

- GET 등 리소스 요청 HTTP 메시지에서는 사용되지 않음
- PUT / OPTIONS 등 변경(업데이트) 요청 시 데이터(data) 전송 목적으로 사용
※ 단일 리소스 본문(single-resource bodies) : 컨텐츠 길이(Content-Length)와 타입(Content-Type) 헤더 2개로 정의된 단일 본문으로 구성
※ 다중 리소스 본문(multiple-resource bodies) : 다중 본문으로 구성

 

3) HTTP 응답(Response)

· 서버(server) → 클라이언트(client) HTTP 메시지 전달

 

① 상태줄 (Status Line)

[HTTP METHOD] / [REQUEST URL] / [HTTP VERSION]

② HTTP 헤더 (HTTP Header)

- General header : 메시지 전체에 적용
- Response header : 상태줄(Status) 내용을 구체화
- Entity header : 컨텐츠 길이 등 본문(Body)에 적용

③ 본문 (Body)

- 201, 204 등 특정 상태 코드(status code) 응답에는 사용되지 않음

 

 

2. HTTP 발전과정

 

HTTP 0.9 → HTTP 1.0 → HTTP 1.1 → HTTP 2.0

 

1) HTTP 0.9

· One-Line Protocol
· GET 요청(request)과 응답(response)만 가능

 

2) HTTP 1.0

· HTTP 버전(version) / 상태코드(status code) / 헤더(header) 개념이 도입
· 단순 HTML 외 다른 형식의 문서도 전달 가능

 

3) HTTP 1.1

· 표준 프로토콜
· 연결 세션(connect session) 당 하나의 요청(request)과 응답(response)을 처리 ( 연결 세션은 재사용이 가능 )
· 요청(request)과 응답(response)이 순서대로 이루어지며 요청-응답에 따라 대기시간이 발생
※ CSS, 자바스크립트 등 압축(Minify)을 통해 응답시간을 단축시킬 수 있음

 

4) HTTP 2

· 연결 세션(connect session) 당 다중의 요청(response)과 응답(response)을 처리
· 요청-응답 순서에 관계없이 스트림(stream)으로 요청과 응답을 일괄 송/수신 (이진 프로토콜)

 

※ 교차 출처 리소스 공유(CORS, Cross Origin Resource Sharing)

· 추가적인 헤더를 사용하여 서버(server)의 자원(resource)에 접근 권한을 클라이언트(client)에 알려주는 기능
· 클라이언트(client)-서버(server) 간의 도메인(URL), 포트(port)가 다른 경우 CORS 요청을 수행
( XML HTTP Request, Fetch API, 이미지, 비디오 프레임, 웹폰트, CSS 다운로드 )

 

반응형

댓글