HTTP/2: 자세히: 프로토콜 협상 편
4190 단어 http2
이 보도에 관하여
현재 HTTP/2의 상세한 내용을 개인적으로 총결하였다.내용은 HTTP/2에 대한 협의 협상을 시작하는 것이다.
HTTPS(h2) 및 HTTP(h2c)
HTTP/2에는 HTTP/1이 포함됩니다.x와 마찬가지로 TLS를 사용하는 HTTPS와 사용하지 않는 HTTP가 있습니다.
HTTP/2에는 HTTP/1이 포함됩니다.x와 마찬가지로 TLS를 사용하는 HTTPS와 사용하지 않는 HTTP가 있습니다.
HTTPS (HTTP/2 over TLS)
HTTP (HTTP/2 over cleartext TCP)
RFC 7540 블랙리스트에 설명된 암호화 키트를 사용할 수 없음
HTTP/2 통신 시작 전 프로세스
고객은 먼저 통신자의 서버나 프록시 서버가 HTTP/2를 지원하는지 알아야 한다.상술한 방법은 h2와 h2c에서 다르기 때문에 다음과 같은 세 가지 유형으로 나눌 수 있다.
h2c: HTTP/2 지원 여부, 사전에 알 수 없는 경우
고객이 사전에 통신 상대방이 HTTP/2에 대응하는지 알 수 없을 때 클라이언트는 HTTP/1.1의 Upgrade 기구를 사용한다.Upgrade와 연결된 연결에서 HTTP/1.1에서 다른 프로토콜의 구조로 변경됩니다. 예를 들어 웹소켓을 사용할 수도 있습니다.
HTTP/2에 Upgrade를 실행하려면 클라이언트가 다음 헤더를 보내야 합니다.
h2c
HTTP2-Settings
※ Upgrade 의도는 다음 홉에만 적용되기 때문에 프록시 서버 등을 통해 머리를 전송하고 싶지 않습니다.GET / HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: <SETTINGS フレームのペイロードを base64url エンコードした文字列>
Upgrade의 HTTP/2에 대응하는 서버가 101(Switching Protocos)의 응답을 반환합니다.그런 다음 HTTP/2 프레임을 전송할 수 있습니다.HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c
HTTP/2에 대응하지 않는 서버는 Upgrade 제목이 없으면 HTTP/1.1로 응답을 되돌려줍니다.HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
Upgrade 인스턴스를 참조로 첨부합니다.h2c: 대응하는 HTTP/2의 상황을 미리 알다
클라이언트가 목적지 서버가 HTTP/2를 지원한다는 사실을 알게 되면 클라이언트는 사전 지식(Proor Knowledge)을 갖게 됩니다.
이런 상황에서 클라이언트가 서버에 TCP 연결을 구축할 때 연결 예인터페이스라고 불리는 마술 글자를 보내고 HTTP/2의 프레임 수발을 시작한다.
연결 인터페이스는
PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
의 문자열입니다.다음은 연결을 구축한 후 연결 인터페이스를 보내는 실례를 추가합니다.또한curl 명령에는
--http2-prior-knowledge
의 옵션이 있는데 이것은 이 모드를 가리킨다.h2
H2의 경우 TLS로 확장된 ALPN(Application Layer Protocol Negotiation)을 사용하여 HTTP를 사용할 버전을 결정합니다.
ALPN은 TLS의 확장이다. 이 TLS는 TLS 악수 과정에서 응용 단계에서 사용하는 협의를 협상하고 h2처의 협의 협상을 위해 추가된다(단 어떠한 협의에서도 사용할 수 있다).
구체적으로 다음과 같이 판본을 확정한다.
[고객이 Client Hello의 ALPN을 통해 h2와 http/1.1을 제시하는 곳]
[서버는 ServerHello의 ALPN 확장을 통해 선택한 h2를 되돌려주는 곳]
참고로 RFC 7301에서 ALPN이 TLS에 추가된 경과 및 기타 프로토콜에서도 사용할 수 있습니다.
Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension
This document specifies a TLS extension that permits the application layer to negotiate protocol selection within the TLS handshake. This work was requested by the HTTPbis WG to address the negotiation of HTTP/2 ([HTTP2]) over TLS; however, ALPN facilitates negotiation of arbitrary application-layer protocols.
Reference
이 문제에 관하여(HTTP/2: 자세히: 프로토콜 협상 편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kitauji/items/3bf03533895251c93af2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)