요청 하나가 선을 타기까지
층마다 자기 헤더를 바깥에 하나씩 덧붙입니다. 아래 층은 위에서 받은 것을 열어 보지 않고 통째로 짐으로 싸기 때문입니다. 그래서 받는 쪽은 붙인 순서의 거꾸로 벗길 수밖에 없습니다 — 바깥 봉투를 열어야 안쪽 봉투가 보입니다. 그리고 TCP 는 메시지를 모릅니다. 이어진 바이트를 MSS(1460바이트)씩 자를 뿐이라, 딱 1바이트가 넘쳐도 프레임이 하나 더 갑니다.
보내는 쪽과 받는 쪽, 층을 높이로
왼쪽이 보내는 쪽(위에서 아래로 붙인다), 오른쪽이 받는 쪽(아래에서 위로 벗긴다). 위가 응용층, 맨 아래가 링크층이고, 앞뒤 길이가 바이트 수, 깊이로 늘어선 것이 조각입니다 · 요청 본문 · HTTP 요청 머리 · TLS 레코드 머리·꼬리 · TCP 헤더 · IP 헤더 · 이더넷 헤더·FCS · 채움 바이트 · 흐린 층은 아직 그 단계에 이르지 않은 층
요청을 바꿔 보기
선에 실린 바이트
- 조각
- 선에 실린 바이트
- 아래 층 헤더의 몫
- 본문의 몫
- 보내는 쪽이 붙인 순서
- 받는 쪽이 벗긴 순서
막대: 본문 · HTTP 요청 머리 · 아래 층의 헤더(TLS·TCP·IP·이더넷·채움)
| 층 | 붙이는 것 | 크기 |
|---|
| 프레임 | TCP 페이로드 | IP 패킷 | 이더넷 프레임 | 채움 |
|---|
HTTP 가 실제로 적는 글자
␍␊ 는 줄바꿈 두 바이트입니다. 본문의 자릿수가 늘면 Content-Length 도 한 글자
길어집니다. 실제 연결은 TCP 타임스탬프 옵션 12바이트를 더 달아 MSS 가 1448 이 되곤 하고,
선 위에는 프레임마다 프리앰블과 틈 20바이트가 더 듭니다 — 여기서는 교과서의 값만 셉니다.