위 용어들을 사용하여 다시 HTTP/2의 통신 방식을 요약하자면, HTTP/2는 HTTP 메시지를 바이너리로 인코딩된 프레임으로 쪼개어 교환하는 방식이며, 각 프레임은 단일 TCP에 복수로 존재하는 스트림 중 어느 특정 스트림에 존재하는 메시지에 매핑됩니다.
여러개의 메시지를 동시에 스트림으로 주고 받는 것
HPACK이란 기술을 사용하여 헤더 압축
클라이언트가 요청하지 않은 리소스를 서버가 함께 보내야 한다고 판단되어 자동으로 함께 보내는 기능
스트림 종속성과 가중치의 조합을 통해 우선 순위 지정 트리를 구성하고 전달하여 스트림 처리 우선순위를 지정
+-------+-----------------------------+---------------+
| Index | Header Name | Header Value |
+-------+-----------------------------+---------------+
| 1 | :authority | |
| 2 | :method | GET |
| 3 | :method | POST |
| 4 | :path | / |
| 5 | :path | /index.html |
| 6 | :scheme | http |
| 7 | :scheme | https |
| 8 | :status | 200 |
| 9 | :status | 204 |
| 10 | :status | 206 |
| 11 | :status | 304 |
| 12 | :status | 400 |
| 13 | :status | 404 |
| 14 | :status | 500 |
| 15 | accept-charset | |
| 16 | accept-encoding | gzip, deflate |
| 17 | accept-language | |
| 18 | accept-ranges | |
| 19 | accept | |
| 20 | access-control-allow-origin | |
| 21 | age | |
| 22 | allow | |
| 23 | authorization | |
| 24 | cache-control | |
| 25 | content-disposition | |
| 26 | content-encoding | |
| 27 | content-language | |
| 28 | content-length | |
| 29 | content-location | |
| 30 | content-range | |
| 31 | content-type | |
| 32 | cookie | |
| 33 | date | |
| 34 | etag | |
| 35 | expect | |
| 36 | expires | |
| 37 | from | |
| 38 | host | |
| 39 | if-match | |
| 40 | if-modified-since | |
| 41 | if-none-match | |
| 42 | if-range | |
| 43 | if-unmodified-since | |
| 44 | last-modified | |
| 45 | link | |
| 46 | location | |
| 47 | max-forwards | |
| 48 | proxy-authenticate | |
| 49 | proxy-authorization | |
| 50 | range | |
| 51 | referer | |
| 52 | refresh | |
| 53 | retry-after | |
| 54 | server | |
| 55 | set-cookie | |
| 56 | strict-transport-security | |
| 57 | transfer-encoding | |
| 58 | user-agent | |
| 59 | vary | |
| 60 | via | |
| 61 | www-authenticate | |
+-------+-----------------------------+---------------+
Table 1: Static Table Entries
:
으로 시작하며, HTTP/2에서 사용되며 HTTP/1.x에선 사용되지 않는 헤더 (그래서 pseudo라는 이름과 colon이 붙는 것):method
: 요청 메서드:path
: 쿼리 스트링을 포함한 요청 path:authority
: HTTP/1.x의 Host
헤더와 비슷:scheme
: 요청 스키마. http
혹은 https
값을 가짐status
: 응답의 status code
참고문헌은 시리즈 첫 번째 글에 있습니다.