HTPP 메시지에 html, txt, 사진, json, xml 등 거의 모든 확장자의 데이터들을 전송한다. 또한 서버 간 데이터를 주고 받을 때에도 HTTP 프로토콜을 사용한다.
HTTP/1.1이 대중적이지만 HTTP/2, HTTP/3의 사용도 점점 증가되는 추세이다.
Client-Server 구조이며 비연결성이고 Stateless인 프로토콜이며 단순한 구조여서 확장하기 쉽다.
클라이언트에서 Request를 서버로 전송하고 서버의 Response를 기다린다. 서버는 클라이언트가 요청한 내용의 결과를 응답으로 전송한다.
서버가 비즈니스 로직과 데이터를 처리할 수 있도록 맡고 클라이언트는 UI 등 사용성에 집중하게 설계하면 서버와 클라이언트는 각각 독립적이게 되고 생산성이 높아지며 유지보수 관점으로도 좋다.
HTTP는 기본적으로 연결을 계속 유지하지 않는 프로토콜이다. 일반적으로 초 단위 이하로 빠른 속도로 즉각 응답하며 1시간 동안 수천명이 요청을 보내도 실제 서버에서 동시에 처리하는 요청은 매우 적은 양이다. 따라서 서버의 자원을 효율적으로 사용할 수 있다.
TCP/IP의 연결을 다시 새로 맺어줘야 하기 때문에 3-way handshake 과정이 추가되어 시간이 더 소요된다. 그리고 웹 브라우저로 사이트 요청할 경우, 사진, HTML, js, css등 수 많은 자원이 다운로드 되어 각 자원마다 연결/종료를 해야되므로 매우 비효율적이다. 그러나 지금은 HTTP 지속 연결(Persistent Connections
)로 해결할 수 있고 HTTP/2, HTTP/3에서 최적화와 성능을 개선하였다.
하나의 TCP 연결로 복수의 HTTP 요청과 응답을 주고받을 수 있는 개념으로 기존의 매 요청/응답 쌍마다 새로운 요청을 여는 것과 반대되는 개념이다. 클라이언트와 서버를 연결하고 요청과 응답이 다 끝날 때까지 연결을 계속 유지한다.