하이퍼 텍스트 전송 프로토콜
이라고도 하며, 웹을 통해 데이터를 전송하는 데 사용
되는 Protocol(프로토콜)이다.
HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계
돼 있다. 인터넷상에서 흔히 볼 수 있는 HTML로 작성된 문서는 HTTP로 보낼 수 있는 데이터의 한 종류일 뿐이다. 이미지, 동영상, 오디오, 텍스트 문서들 아무튼 종류를 가리지 않는다
.
클라이언트-서버
모델 혹은 프로토콜
을 사용한다. 여기서 말하는 클라이언트
는 보통 가정용 컴퓨터, 노트북, 모바일 장치를 말하고 HTTP 서버
는 일반적으로 Apache, IIS, nginx와_ 같은 웹 서버 소프트웨어를 실행하는 웹 호스트이다.
클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다.
연결은 전송 계층에서 제어되므로 근본적으로 HTTP 영역 밖이다. HTTP는 연결될 수 있도록 하는 근본적인 전송 프로토콜을 요구하지 않는다. 다만 그저 신뢰할 수 있거나 메시지 손실이 없는(최소한의 오류는 표시) 연결을 요구 할 뿐이다. 인터넷 상의 가장 일반적인 두 개의 전송 프로토콜 중에서 TCP
는 신뢰할 수 있으며 UDP
는 그렇지 않다. 그러므로 HTTP는 연결이 필수는 아니지만 연결 기반인 TCP 표준에 의존합니다.
클라이언트가 서버와 통신하고자 할 때, 최종 서버가 됐든 중간 프록시가 됐든 공통 과정을 수행한다.
Connectless
서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다. 기본적으로는 자원 하나에 대해서 하나의 연결을 만든다. 이런 작동방식은 각각 아래의 장점과 단점을 가진다.
stateless
라고 하는데, Connectless로 부터 파생되는 특징이라고 할 수 있다. 클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다. 예컨대, 클라이언트가 과거에 로그인을 성공하더라도 로그인 정보를 유지할 수가 없다. HTTP는 COOKIE를 이용해서 이 문제를 해결하고 있다.Reference