Zettelkasten

TCP Byte Stream -- Transport Layer의 추상화다.

·수정 2026.06.06·수정 3

요약

  • TCP의 PDU(회선 위 전송 단위)는 segment지만, application이 받을 땐 segment로 쪼개진 게 아니라 이어진 byte stream처럼 보인다 — segment 분할을 감춘 추상화.
  • 그래서 stream 안엔 메시지 경계가 없고, 경계가 필요하면 application이 구분자/length prefix로 직접 만들어야 한다 (UDP는 datagram이라 경계 보존).

본문

  • TCP가 application에 제공하는 것은 순서 보장된 byte stream

PDU(Protocol Data Unit) = 각 계층의 데이터 단위

  • 전송(TCP)의 PDU는 segment. TCP는 데이터를 segment로 잘라 회선에 보낸다.
  • 그런데 application에는 그 잘린 흔적을 보여주지 않는다. segment 단위 전송을 감추고 연속된 바이트 흐름으로 보여주는 것이 추상화.
  • 즉 application이 보는 stream은 PDU(segment)가 아니라, segment들이 합쳐진 것처럼 보이는 추상 계층.
  • 시작(3-way handshake)과 끝(FIN)은 있으나, stream 내부에 메시지 경계는 없음
    • 송신 측이 100byte를 2번 보내도, 수신 측은 200byte를 1번에 읽을 수 있음
    • 메시지 경계가 필요하면 application이 직접 구분자나 length prefix를 구현해야 함
  • 반대로 UDP는 datagram 단위로 메시지 경계가 보존됨 (send 1회 = recv 1회)

참고