HTTP : 웹 상에서 클라이언트와 서버 간 통신을 위한 프로토콜
TCP(Transmission Control Protocol) => 3 Way Handshake. 신뢰성은 높지만 전송 속도가 느리다.(지연 불가피)
UDP(User Datagram Protocol) => 신뢰성은 낮지만 전송 속도가 빠르다.
HTTP/0.9 ~ /2 : TCP 사용
HTTP/1.0까지 => 커넥션 당 요청 1 & 응답 1. 매번 새로운 연결로 성능 저하, 서버 부하 비용 증가
HTTP/1.1
- Persistent Connection => 지정한 timeout 동안 커넥션을 닫지 않는다.
- Pipelining => 하나의 커넥션에서 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내 그 순서에 맞춰 응답을 받는 방식. 지연 시간을 줄인다.
문제점
- Head of Line Blocking => 순차적인 방식이기 때문에 이전 요청이 끝나기 전까지는 다음 요청에 대한 응답을 받을 수 없음
- Header 구조의 중복
HTTP/2
- 기존 HTTP/1.X 버전의 성능 향상에 초점을 맞춘 프로토콜
- 표준의 대체가 아닌 확장
- HTTP 메시지 전송 방식의 변화 => 바이너리 프레이밍 계층 사용. 파싱과 전송 속도 ↑, 오류 발생 가능성 ↓
- Request and Response Multiplexing => Head of Line Blocking 해결
- Stream Prioritization => 리소스 간 우선 순위를 설정 가능
- Server Push
- Header Compression => 헤더의 크기를 줄여 페이지 로드 시간 감소
QUIC
- UDP 기반의 전송 계층 프로토콜 => 데이터 전송에 집중한 설계, 별도의 기능이 없기 때문에 원하는 기능을 구현할 여지가 많고 TCP의 지연을 줄이면서 TCP만큼 신뢰성 확보 가능
- 현재 구글 관련 제품 대부분의 기본 프로토콜
- 첫 연결 설정에서 필요한 정보와 함께 데이터를 전송, 연결 성공 시 설정을 캐싱하여 다음 연결 때 바로 성립 가능(Connection UUID라는 고유한 식별자로 서버와 연결하여 커넥션 재수립이 필요하지 않음) => 전송 속도 향상
- TLS 기본 적용
- IP Spoofing / Replay Attack 방지 => 보안성 향상
- 독립 스트림 => 향상된 멀티플렉싱 기능
'공부 기록 > 영상 후기' 카테고리의 다른 글
[10분 테코톡] 제이의 Spring AOP (0) | 2023.04.09 |
---|---|
[10분 테코톡] 하루의 실행 컨텍스트 (0) | 2023.04.09 |
[10분 테코톡] 코일의 Web Socket (0) | 2023.04.09 |
[10분 테코톡] 디디의 Redis (0) | 2023.04.09 |
[우아콘2020] 수십억건에서 QUERYDSL 사용하기 (0) | 2023.04.05 |