네트워크 | TCP 전송

Faithful Dev·2025년 1월 29일

컴퓨터 공학

목록 보기
67/81

TCP 전송 과정

TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 프로토콜로, 데이터를 안전하게 송·수신하는 여러 메커니즘을 포함하고 있다.
TCP는 연결이 성립된 후 다음과 같은 방식으로 데이터를 전송한다.


TCP 전송 과정 개요

TCP 데이터 전송은 크게 다섯 단계로 나눌 수 있따.
1. 연결 설정 (3-Way Handshake)
2. 데이터 분할 및 캡슐화
3. 전송 및 흐름 제어
4. 데이터 수신 및 확인 응답 (ACK)
5. 연결 종료 (4-Way Handshake)


TCP 데이터 전송 과정 상세 설명

연결 설정 (3-Way Handshake)

TCP는 데이터 전송 전에 연결을 설정해야 한다.
이 과정은 3-Way Handshake라고 하며, 클라이언트와 서버가 서로 SYN- SYN-ACK, ACK 패킷을 교환하면서 연결을 확립한다.

예시
  • 클라이언트 → 서버: SYN=1, SEQ=1000
  • 서버 → 클라이언트: SYN=1, ACK=1001, SEQ=2000
  • 클라이언트 → 서버: ACK=2001, SEQ=1001

이제 데이터를 주고받을 준비가 완료된다.


데이터 분할 및 캡슐화

애플리케이션 계층에서 생성된 데이터를 전송하기 전에 TCP는 이를 세그먼트(Segment) 단위로 나누고, 헤더를 추가하여 캡슐화한다.

TCP 헤더의 주요 필드
필드설명
출발지/목적지 포트 번호어떤 애플리케이션과 통신하는지 지정
Sequence Number (SEQ)데이터의 순서를 나타냄
Acknowledgement Number (ACK)받은 데이터에 대한 확인 응답
플래그 (SYN, ACK, FIN 등)연결 설정, 종료 등을 위한 제어 비트
윈도우 크기 (Window Size)흐름 제어를 위한 데이터 수신 가능 크기

이렇게 만들어진 TCP 세그먼트는 IP 패킷에 포함되어 전송된다.


전송 및 흐름 제어 (Flow Control)

TCP는 네트워크 상태에 따라 송신 속도를 조절하여 과부하를 방지한다. 이를 흐름 제어라고 한다.

흐름 제어 방식:
  • 슬라이딩 윈도우 (Sliding Window):
    • 수신자가 한 번에 받을 수 있는 데이터 크기(윈도우 크기)를 설정하여 송신자가 이를 초과하지 않도록 함.
    • 윈도우 크기는 TCP 헤더의 Window Size 필드에 저장됨.
  • 서버가 "윈도우 크기 = 4096 바이트"라고 알리면, 클라이언트는 4096 바이트까지만 전송 가능.
  • 수신 확인(ACK)을 받으면 다음 데이터를 보냄.

데이터 수신 및 확인 응답 (ACK)

TCP는 데이터가 정상적으로 전달되었는지 확인하기 위해 ACK(Acknowledgement)를 사용한다.

ACK 방식
  • 데이터가 수신되면, 수신자는 ACK 패킷을 송신하여 확인 응답.
  • 예:
    • 송신: SEQ=1000, 데이터=500바이트
    • 수신: ACK=1500 (1000 + 500, 다음에 받을 데이터 위치)

만약 패킷이 손실되거나 순서가 틀리면 재전송이 이루어진다.


연결 종료 (4-Way Handshake)

데이터 전송이 끝나면, TCP 연결을 해제하기 위해 4-Way Handshake가 수행된다.

과정
  1. 클라이언트 → 서버: FIN (연결 종료 요청)
  2. 서버 → 클라이언트: ACK (요청 확인)
  3. 서버 → 클라이언트: FIN (서버도 연결 종료 요청)
  4. 클라이언트 → 서버: ACK (요청 확인, 연결 해제)

이후 일정 시간이 지나면 연결이 완전히 종료된다.


TCP의 신뢰성 보장 기능

TCP는 신뢰성을 보장하기 위해 다양한 기술을 사용한다.

오류 검출 및 재전송

  • 송신된 데이터가 손상되거나 손실되면 재전송(TCP Retransmission) 수행.
  • 타이머 기반 재전송: 일정 시간 내에 ACK를 받지 못하면 재전송.
  • 중복 ACK 기반 재전송: 같은 ACK가 연속으로 오면 손실된 데이터로 판단하고 빠르게 전송.

혼잡 제어 (Congestion Control)

네트워크에 과부하가 발생하면 속도를 조절하여 네트워크 혼잡을 방지한다.

TCP 혼잡 제어 알고리즘
  • Slow Start: 처음에는 작은 패킷만 전송하고 점진적으로 증가.
  • Congestion Avoidance: 네트워크 상태를 분석하여 과부하 발생을 방지.
  • Fast Retransmit & Fast Recovery: 패킷 손실 감지 시 빠르게 재전송.

정리

  • TCP는 연결 지향 프로토콜로, 신뢰성 있는 데이터 전송을 보장한다.
  • 3-Way Handshake로 연결을 설정하고, 4-Way Handshake로 종료한다.
  • 흐름 제어, 오류 검출, 혼잡 제어를 통해 안정적인 데이터 전송을 보장한다.
  • TCP는 신뢰성이 중요한 웹, 이메일, 파일 전송 등에 사용되며, 속도가 중요한 실시간 애플리케이션에서는 UDP가 사용된다.
profile
Turning Vision into Reality.

0개의 댓글