
클라이언트와 웹 서버의 통신을 담당하는 프로토콜
프로토콜이란 서로 다른 시스템이 데이터를 원활하게 주고 받기 위해 표준화된 통신 규약을 말한다. 프로토콜의 종류에는 TCP, UDP, IP, HTTP 등 다양하며 그 중에서도 HTTP 프로토콜이란 클라이언트와 웹서버 간 통신을 담당하는 프로토콜 을 말한다.
HTTP는 HyperText Transfer Protocal의 줄임말로, HTML과 같은 문서 더 나아가 이미지나 영상 등의 리소스를 주고 받기 위한 애플리케이션 계층 프로토콜이다. HTTP 특징에 대해 자세하게 알아보자.
- 요청/응답 모델
- 무상태성 (stateless)
- 비연결성 (connectionless)
클라이언트가 서버에게 요청을 보내고 서버가 응답을 하는 구조

앞서 통신에 대한 내용을 읽을 때 나도 모르게 컴퓨터와 서버를 머리속에 그리고 둘이 데이터를 주고 받는 그림을 그렸을 것이다.
요청/응답 모델은 바로 이것이다! 클라이언트가 서버에게 요청을 보내고, 서버는 그에 대한 결과를 응답하는 구조를 요청/응답 구조 라고 말한다.
이 과정에서 클라이언트와 서버는 HTTP 메시지를 주고 받으며 통신하며 요청인지, 응답인지에 따라 HTTP 메시지가 다르다.
서버가 클라이언트 상태를 저장하지 않음 (과거를 기억하지 않는 통신)
서버는 클라이언트의 상태를 저장하지 않는다. (그렇기에 서버는 클라이언트를 구분할 수 없다) 일시적인 상태이기 때문에 서버 DB에 저장하여 타 서버와 동기화 과정을 거치지 않는다. 그 대신 클라이언트 측에서 해당 정보를 기억하며, 매 요청마다 이전 상태까지 모두 포함하여 보낸다. (상태를 저장하는 공간으로 웹 브라우저의 쿠키, 세션이 있다)
서버와 클라이언트 연결을 유지하지 않는다.
HTTP는 한 번 통신을 주고 받고 시간이 지나도 요청이 없으면 서버와의 연결을 끊어버린다. 왜 끊을까? 만약 서버에서 다수의 클라이언트와 연결을 계속 유지해야 한다면 이에 따른 많은 리소스가 발생하게 된다. 따라서 연결을 유지하기 위한 리소스를 줄이면 더 많은 연결을 할 수 있다는 장점 때문에 비연결성 특징을 갖는다.