2.5.2 HTTP/1.1
매번 TCP 연결이 필요한 HTTP 1.0 세대와 달리, 한 번 초기화한 후 keep-alive 라는 옵션으로 여러 개의 파일을 송수신할 수 있다. 기존에도 존재하긴 했지만, 본 세대부터 표준화되어 사용되기 시작했다. 문서 내의 리소스 용량이 커지면 선입선출의 개념으로 딜레이가 발생하기도 하는데, 이를 HOL Blocking이라고 한다.
HOL Blocking
네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하
또한 HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거운 성능을 보인다.
2.5.3 HTTP/2
멀티플렉싱
여러 개의 스트림을 사용하여 송수신. 패킷이 손실되었더라도 해당 스트림에만 영향을 미친다. 데이터를 스트림으로 쪼개고, 스트림 내부 또한 데이터들로 쪼개어 서로 송수신한 이후 다시 조립하여 통신이 이루어진다. 이를 통해 단일 연결로 병렬 요청을 받을 수 있어 HOL Blocking을 방지할 수 있다.
허프만 코딩
문자열을 문자 단위로 쪼개 빈도수를 세어, 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 전체 데이터 표현에 필요한 비트양을 줄이는 원리
서버 푸시
기존 HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운로드받을 수 있었다면, HTTP/2에서는 클라이언트 요청이 없어도 서버가 바로 리소스를 푸시할 수 있다.
2.5.4 HTTPS
HTTP/2의 기반이며, 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말한다. 이를 통해 통신을 암호화할 수 있다.
SSL/TLS
전송 계층에서 보안을 제공하는 프로토콜이다. 이를 통해 제3자가 메시지를 도청하거나 변조하는 것을 방지한다. 보안 세션을 기반으로 암호화하며, 보안 세션이 만들어질 떄 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
보안 세션
보안이 시작되고 끝날 때까지의 일정한 기간을 말한다. 핸드 셰이크 매커니즘을 통해 세션을 생성한다. 키 공유 - 인증 - 인증 확인 등의 작업이 발생하는 단 한 번의 1-RTT가 생긴 후 데이터를 송수신한다.
사이퍼 슈트
프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 암호화 규약을 말한다.
TLS_AES_128_GCM_SHA256 같은 형태로 표현된다. TLS는 프로토콜, AES_128_GCM은 AEAD 사이퍼 모드(데이터 암호화 알고리즘), SHA256은 해싱 알고리즘을 뜻한다.
디피-헬만 키 교환 암호화 알고리즘
암호키를 교환하는 하나의 방법이다. 대수곡선 기반의 ECDHE(Elliptic Curve Diffie-Hellman Ephermeral) 또는 모듈식 기반의 DHE(Diffie-Hellman Ephemeral)의 근간이 된다.
형태는 지수방정식과 유사하게 이루어져 있고, 치역 y는 구하기 쉽지만 y를 알 떄 정의역 x를 구하기는 어렵다는 원리에 기반한 알고리즘이다.
서버 모두 개인키와 공개키를 생성하고, 이를 결합하여 PSK(사전 합의된 비밀키)가 생성하여 암호화된다.
해싱 알고리즘
해시란 다양한 길이를 가진 데이터를 일정 길이의 데이터로 매핑한 값이다. 임의의 데이터를 해시로 바꾸는 과정을 해싱이라고 하며, 해싱 함수가 역할을 담당한다.
SSL/TLS는 해싱 알고리즘으로 SHA-256, SHA-384 알고리즘을 쓴다. 전처리 후 이를 기반으로 해시를 반환한다.
2.5.5 HTTP/3
TCP 기반의 이전 세대들과 달리 UDP 기반으로 QUIC 계층 위에서 돌아간다. QUIC은 첫 연결 설정에 1-RTT만 소요된다. 신호를 한 번 주고, 서버가 응답한다면 바로 본 통신을 시작할 수 있다. 또한 순방향 오류 수정 매커니즘이 적용되어 있어 수신 측에서 손실된 패킷 에러를 검출하고 수정하는 방식으로 열악한 네트워크 환경에서도 안정성을 자랑한다.