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 다운로드 )
'Study' 카테고리의 다른 글
[STUDY] ECMAScript - 연혁(버전) 및 정리 (0) | 2022.05.22 |
---|---|
[STUDY] HTTPS (Hyper Text Transfer Protocol Secure) (0) | 2021.12.10 |
[STUDY] 브라우저 렌더링 (Browser Rendering) (0) | 2021.11.05 |
[STUDY] 메모리 (RAM, Random Access Memory) (0) | 2021.11.03 |
[STUDY] 자료구조(Data Structure) - 비선형 자료구조(Non-Linear Data Structure) (0) | 2021.11.02 |
댓글