TT Lab

네트워크 기초 · 계층과 캡슐화

요청 하나가 선을 타기까지

층마다 자기 헤더를 바깥에 하나씩 덧붙입니다. 아래 층은 위에서 받은 것을 열어 보지 않고 통째로 짐으로 싸기 때문입니다. 그래서 받는 쪽은 붙인 순서의 거꾸로 벗길 수밖에 없습니다 — 바깥 봉투를 열어야 안쪽 봉투가 보입니다. 그리고 TCP 는 메시지를 모릅니다. 이어진 바이트를 MSS(1460바이트)씩 자를 뿐이라, 딱 1바이트가 넘쳐도 프레임이 하나 더 갑니다.

보내는 쪽과 받는 쪽, 층을 높이로

왼쪽이 보내는 쪽(위에서 아래로 붙인다), 오른쪽이 받는 쪽(아래에서 위로 벗긴다). 위가 응용층, 맨 아래가 링크층이고, 앞뒤 길이가 바이트 수, 깊이로 늘어선 것이 조각입니다 · 요청 본문 · HTTP 요청 머리 · TLS 레코드 머리·꼬리 · TCP 헤더 · IP 헤더 · 이더넷 헤더·FCS · 채움 바이트 · 흐린 층은 아직 그 단계에 이르지 않은 층

요청을 바꿔 보기

선에 실린 바이트

조각
선에 실린 바이트
아래 층 헤더의 몫
본문의 몫
보내는 쪽이 붙인 순서
받는 쪽이 벗긴 순서

막대: 본문 · HTTP 요청 머리 · 아래 층의 헤더(TLS·TCP·IP·이더넷·채움)

층마다 붙이는 것 — 위에서 아래로. 크기는 그 층이 아래로 넘기는 바이트의 합
층붙이는 것크기
선을 타는 프레임 — MTU 1500 을 넘는 IP 패킷은 없다
프레임TCP 페이로드IP 패킷이더넷 프레임채움

HTTP 가 실제로 적는 글자

␍␊ 는 줄바꿈 두 바이트입니다. 본문의 자릿수가 늘면 Content-Length 도 한 글자 길어집니다. 실제 연결은 TCP 타임스탬프 옵션 12바이트를 더 달아 MSS 가 1448 이 되곤 하고, 선 위에는 프레임마다 프리앰블과 틈 20바이트가 더 듭니다 — 여기서는 교과서의 값만 셉니다.