ALPN
[HTTPS](https://texonom.com/https-055d5ea9284841cb86885c0848ddeb4d) [TLS](https://texonom.com/tls-2ac2c3475b704170926ee2d5f9a7d285) 


RFC 7301에서 정의되는 TLS의 확장
기존에 같은 목적으로 쓰였던 [NPN](https://texonom.com/npn-f4227596e87f4bd4ba482d0908c8687f) 을 대체하기 위해 작성
브라우저가 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을 치면 무슨 일이 일어날까? (아니, 진짜로) - 네트워크편](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)
