🔗 MDN Web Docs에서 TCP의 정의를 살펴보면 다음과 같다.
TCP (Transmission Control Protocol) is an important network protocol
that lets two hosts connect and exchange data streams.
TCP guarantees the delivery of data and packets in the same order as they were sent.
Vint Cerf and Bob Kahn, who were DARPA scientists at the time, designed TCP in the 1970s.
여기서 TCP는 전송된 순서대로 데이터와 패킷의 전달을 보장한다 는 것을 알 수 있고, 전송된 순서대로 데이터와 패킷의 전달을 보장한다는 것이 어떤 의미인지 정확하게 알아보자.
TCP가 데이터를 송수신할 때 사용하는 세그먼트의 헤더는 다음과 같다.
헤더의 내용을 보면 Sequence number
필드가 존재하는 것을 확인할 수 있다. Sequence number
필드는 전송되는 데이터의 일련번호를 나타낸다. 이 일련번호는 데이터의 순서를 식별하는데 사용된다. 수신측에서는 이 일련번호를 통해 도착한 데이터의 순서를 파악하고 필요에 따라 재조립한다. 재조립 방식은 다음과 같다.
즉, 위 내용을 정리하자면 IP단계에서 전송하는 패킷을 순서에 상관없이 TCP 계층에서 수신한 후에 일련번호(Sequence Number
)를 확인하고, 이를 기바능로 데이터를 올바른 순서로 재조립한다. 만약 일부 패킷이 중간에 빠져있거나 도착 순서가 엉켰을 경우 TCP는 해당 패킷을 재전송하도록 요청하고, 정확한 순서로 재조립이 이루어진다. 이렇게 TCP는 일련번호를 통해 데이터를 안정적으로 전송하고, 수신 측에서는 패킷을 순서대로 재조립하여 원래의 메시지나 데이터를 복원한다.