HTTP
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버가 네트워크상의 자원을 요청하고 전달하기 위해 사용하는 무상태 응용 계층 프로토콜이다. World Wide Web의 기본 통신 프로토콜로 만들어졌으며, HTML 문서뿐 아니라 이미지, 영상, 프로그램 파일,...
| 정식 명칭 | Hypertext Transfer Protocol |
|---|---|
| 분류 | 응용 계층 네트워크 프로토콜 |
| 통신 모델 | 요청·응답, 클라이언트·서버 |
| 상태 모델 | 무상태 |
| 주요 용도 | World Wide Web, 웹 API, 기계 간 통신 |
| 표준화 기구 | IETF |
| 현재 핵심 표준 | RFC 9110 |
| 주요 버전 | HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3 |
| 보안 전송 | HTTPS |
| 기본 URI 스킴 | http, https |
| 일반적인 하위 전송 | TCP, QUIC |
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버가 네트워크상의 자원을 요청하고 전달하기 위해 사용하는 무상태 응용 계층 프로토콜이다. World Wide Web의 기본 통신 프로토콜로 만들어졌으며, HTML 문서뿐 아니라 이미지, 영상, 프로그램 파일, 구조화된 데이터와 실시간 스트림 등 다양한 표현을 전송한다. 현대의 HTTP는 웹 브라우저와 웹 서버 사이의 통신을 넘어 웹 API, 모바일 응용 프로그램, 마이크로서비스와 기계 간 통신에도 널리 사용된다.[1]
HTTP 통신은 일반적으로 클라이언트가 대상 자원과 수행할 동작을 나타내는 요청을 보내고, 서버가 처리 결과를 나타내는 응답을 반환하는 방식으로 이루어진다. 요청에는 메서드, 대상 URI, 헤더 필드와 선택적인 콘텐츠가 포함될 수 있으며, 응답에는 상태 코드, 헤더 필드와 선택적인 콘텐츠가 포함될 수 있다. HTTP 메시지는 자체 설명적인 구조를 가지며, 중간에 프록시, 게이트웨이, 역방향 프록시, 캐시와 콘텐츠 전송 네트워크가 배치될 수 있다.[2]
HTTP 자체는 각각의 요청을 독립적으로 처리하는 무상태 프로토콜이다. 사용자 로그인, 장바구니와 세션처럼 여러 요청에 걸쳐 유지해야 하는 상태는 쿠키, 인증 정보, URL, 서버 측 세션 저장소와 응용 프로그램 데이터 등을 이용하여 별도로 구성한다. 무상태라는 성질은 서버가 아무런 상태도 저장할 수 없다는 뜻이 아니라, 프로토콜의 기본 요청 의미가 이전 요청에 대한 서버의 기억을 요구하지 않는다는 뜻이다.
HTTP의 의미 체계와 전송 형식은 서로 분리되어 발전해 왔다. HTTP/1.1은 사람이 읽을 수 있는 텍스트 기반 메시지 형식을 사용하며 주로 TCP 위에서 동작한다. HTTP/2는 동일한 HTTP 의미를 이진 프레임, 스트림 다중화와 헤더 압축으로 전달한다. HTTP/3는 HTTP 의미를 QUIC 위에 매핑하여 독립적인 스트림 처리와 전송 계층 수준의 연결 설정 개선을 제공한다. 따라서 HTTP/1.1, HTTP/2와 HTTP/3는 웹 응용 프로그램이 사용하는 기본 메서드와 상태 코드의 의미를 공유하면서, 메시지를 네트워크로 운반하는 방식에서 차이를 가진다.[3][4][5]
https URI 스킴을 사용하는 HTTPS는 HTTP 통신을 TLS로 보호한다. 이를 통해 전송되는 데이터의 기밀성과 무결성을 제공하고, 인증서를 이용하여 통신 상대의 신원을 검증할 수 있다. HTTPS는 HTTP와 별개의 응용 의미 체계를 사용하는 프로토콜이라기보다, HTTP 메시지를 보안이 적용된 연결로 전달하는 구성이다.