본문 바로가기

네트워크

[프로토콜] TCP

TCP (Transmission Control Protocol)

  • 택배에 비유할 수 있음. 데이터가 목적지까지 손실 없이 도착했는지 확인하고, 순서대로 도착하도록 함
  • OSI 7계층 중 4계층인 '전송 계층' 에서 사용됨

 

1. [주요 기능]

  3-Way Handshake 연결 시작 시, 클라이언트-서버 간 신뢰 형성 과정
  Sequencing 데이터의 순서 번호를 붙여 전송
  Acknowledgment (ACK) 받은 데이터에 대한 응답을 보냄
  Retransmission 데이터 유실 시 재전송
  Flow Control 수신 측 상태를 고려하여 전송 속도 조절
  Congestion Control 네트워크 혼잡 상태를 감지하고 속도 조절

 

 

 

2. [3-Way Handshake]

  • 3-way handshake는 TCP 프로토콜이 연결 과정에서 데이터를 주고 받는 통신 과정
  SYN 연결 요청
  ACK 응답 확인
  PSH 데이터를 즉시 전송하라는 의미 (Push)
  FIN 연결 종료 요청
  RST 비정상 종료 요청 (Reset)

 

 

1. [SYN]   Client → Server: "연결 요청 (seq=100)"
2. [SYN+ACK]  Server → Client: "OK (seq=200, ack=101)"
3. [ACK]   Client → Server: "연결 완료 (ack=201)"

 

 

 

3. [패킷 예시]

  • 클라이언트 10.1.9.91 → 서버 anyone:30092 로 연결한다고 가정

    [1] 10.1.9.91.16024 > anyone.30092: Flags [S], seq 1000, win 64240      SYN (연결 요청)
    [2] anyone.30092 > 10.1.9.91.16024: Flags [S.], seq 5000, ack 1001       SYN - ACK (수락 및 연결)
    [3] 10.1.9.91.16024 > anyone.30092: Flags [.], ack 5001                           ACK 

    (3-way handshake 완료)

    [4] 10.1.9.91.16024 > anyone.30092: Flags [P.], seq 1001:1201, ack 5001, length 200     PSH - ACK
    [5] anyone.30092 > 10.1.9.91.16024: Flags [.], ack 1201                                                    ACK

    (데이터 전송 완료)

    [6] 10.1.9.91.16024 > anyone.30092: Flags [F.], seq 1201, ack 5001     FIN (종료 요청)
    [7] anyone.30092 > 10.1.9.91.16024: Flags [F.], seq 5001, ack 1202     FIN - ACK (수락 및 종료 알림)
    [8] 10.1.9.91.16024 > anyone.30092: Flags [.], ack 5002                        ACK 

    (4-way handshake 연결 종료)

 

 

4. [특징]

  • 데이터의 손실 없이 전달됨
  • 먼저 보낸 데이터가 먼저 도착함 (순서 보장)
  • 전송 성공 여부 확인 가능 (ACK 응답)
  • 높은 신뢰성 보장
  • 다소 느린 속도

 

5. [사용되는 곳]

  • 웹사이트 접속 (http/https)
  • 파일 다운로드 (FTP)
  • 이메일 전송 (SMTP)

 

 

 

'네트워크' 카테고리의 다른 글

[프로토콜] UDP  (1) 2025.04.15
[네트워크 스위치] 업링크 포트(Up link)  (0) 2024.10.10
패킷의 종류와 구조  (1) 2024.02.27
네트워크의 분류  (0) 2023.12.01