다양한 기록

HTTP 프로토콜 구조 본문

네트워크

HTTP 프로토콜 구조

라구넹 2024. 3. 25. 18:26
HTTP Request Message HTTP Response Message
요청 라인 상태 라인
제네럴 헤더 제네럴 헤더
리퀘스트 헤더 리스폰스 헤더
엔티티 헤더 엔티티 헤더
CRLF CRLF
Body Body

 

 

HTTP 요청 메시지

리퀘스트 라인 [method] [sp] [URL] [sp] [version] [cr][lf]
헤더라인 [header field name] [value] [cr][lf]
. ...............
. [header field name] [value] [cr][lf]
공백 [cr][lf]
바디 [Entity Body]
Get /abc.html HTTP/1.11\r\n
Host: www-xyz.com\r\n
Accept...
.....
keep-Alive: 115\r\n
\r\n
Body

[Get /abc.html HTTP/1.11\r\n]

리퀘스트 라인.

[메소드] [리퀘스트 타겟(URL)] [HTTP 버전]

 

* 메소드 타입

HTTP/1.0 (비지속)

- GET: 서버에게 URL의 웹 문서 전송 요청

- HEAD: 문서 내용보다 특정 문서(헤더)에 대한 정보 요청

- POST: 클라이언트가 서버에 정보 전송

 

HTTP/1.1 (지속)

- GET, HEAD, POST

- PUT: 바디의 내용을 URL에 업로드

- DELETE: URL 지정 리소스 삭제

- PATCH, MOVE, LINK, OPTION 등..

 

* 클라이언트가 서버로 데이터를 보내는 법

1. POST

바디에 넣어서 보내기 (데이터)

2. URL

GET의 URL 헤더에 붙여서 보내기

예) www.1.com/search?abc

 

[Host: www-xyz.com\r\n]

헤더. 리퀘스트 추가 정보를 담고 있음

Host: 접속하려는 호스트 주소

Accept: 처리 가능한 미디어 종류

keep-Alive: 기다릴 수 있는 시간

 

[공백]

헤더 라인들과 바디 사이에 \r\n

 

[Body]

없어도 됩니다. 필요한 경우만 붙어 있습니다.

 

HTTP 응답 메시지

HTTP1.1 200 OK\r\n
Date: ~~
Sever: ~~
....
\r\n
data data....

 

프로토콜, 스테터스 코드, 스테이터스 프레이즈

헤더 라인

공백

바디(데이터, 요청받은 HTML 파일 등)

 

* 스테이터스 코드

200 OK

301 Moved Permanantly : 주소 이동, 알아서 이동된 곳으로 연결해 줄 거라 이용자는 별 상관 없음

400 Bad Request : 서버가 못알아먹었음

404 Not Found : 그런 거 없음

505 HTTP Version Not Supported : 버전이 안맞음

 

'네트워크' 카테고리의 다른 글

SMTP, MIME  (0) 2024.04.06
쿠키, 웹 캐시(프록시)  (0) 2024.04.06
URI, URL, URN / HTTP 개요(비지속적, 지속적 HTTP)  (0) 2024.03.25
IP와 포트, TCP/UDP  (0) 2024.03.25
소켓 프로그래밍 개요  (0) 2024.03.25