[CS] TCP의 전송 순서 보장

김상현·2023년 12월 1일
0

CS

목록 보기
7/10
post-thumbnail

TCP란?

🔗 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 전송 순서 보장

TCP가 데이터를 송수신할 때 사용하는 세그먼트의 헤더는 다음과 같다.

헤더의 내용을 보면 Sequence number 필드가 존재하는 것을 확인할 수 있다. Sequence number 필드는 전송되는 데이터의 일련번호를 나타낸다. 이 일련번호는 데이터의 순서를 식별하는데 사용된다. 수신측에서는 이 일련번호를 통해 도착한 데이터의 순서를 파악하고 필요에 따라 재조립한다. 재조립 방식은 다음과 같다.

💡 Sequence number를 통핸 재조립 방식

  1. 순서 번호 할당: 송신측은 전송할 데이터마다 일련번호를 할당한다. 이 일련번호는 바이트 단위로 증가하며, 데이터의 순서를 나타낸다.
  2. 순서 번호를 통한 재조립: 수신측은 도착한 TCP 세그먼트의 순서번호를 확인하여 데이터를 정확한 순서로 재조립한다. 순서번호를 사용하여 수신측은 세그먼트가 전송되어야 하는 위치에 맞게 데이터를 재배열한다.
  3. 정확한 순서의 재전송: 만약 세그먼트가 손실되거나 순서가 바뀌면, 수신측에서는 이를 확인하고 송신측에게 해당 세그먼트의 재전송을 요청한다. 송신측은 순서번호를 통해 어떤 세그먼트가 재전송되어야 하는지 판단하고 재전송을 수행한다.

정리

즉, 위 내용을 정리하자면 IP단계에서 전송하는 패킷을 순서에 상관없이 TCP 계층에서 수신한 후에 일련번호(Sequence Number)를 확인하고, 이를 기바능로 데이터를 올바른 순서로 재조립한다. 만약 일부 패킷이 중간에 빠져있거나 도착 순서가 엉켰을 경우 TCP는 해당 패킷을 재전송하도록 요청하고, 정확한 순서로 재조립이 이루어진다. 이렇게 TCP는 일련번호를 통해 데이터를 안정적으로 전송하고, 수신 측에서는 패킷을 순서대로 재조립하여 원래의 메시지나 데이터를 복원한다.

profile
목적 있는 글쓰기

0개의 댓글