TCP

TCP란?

TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 전송 계층(Transport Layer) 프로토콜입니다.
TCP는 인터넷에서 데이터가 정확하게 전달되도록 도와주는 핵심 프로토콜 중 하나입니다.

TCP의 주요 특징

  1. 연결 지향적(Connection-Oriented)
    • 데이터를 전송하기 전, 통신을 위한 3-way Handshake 과정을 통해 연결을 설정합니다.
    • 연결이 설정되면 양쪽이 데이터를 주고받을 수 있습니다.
  2. 신뢰성 있는 전송
    • 데이터 순서 보장: 데이터 패킷이 올바른 순서대로 도착하도록 관리합니다.
    • 데이터 손실 복구: 손실된 패킷이 있으면 재전송합니다.
    • 중복 방지: 중복된 패킷은 버립니다.
  3. 흐름 제어(Flow Control)
    • 수신자가 처리할 수 있는 만큼만 데이터를 전송하도록 조절합니다.
  4. 혼잡 제어(Congestion Control)
    • 네트워크 혼잡 상태를 감지하고 전송 속도를 조절하여 네트워크 과부하를 방지합니다.

TCP의 주요 기능과 동작 원리

연결 설정: 3-Way Handshake

TCP는 통신을 시작하기 위해 3단계 연결 설정 절차를 사용합니다.

  1. SYN: 클라이언트 → 서버에 연결 요청 (SYN 전송).
  2. SYN-ACK: 서버 → 클라이언트에게 요청 수락 응답 (SYN과 ACK 전송).
  3. ACK: 클라이언트 → 서버에 응답 확인 (ACK 전송).

결과: 양쪽이 서로 데이터를 주고받을 준비가 완료됩니다.

데이터 전송

  • 데이터 패킷 전송:
    TCP는 데이터를 세그먼트(segment) 단위로 나누어 전송합니다.
  • 순서 번호(Sequence Number):
    각 세그먼트에는 순서 번호가 부여되어 데이터의 순서를 보장합니다.
  • 확인 응답(ACK):
    수신자는 데이터 수신 후, 다음에 기대하는 순서 번호를 ACK로 응답합니다.
  • 타이머와 재전송:
    송신자는 특정 시간 안에 ACK를 받지 못하면, 해당 세그먼트를 재전송합니다.

연결 종료: 4-Way Handshake

연결 종료를 위해 TCP는 4단계 종료 절차를 사용합니다.

  1. FIN: 클라이언트 → 서버에 연결 종료 요청 (FIN 전송).
  2. ACK: 서버 → 클라이언트에게 종료 요청 수락 (ACK 전송).
  3. FIN: 서버 → 클라이언트에게 종료 요청 (FIN 전송).
  4. ACK: 클라이언트 → 서버에게 종료 수락 (ACK 전송).

결과: 양쪽 모두 데이터 전송이 종료되고 연결이 닫힙니다.

TCP의 주요 기능 심화

흐름 제어 (Flow Control)

  • 수신 윈도우(Window Size):
    수신자가 처리 가능한 버퍼의 크기를 수신 윈도우로 알려줍니다.
  • 슬라이딩 윈도우(Sliding Window):
    송신자는 수신 윈도우 크기만큼 데이터를 전송합니다.

혼잡 제어 (Congestion Control)

네트워크 혼잡을 방지하기 위해 TCP는 다음과 같은 알고리즘을 사용합니다:

  1. Slow Start:
    • 전송 속도를 낮게 시작하고 점진적으로 증가시킵니다.
  2. Congestion Avoidance:
    • 혼잡이 감지되면, 전송 속도를 천천히 증가시킵니다.
  3. Fast Retransmit & Fast Recovery:
    • 패킷 손실이 감지되면, 손실된 패킷을 재전송하고 혼잡 상태를 빠르게 회복합니다.

TCP와 UDP의 비교

| 구분 | TCP | UDP | |———————|————————————|———————————-| | 연결 방식 | 연결 지향(Connection-Oriented) | 비연결(Connectionless) | | 신뢰성 | 신뢰성 보장 | 신뢰성 없음 | | 데이터 순서 보장 | 보장 | 보장하지 않음 | | 속도 | 상대적으로 느림 | 빠름 | | 사용 사례 | 파일 전송(FTP), 웹 통신(HTTP) 등 | 실시간 스트리밍, VoIP, DNS 등 |

6. TCP의 장단점

장점

  • 신뢰성 있는 데이터 전송.
  • 데이터의 순서 보장 및 재전송 기능 제공.
  • 흐름 제어 및 혼잡 제어를 통한 네트워크 안정성 확보.

단점

  • 연결 설정 및 종료로 인한 오버헤드 발생.
  • 데이터 전송 속도가 상대적으로 느림.
  • 실시간 전송에는 부적합.

TCP의 활용

TCP는 데이터의 신뢰성과 순서를 보장하는 중요한 프로토콜입니다. 이를 통해 인터넷과 같은 불안정한 네트워크에서도 정확하고 안정적으로 데이터를 전송할 수 있습니다. 다만 오버헤드가 크기 때문에 실시간성이 필요한 경우에는 UDP와 같은 다른 프로토콜이 사용됩니다.

참고 자료

  1. RFC 793 - TCP 프로토콜 명세
  2. 컴퓨터 네트워킹: 톱다운 접근법, James Kurose & Keith Ross.
  3. TCP/IP Illustrated, W. Richard Stevens.