네트워크 | TCP 프로토콜, 3-Way Handshake

Faithful Dev·2025년 1월 29일

컴퓨터 공학

목록 보기
66/81

TCP 프로토콜

TCP(Transmission Control Protocol, 전송 제어 프로토콜)는 신뢰성 있는 데이터 전송을 보장하는 프로토콜로, 인터넷에서 데이터를 전송하는 데 널리 사용된다.

TCP의 주요 특징

  • 연결 지향(Connection-oriented): 데이터를 전송하기 전에 연결을 설정해야 함 (3-way handshake).
  • 신뢰성 보장: 데이터 손실 시 재전송 기능 제공.
  • 순서 보장: 패킷이 순서대로 도착하도록 관리.
  • 흐름 제어 및 혼잡 제어: 송·수신 속도를 조절하여 네트워크 과부하 방지.
  • 패킷 오류 검출 및 복구: 데이터가 손상되거나 유실되면 재전송 요청(ACK, Sequence Number 사용).

TCP는 대표적으로 웹(HTTP, HTTPS), 이메일(SMTP, IMAP, POP3), 파일 전송(FTP) 등 신뢰성이 중요한 서비스에서 사용된다.


TCP 연결 과정: 3-Way Handshake

TCP에서 두 장치(클라이언트와 서버)가 데이터를 교환하기 전에 연결을 설정하는 과정이 필요하다. 이를 3-Way Handshake라고 한다.

3-Way Handshake 과정

  1. SYN (Synchronise) - 클라이언트 → 서버
    • 클라이언트가 서버에 연결 요청을 보냄.
    • SYN 플래그가 설정된 패킷을 전송.
    • Sequence Number(SEQ) 값을 랜덤하게 설정하여 전송.
    • 예: SYN=1, SEQ=1000
  2. SYN-ACK (Synchronise-Acknowledge) - 서버 → 클라이언트
    • 서버가 클라이언트의 요청을 수락하고 응답.
    • SYNACK 플래그가 설정된 패킷을 전송.
    • 클라이언트가 보낸 SEQ 번호에 1을 더한 ACK(승인) 값을 보냄.
    • 새로운 SEQ 값도 생성하여 포함.
    • 예: SYN=1, ACK=1001, SEQ=2000
  3. ACK (Acknowledge) - 클라이언트 → 서버
    • 클라이언트가 서버의 응답을 확인하고 최종적으로 연결을 확립.
    • 서버가 보낸 SEQ 번호에 1을 더한 ACK 값을 전송.
    • 예: ACK=2001, SEQ=1001

결과

이제 TCP 연결이 성립되어 데이터 전송이 가능한 상태가 된다.


TCP 연결 종료 과정: 4-Way Handshake

TCP 연결을 종료할 때는 4-Way Handshake를 사용한다.
1. 클라이언트 → 서버 (FIN 전송): 클라이언트가 FIN 플래그를 설정하여 연결 종료 요청.
2. 서버 → 클라이언트 (ACK 응답): 서버가 ACK를 보내 요청 확인.
3. 서버 → 클라이언트 (FIN 전송): 서버도 FIN을 전송하여 종료 요청.
4. 클라이언트 → 서버 (ACK 응답): 클라이언트가 ACK를 보내 연결 종료 확인.

이후, 일정 시간이 지나면 완전히 연결이 해제된다.


정리

  • TCP는 신뢰성 있는 데이터 전송을 제공하는 프로토콜이다.
  • 3-Way Handshake는 TCP 연결을 설정하는 과정이며, SYN → SYN-ACK → ACK 순서로 진행된다.
  • 4-Way Handshake는 TCP 연결 종료 과정이며, FIN과 ACK 패킷이 교환된다.
  • TCP는 데이터 전송 중에서 흐름 제어, 혼잡 제어, 오류 복구 등의 기능을 수행하여 안정적인 네트워크 통신을 지원한다.
profile
Turning Vision into Reality.

0개의 댓글