W3에서 데이터를 주고받기 위한 프로토콜로 주로 HTML 문서를 주고받는데 사용됩니다.
애플리케이션 레벨의 프로토콜로 주로 TCP/IP를 사용하며 HTTP3부터는 UDP를 사용합니다.
HTTP 프로토콜은 어떤 종류의 데이터든 전송할 수 있도록 설계되어있습니다.
특징
HTTP 메시지는 서버와 클라이언트에 의해 해석됩니다.
HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜 입니다.
비연결성 프로토콜이기에 Request/Response방식으로 동작합니다.
구성
서버
- Request를 받아 접근을 관리하고, 처리하고 Response하는 시스템
- Request에 대한 Response를 한다.
클라이언트
- Request를 보내는 개체(Ex. 웹 브라우저, 앱 등...)
Request(요청)
클라이언트가 서버에 요청을 하는 것으로 메시지 구조는 다음과 같습니다.
GET / HTTP/1.1 -> start line
Host: developer.mozilla.org -> headers
Accept-Language: fr -> headers
-> blank line
page=100&hl=fr -> body
start line
Request의 가장 첫 라인이며, 구성으로 HTTP Method, target, HTTP version이 각각 띄어쓰기로 구분됩니다.
headers
Request에 대한 정보를 담고 있는 부분으로 Key:Value 형식으로 되어있습니다.
Body
Request의 실제 내용으로, body가 없는 Request도 존재합니다.
Response(응답)
클라이언트가 요청한 정보를 담아 처리한 후 반환하는 메시지로 구조는 다음과 같습니다.
HTTP/1.1 200 OK -> start line
Date: Sat, 09 Oct 2010 14:28:02 GMT -> headers
Server: Apache -> headers
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT -> headers
ETag: "51142bc1-7449-479b075b2891b" -> headers
Accept-Ranges: bytes -> headers
Content-Length: 29769 -> headers
Content-Type: text/html -> headers
<!DOCTYPE html... (here comes the 29769 bytes...) -> body
start line
상태를 나타내는 부분으로 HTTP 버전, 상태 코드, 상태 값이 존재하며 띄어쓰기로 구분됩니다.
headers
Request의 headers와 동일하며, Response에 사용되는 값들만 추가됩니다.
Body
Request에 대한 반환값이 들어있습니다.
'CS' 카테고리의 다른 글
| [기초이론] URL (0) | 2024.10.14 |
|---|