이전 면접에서 HTTP가 어떤 프로토콜인지 질문을 받았는데 이참에 정리를 해두면 좋겠다 생각이 들어 글을 쓰게 되었다.
HTTP
HTTP는 TCP/IP 프로토콜에서 Application layer에 해당하는 프로토콜로 주로 웹 브라우저(클라이언트)와 웹 서버 간에 HTML, 이미지, JSON과 같은 리소스를 주고받을 때 사용됩니다.
Features
- 비연결성(Connectionless): 클라이언트가 요청을 보내고 서버가 응답을 완료하면, 연결은 종료됩니다. 요청마다 새로운 연결이 필요합니다.
- 무상태성(Stateless): 이전 요청과 다음 요청 간에 상태 정보를 저장하지 않습니다. 상태 유지를 위해서는 쿠키, 세션 등을 별도로 사용해야 합니다.
- 텍스트 기반 프로토콜: 요청(Request)과 응답(Response)이 모두 사람이 읽을 수 있는 형태로 구성되어 있어 디버깅이 쉬운 편입니다.
Web에서 HTTP
웹은 기본적으로 클라이언트-서버 구조로 구성되어 있다. Request를 보내고 Response로 응답하여 데이터를 주고받는다. 이때 HTTP 또는 HTTPS 프로토콜을 통해 서버에 요청을 보내고 응답한다.
HTTP/1.1
- 주요 특징: HTTP/1.1은 가장 널리 사용되는 HTTP 버전. 이 버전에서는 요청과 응답을 처리하기 위해 한 번의 연결을 사용하고, 그 연결을 다시 사용할 수 있도록 하는 keep-alive 기능을 제공.
- Keep-Alive: 기본적으로 HTTP/1.0에서는 요청을 보낼 때마다 새로운 연결을 맺고 응답 후에 연결을 끊었는데, HTTP/1.1에서는 연결을 지속적으로 유지할 수 있게 해준다. 이로 인해, 여러 요청/응답을 처리할 때마다 새로운 연결을 만드는 대신 기존 연결을 재사용할 수 있어 성능이 향상된다.