'면접을 위한 CS 전공지식 노트' 책을 보며 공부한 내용입니다.
- HTTP/1.0
- 기본적으로 한 연결 당 하나의 요청을 처리한다.
- 요청 때마다 3-way handshake를 계속 해야함 => RTT 증가
- RTT 증가 해결 방법
- 이미지 스플리팅: 많은 이미지가 합쳐져 있는 하나의 이미지를 다운 받고, 이를 기반으로 background-image의 position을 이용
- 코드 압축: 코드를 압축해서 개행 문자와 빈칸을 제거하여 코드의 크기를 최소화
- 이미지 Base64 인코딩: 이미지 파일을 64진법으로 이루어진 문자열로 인코딩
- HTTP/1.1
- HTTP/1.0에서 발전.
- 매번 TCP 연결이 아니라 한번 TCP를 초기화한 이후에 keep-alive 옵션으로 여러개 파일을 송수신 가능 => 3-way handshake를 매번 할 필요가 없음
- 하지만, HOL Blocking (Head of Line Blocking)이 발생함 => 대기시간 증가
- HTTP/1.1의 헤더에는 쿠키 등 많은 메타 데이터가 들어있고 압축이 불가능해서 무거움.
- HTTP/2
- HTTP/1.x보다 지연 시간을 줄이고, 응답 시간을 더 빠르게 가능
- 멀티 플렉싱, 헤더 압축, 서버 푸시, 요청의 우선 순위 처리를 지원함.
- 멀티 플렉싱: 여러개의 스트림을 사용해서 송수신을 함. 특정 스트림의 패킷이 손실되었다고 하더라도, 해당 스트림에만 영향을 미침. 나머지는 잘 동작함.
- 헤더 압축: HTTP/1.x에는 헤더가 크다는 문제점을 헤더 압축으로 해결함.
- 서버 푸시: HTTP/1.1에는 클라이언트가 서버에 요청을 해야 서버가 요청한 리소스를 전달해주었는데, HTTP/2에서는 클라이언트 요청 없이도 서버가 리소스를 푸시 가능함.
- HTTPS
- HTTP/2/는 HTTPS 위에서 동작함.
- HTTPS는 Application 계층과 Transport 계층 사이에 신뢰 계층인 SSL/TLS를 넣어 신뢰할 수 있는 HTTP 요청을 말한다. => 통신을 암호화함.
- SSL/TLS(Transport Layer Security): Transport 계층에서 보안을 제공하는 프로토콜이다. 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록 한다.
- 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 매커니즘, 키 교환 알고리즘, 해싱 알고리즘이 사용됨.
- 보안 세션: 보안이 시작되고 끝나는 동안 유지됨. handshake로 보안 세션이 생성됨.
- 인증 매커니즘: CA에서 발급한 인증서를 기반으로 이루어진다. CA에서 발급한 인증서는 안전한 연결을 시작하는데 있어 필요한 공개키를 클라이언트에 제공하고, 사용자가 접속한 서버가 안전한 서버임을 보장한다.
- tls handshake
- 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 매커니즘, 키 교환 알고리즘, 해싱 알고리즘이 사용됨.
- HTTPS 구축 방법
- 직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
- 서버 앞단에 HTTPS를 제공하는 로드밸런서 두기
- 서버 앞단에 HTTPS를 제공하는 CDN 두기
- HTTP/3
- TCP 위에서 돌아가는 HTTP/2와는 달리 HTTP/3는 QUIC 계층 위에서 돌아감.
- TCP가 아닌 UDP 기반으로 돌아감.
- 또한 멀티 플렉싱을 가지고 있으며, 초기 연결 설정 시작시 지연 시간이 감소됨.
- 초기 연결 설정 시작시 지연 시간이 감소
- QUIC은 TCP를 사용하지 않아서 3-way handshake가 없다. 1-RTT만 소요됨.
- 클라이언트가 서버에 어떤 신호를 주고, 서버가 그것에 응답하기만 하면 바로 통신 시작이 가능함.
- 초기 연결 설정 시작시 지연 시간이 감소
728x90
'CS' 카테고리의 다른 글
3.2 메모리 (4) | 2024.09.15 |
---|---|
3.1 운영체제와 컴퓨터 (0) | 2024.09.12 |
2.4 IP 주소 (0) | 2024.09.06 |
2.3 네트워크 기기 (0) | 2024.09.06 |
2.2 TCP/IP 4계층 모델 (2) | 2024.09.04 |