Hypertext Transfer protocol 인터넷상에서 데이터를 주고 받기위한 서버/클라이언트 모델을 따르는 프로토콜로 클라이언트에서 요청을 보내면 서버는 응답한다. TCP/IP위에서 작동하고 기본포트는 80번이다. 어떤 종류의 데이터든지 전송할 수 있도록 설계돼 있다. 장점은 불특정 다수를 대상으로 하는 서비스에 적합한 거고 단점은 연결을 끊어버리기 때문에 클라이언트의 이전 상태를 알 수 없다. 1번요청 1번응답(one request one response), 무상태성(데이터를 저장하지 않는다)
HTTP는 인터넷의 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜로 일단 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것이었다. HTTPS는 SSL 보안 소켓 계층을 사용함으로써 보안성을 획득하였다. 암호화, 복호화가 필요하기 때문에 느리고 유지비용이 더 비싸다. 둘의 포트번호가 다르다. HTTPS는 포트번호가 443번을 사용한다.
HTTPS는 TCP위에 SSL/TLS층을 추가하여 암호화, 인증 그리고 무결성 보장을 통해 더 안전하게 만들어주는 프로토콜이다. 암호화에 쓰이는 키와 복호화에 쓰이는 키가 동일한 기법인 대칭키와 공개키 방식을 전부 사용하는 하이브리드 방식을 사용한다. 데이터전송을 위해 대칭키 방식을 사용하며 대칭키를 안전하게 전달하기 위해 공개키 방식을 사용한다.
TCP 전송이 끝나면 연결이 끊어지듯 HTTP도 서로 전송이 끝나면 연결이 끊어진다(disconnect현상). 이런 자원의 낭비를 막기 위해 keep-alive가 생겼다. 클라이언트 측에 연결을 유지하라는 신호를 보내면 클라이언트는 최대 timeout에 지정된 시간동안 연결을 유지한다. HTTP 1.1부터는 기본적으로 keep-alive로 동작한다.
HTTP 1.0은 단순히 open/operation/close 방식을 취하고 있는 단순한 구조다. HTTP 1.0의 반복되는 disconnect 현상으로인해 한 서버에서 계속해서 접속을 시도하게 되면 과부하가 걸리고 성능이 떨어지게 되는 문제가 발생하게 되는데 이를 해결하기 위해 HTTP 1.1이 등장했다. 인터넷 프로토콜 수행이 빠르게 될 수 있도록 성능을 향상한다.
HTTP2의 특징은 전체 요청을 통해 지연시간을 줄이고 응답 다중화를 지원하며, 프로토콜 오버헤드를 최소화하고, 요청 우선순위 지정을 추가하며, 서버 푸시를 지원하는 것에 있다. 전송방식을 텍스트방식을 바이너리형식으로 바뀌어 양방향전송이 가능해졌다.