Application-Layer Protocol Negotiation
RFC 7301에서 정의되는 TLS의 확장
기존에 같은 목적으로 쓰였던 NPN 을 대체하기 위해 작성
브라우저가 HTTPS 연결을 만들기 위해서는 먼저 TLS 연결이 만들어져야
ALPN을 지원하는 브라우저는 TLS 서버에 사용 가능한 알고리즘과 TLS 버전을 보내는 ClientHello 과정에서 지원하는 애플리케이션 프로토콜 목록을 추가
서버는 이 TLS ClientHello를 받고, h2가 프로토콜 목록에 있으며 서버가 HTTP/2를 지원하는 경우 HTTP/2로 통신
HTTP/2로 전환하는 과정이 TLS를 동반하기 때문에, 일반적인 HTTP/1.1에서 HTTP/2로 바꿀 수 없는 것
명세 상으로는 Upgrade 헤더를 통해 암호화되지 않은 HTTP/1.1을 HTTP/2로 업그레이드할 수 있도록 고안되어 있지만, 모질라 파이어폭스와 구글 크롬이 TLS에서만 HTTP/2롤 지원하도록 결정하면서 사실상 사용되지 않는다
일부 중간 시스템이 80 포트에서 HTTP/1.1을 상정하고 HTTP/2 통신을 손상시킬 우려가 있었기 때문
브라우저에 google.com을 치면 무슨 일이 일어날까? (아니, 진짜로) - 네트워크편
기술 면접을 가게 되면 종종 듣게 되는 면접 질문입니다. 일반적으론 DNS, HTTPS에 대한 기본적인 작동 방식을 알고 있고 그걸 설명할 수 있는지 묻는 간단한 질문이고, 실제로도 그렇게 대답하면 아마 중간 이상은 갑니다. 하지만 그 뒤에서, 정말 브라우저가 하는 일은 무엇일까요? DNS로 IP 받아오고, HTTP 요청을 쓰는 것만이 웹 브라우저의 여정의 전부는 아니겠지요.
https://velog.io/@rtyu1120/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-google.com%EC%9D%84-%EC%B9%98%EB%A9%B4-%EB%AC%B4%EC%8A%A8-%EC%9D%BC%EC%9D%B4-%EC%9D%BC%EC%96%B4%EB%82%A0%EA%B9%8C-%EC%95%84%EB%8B%88-%EC%A7%84%EC%A7%9C%EB%A1%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%ED%8E%B8


Seonglae Cho