HTTP(HyperText Transfer Protocol)
문서를 전송하기 위한 프로토콜로 현재는 HTTP 메세지에 모든 것을 전송한다. HTML, 텍스트, 이미지, 음성, json 등등... 거의 모든 형태의 데이터를 전송 가능하고 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.
HTTP의 역사
1991년 HTTP/0.9: GET method만 지원, HTTP header 없음
1996년 HTTP/1.0: method, header 추가
1997년 HTTP/1.1: 가장 많이 사용, 가장 중요한 버전
2015년 HTTP/2: 성능 개선
~ 진행 중 HTTP/3: UDP 사용, 성능 개선
HTTP/2 까지는 TCP를 기반 프로토콜로 사용하였고 HTTP/3부터는 UDP를 사용한다.
HTTP의 특징
1. 클라이언트 - 서버 구조
request, response 구조로 클라이언트는 서버에 요청을 보내고 응답을 대기한다. 서버는 요청에 대한 결과를 만들어서 응답한다.

해당 특징으로 클라이언트와 서버는 각자의 독립적인 확장과 진화에 용이해졌다. 클라이언트는 사용자의 UI/UX를 서버는 데이터 처리를 맡아 독립적으로 진화가 가능
2. 무상태 프로토콜(Stateless), 비연결성
Stateless: 서버가 클라이언트의 상태를 보존하지 않는다.
서버가 클라이언트의 상태를 가지고 있지 않아 응답 서버를 쉽게 바꿀 수 있다는 장점이 존재한다. 하지만 클라이언트 측에서 추가 데이터를 전송해야한다는 단점도 존재한다.

비연결성: 서버가 클라이언트에 응답 이후 연결을 유지하지 않아 최소한의 자원만 사용하여 효율적임. 하지만 TCP/IP 연결을 새로 맺어야하여 3-way handshake와 같은 오버헤드가 발생할 수 있고 웹 브라우저로 사이트를 요청하면 수많은 자원들이 함께 다운로드 되기 때문에 매 요청마다
-> 지금은 HTTP 지속 연결로 많은 요청에 대한 문제를 어느정도 해결
3. HTTP-message

HTTP 메세지의 공식 스펙은 다음과 같다

시작 라인
요청: HTTP 메서드, 요청 대상, HTTP 버전
응답: HTTP 버전, 상태 코드, 이유 문구(사람이 이해할 수 있는 짧은 상태 코드 설명 글)
HTTP 헤더
용도: HTTP 전송에 필요한 모든 부가정보(바디의 크기, 압축, 인증, 브라우저 정보 등등..), 필요시 임의의 헤더 추가 가능
HTTP 메세지 바디
용도: 실제 전송할 데이터(HTML 문서, 이미지, 영상, json 등등 byte로 표현할 수 있는 모든 데이터 전송 가능)
'Computer Science' 카테고리의 다른 글
| HTTP - header1 (0) | 2025.08.15 |
|---|---|
| HTTP - 상태 코드 (0) | 2025.08.15 |
| HTTP - 메서드 (0) | 2025.08.14 |
| HTTP - URI와 웹 브라우저 요청 흐름 (0) | 2025.08.14 |
| HTTP - 기초 네트워크 (0) | 2025.08.14 |