HTTP logo


용어 설명

client: HTTP/2의 끝부분에서 커넥션을 시작하는 부분입니다. Client는 HTTP 요청을 보내고 응답을 받습니다.

endpoint: connection의 Server와 client를 말한다.

connection: 두 endpoint간의 전송계층의 연결을 말한다.

connection error: HTTP/2 연결에서 발생하는 모든 에러.

frame: HTTP/2 connection의 가장작은 단위의 통신 메세지이다. peer: 특정 endpoint를 말할때, 이야기하고 있는 endpoint의 remote를 이야기한다.

receiver: frame을 받는 측에 해당하는 endpoint이다.

sender: frame을 보내는 endpoint를 이야기한다.

server: HTTP/2 connection을 받아드리는 endpoint다. HTTP 요청를 받고 그에대한 응답을 보낸다.

stream: HTTP/2에서 frame을 보내고 받는 통로.

stream error: HTTP/2 스트림의 에러.

프레임의 형태

모든 프레임들은 payload의 길이를 나타내는 9 바이트 해더로 시작한다.

 +-----------------------------------------------+
 |                 Length (24)                   |
 +---------------+---------------+---------------+
 |   Type (8)    |   Flags (8)   |
 +-+-------------+---------------+-------------------------------+
 |R|                 Stream Identifier (31)                      |
 +=+=============================================================+
 |                   Frame Payload (0...)                      ...
 +---------------------------------------------------------------+

Figure 1: Frame Layout

각각의 헤더를 설명하면:

Length: payload의 길이를 나타내고 unsigned 24bit integer이다. 수신자가 SETTINGS_MAX_FRAME_SIZE에서 2^14(16,384)보다 큰 값을 설정하지 않았다면 이보다 큰 값이 보내질 수 없다.

프래임 헤더의 9바이트는 이 값에 포함되지 않는다.

Type: 프레임의 타입을 나타내는 8비트 영역이다. 프레임의 타입은 형식과 의미를 결정한다. 구현할때 모르는 형식의 프레임은 무시해야한다.

Flags: 8비트의 프래임의 형식에 따라 정해진 boolean형의 플래그이다.

플래그들은 프래임의 타입에 따라 의미가 달라진다. 특정 프래임 타입에서 의미가 없는 플래그는 무시되어야 하고, 돌려 보낼떄 0으로 unset되어 보내져야한다.

R:

예약된 1비트 영역이다. 이 비트의 의미는 없고, 0으로 초기화된 상태에서 송수신되어야한다.

Stream Identifier: unsigned 31 bit 정수형인 stream의 구별자이다. 각각의 개별적인 stream과는 다르게 connection에 관련된 frame에게 이 값이 0이 할당된다.

프래임의 payload의 내용과 구조는 프래임 타입에 따라 정해진다.