HTTP
HTTP 역사
HTTP/1.0
- HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되어있다.
- 따라서 하나의 요청을 처리하기 위해 매번 3-way handshaking 과정이 필요하다.
- 이는 RTT (패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오는 왕복 시간)를 증가시킨다.
- 이를 해결하기 위해 다음과 같은 기법을 사용한다.
- 이미지 스플리팅
- 코드 압축
- 이미지 Base64 인코딩
HTTP/1.1
- 매번 TCP 연결을 하는게 아니라 최초 한 번만 연결하고 여러 개의 파일을 계속 보낼 수 있다.
- keep-alive 옵션을 이용한다.
- 하지만 파일은 순차적으로 전송 되므로, 하나의 파일에서 지연이 발생하면 다른 파일을 전송하는데 대기 시간이 길어진다.
HTTP/2
- HTTP/2는 파일을 순차적으로 전송하는 방식이 아닌 병렬 처리를 지원한다.
- 1.1은 헤더가 큰 문제가 있었는데, 이를 헤더 압축을 하면서 해결한다.
- 또한 1.1은 클라이언트가 요청을 보내야 서버에서 파일을 전송하는데, 2에서는 클라이언트가 요청을 하지 않아도 서버에서 css같은 파일을 보낸다.
HTTPS
- HTTPS는 응용계층과 전송계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣어 신뢰할 수 있는 HTTP 요청을 말한다.
- SSL/TLS는 보안을 제공하는 프로토콜이다.
- 공격자가 서버인 척하며 사용자 정보를 가로채는 것을 방지
HTTP/3