HTTP(Hypertext Transfer Protocol)
- 웹에서 데이터를 주고 받는 서버-클라이언트 모델의 프로토콜
- 80번 포트를 사용함
- 응용 레벨의 프로토콜로 TCP/IP 위에서 작동함
- 상태를 가지지 않은 Stateless 프로토콜
HTTP 구조

- Method, Path, Version, Headers, Body로 구성됨
HTTP 버전
HTTP/1.0
- 유용한 초기 개념 도입
- 메세지 포맷 규격화
- HTTP 헤더
- HTTP 메소드
- HTTP 응답 코드
- 텍스트 파일 이외의 다양한 파일 전송
- 리다이렉트, 비지속 연결 등
- 하나의 연결 당 하나의 요청을 처리하도록 구현되었기 때문에 서버로부터 파일을 가져올 때마다 3-way handshake 과정을 수행해야 해서 RTT가 증가함
- 이미지 스플리팅, 코드압축, 이미지 base64 인코딩 등의방법으로 RTT 증가를 해결하고자 함
HTTP/1.1
- HTTP 1.0에서 한 번 TCP 초기화 이후 keep-alive 옵션으로 여러 개의 파일을 송수신 할 수 있게끔 됨
- 여러 TCP 커넥션을 통한 동시 HTTP 처리
- 블록 단위 인코딩 전송
- SSL/TLS에 의한 암호화 통신 지원
HTTP/2
- SPDY 프로토콜에서 파생되어 HTTP/1.x 보다 지연 시간을 줄이고 응답 시간을 더 빠르게 함
- 멀티플렉싱, HPACK, 헤더 압축(허프만 코딩), 서버 푸시, 요청 우선순위 지원
HTTP/3
- TCP 위에서 동작하는 HTTP/2와는 달리 QUIC이라는 계층 위에서 UDP 기반으로 동작해 빠른 속도를 가짐
- QUIC의 순방향 오류 수정 메커니즘(FEC, Forword Error Correction)
HTTPS
- HTTP는 암호화되지 않은 텍스트로 통신하기 때문에 누군가 통신 내용을 가로채거나 사용자 정보를 탈취할 수 있음
- HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS를 넣어 암호화해 통신
References
https://docs.tosspayments.com/resources/glossary/http-protocol
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
http://www.ktword.co.kr/test/view/view.php?m_temp1=6378
https://mangkyu.tistory.com/98