cs 전공지식 #25 네트워크 -HTTPS, HTTP/3

2022. 12. 6. 18:29cs일지

2022/12/06

  • 학습내용

1. HTTPS

HTTP/2는 HTTPS 위에서 동작한다.

HTTPS는 애플리케이션 계층(HTTP)과 전송 계층(TCP) 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 HTTP 요청을 말한다.

HTTPS를 통해 통신을 암호화한다.

기존의 HTTP는 요청, 응답 내용이 그대로 전달되어 노출 위험이 있었다.HTTPS는 요청, 응답 내용을 암호화해서 내용을 알아내기 어렵다.

 

https://leedonggu.tistory.com/38

 

프로젝트 인프라 #02 HTTPS

2022/11/18 학습내용 HTTP vs HTTPS HTTP (HyperText Transfer Protocol) 서로 다른 시스템들 사이에서 통신을 주고받게 하는 기본적인 프로토콜 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용

leedonggu.tistory.com

 

SSL/TLS

안전한 보안 채널을 형성해주는 역할을 수행하는 보안용 프로토콜

SSL: 보안 소켓 계층(SECURE SOCKETS LAYER)

SSL은 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술이다.

이 기술은 해커가 개인 데이터나 금융 데이터 등의 전송되는 정보를 보거나 훔치는 것을 방지한다.

 

TLS: 전송 계층 보안(Transport Layer Security)

TLS은 SSL의 향상된, 더욱 안전한 버전이다.

SSL이 더욱 일반적인 용어이기 때문에 DigiCert는 보안 인증서를 여전히 SSL로 언급하지만 DigiCert에서 SSL을 구입하면 가장 신뢰할 수 있는 최신 TLS 인증서를 얻을 수 있다.

 

보안 세션

보안 세션은 보안이 시작되고 끝나는 동안 유지되는 세션을 말한다.

SSL/TLS는 핸드쉐이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유한다.

이 과정을 통해 웹사이트/서버와 브라우저 간에 암호화된 연결을 수립한다.웹사이트 방문자에게는 이 과정이 보이지 않으며, 순간적으로 이루어진다.

 

2.HTTP/3

HTTP/3은 2022년 6월 표준화된 차세대 통신 프로토콜이다.

빠른 콘텐츠 전달이 주업무인 CDN(콘텐츠 전송 네트워크)들은 HTTP/3을 지원하고 있다.

ex) 구글에서 제공하는 대부분의 콘텐츠들은 HTTP/3을 적용하고 있다.

 

기존 HTTP가 TCP 기반이었다면 HTTP/3은 UDP 기반의 QUIC(Quick UDP Internet Connection)를 적용했다.

 

HTTP/3의 특징

가장 큰 특징은 TCP/IP 기반의 애플리케이션 레이어 프로토콜인 HTTP를 QUIC 위에 얹었다는 것이다.

이를 "HTTP over QUIC"이라고 표현하고 줄여서 HQ라고 한다.

HTTP 자체가 TCP의 일종이었는데 이것이 UDP 기반의 QUIC으로 바뀐 것이 가장 큰 변화이다.

HTTP/2에 있는 프레임, 스트림, 메시지 구조와 기술들은 그대로 HTTP/3로 승계되었고 명칭만 HQframe, QPACK 등으로 변경되었다.

 

 

 

 

HTTP/3 장점

HTTP/3의 장점은 기존의 TCP 대신 QUIC를 채택하면서 얻게 된 장점을 설명해야 한다.

연결 핸드 셰이크 변화

TCP는 연결을 설정하기 위해 3 방향 핸드 셰이크가 필요하며, 그 위에 TLS 연결도 협상해야한다.

QUIC는 UDP 위에 구축되므로 TLS를 포함하여 연결을 설정하는 데 1 개의 패킷이 필요하다.

기존 TCP와 UDP 중 UDP가 더 빠름에도 불구하고 쓰지 않았던 이유는 신뢰할 수 없었기 떄문이다.

 

QUIC는 암호화를 프로토콜의 일부기능에 포함시켜 신뢰에 대한 부분을 충족시켰다.

스트림 연결과 암호화 스펙등을 포함한 모든 핸드쉐이크가 단일 요청/응답으로 끝난다.

패킷이 개별적으로 암호화되며, 다른 데이터 부분의 패킷을 기다릴 필요가 없다.

통신이 멀티플렉싱 되며 이를 통해 HOLB를 극복할 수 있다.

QUIC는 OS 커널과 독립적으로 응용 프로그램 공간내에서 구현할 수 있으며, 데이터의 이동에 따른 컨텍스트 전환에 의한 오버해드가 없어진다.

 

 

초기 연결 설정 시 지연 시간 감소

 

 

QUIC는 기존 TCP의 3 핸드쉐이크(1(연결),2(연결 요청 수락, 포트 요청),3(응답))로 RTT를 감소했다.

 

클라이언트가 서버에 신호를 주고 서버에서 응답만 받으면 바로 통신이 가능하다.

첫번째 핸드쉐이크를 거칠 때 연결 설정에 필요한 정보와 함께 데이터도 함께 보내기 떄문에 가능하다.

 

기존 TCP+TLS는 데이터 발송 전 신뢰성 있는 연결, 암호화에 필요한 모든 정보를 교환하고 유효성 검사까지 하고 데이터 교환을 했다.

 

패킷 손실 감지에 걸리는 시간 단축

기존 방식 :패킷 전송 -> 타임 아웃 -> 패킷 재전송 -> ACK 받음의 통신 

 

TCP는 송신 측이 패킷을 보낸 후 타이머를 사용해 일정 시간 동안 응답이 오지 않으면 패킷이 손상되었다고 판단해 재전송한다. 

이때 문제는 TCP가 타임아웃을 언제 낼 것인가를 동적으로 계산해야 한다.

패킷 재전송시 ACK을 받았을 때 첫 번째로 보낸 패킷의 ACK인지 두 번째로 보낸 패킷의 ACK인지 확인해야 한다.

이를 재전송 모호성이라고 한다.

QUIC는 헤더에 별도의 패킷 번호 공간을 부여해 패킷 손실 감지에 걸리는 시간을 단축한다.