HTTP(하이퍼텍스트 전송 프로토콜, Hypertext Transfer Protocol)는 월드 와이드 웹()에서 정보를 주고받을 때 사용되는 통신 프로토콜이다.
주요 특징은 아래와 같다.
- 무상태(stateless)
- 클라이언트-서버 모델
- 텍스트 기반 프로토콜
- 요청-응답 구조
HTTP는 기본적으로 무상태 프로토콜이기 때문에, 이전 요청과 현재 요청 간에 상태 정보를 유지하지 않는다. 그럼으로 이를 해결하기 위해 세션 및 쿠키와 같은 알고리즘을 사용하게 된다. 이전에 포스팅했으니 참고 바란다.
HTTP는 클라이언트와 서버간의 통신 모델을 따른다. 보통 클라이언트가 요청을 보내고 서버가 응답을 반환하는 방식이다.
HTTP 메세지는 텍스트 기반이다.
- 요청(Request)
- 응답(Response)
- 연결 헤제
- 암호화
클라이언트가 웹 서버에게 리소스(웹 페이지, 이미지 등)를 요청하기 위해 HTTP 요청 메시지를 생성한다. 이 요청 메시지에는 다음과 같은 정보가 포함됩니다.
- 요청 라인 : 요청 메서드(GET, POST, PUT 등), 리소스 경로, HTTP 버전
- 헤더(Headers) : 요청에 대한 부가 정보(쿠키, 사용자 에이전트 등)
- 본문(Body) : POST 요청과 같이 데이터를 전송할 때 사용됩니다.
웹 서버는 클라이언트의 요청을 처리하고 HTTP 응답 메시지를 생성하여 반환합니다. 이 응답 메시지에는 다음과 같은 정보가 포함됩니다.
- 상태 라인 : 상태 코드(200 OK, 404 Not Found 등), 상태 메시지
- 헤더(Headers) : 응답에 대한 부가 정보(쿠키, 캐시 지시자 등)
- 본문(Body) : 요청한 리소스의 내용
HTTP는 웹을 통한 정보 교환에 필수적인 프로토콜로, 웹 브라우징, API 요청, 웹 애플리케이션 개발 등 다양한 웹 활동에서 사용된다. 최근의 개선된 버전(HTTP/2 및 HTTP/3)은 성능 향상과 보안 강화를 위해 다양한 기술을 도입하고 있다.