IP와 TCP
- IP(Internet Protocol)
- 인터넷에서 데이터를 전송하기 위한 기본 프로토콜
- 데이터를 작은 조각인 패킷으로 나누어 네트워크를 통해 전송
- 특징:
- 비신뢰적(Unreliable): 데이터가 손실되거나 순서가 뒤바뀔 수 있다.
- 최선의 노력(Best-Effort): 데이터를 가능한 빨리 전송하지만, 성공 보장 X.
- 경로 설정: 패킷이 목적지까지 도달할 최적 경로를 찾음.
- TCP(Transmission Control Protocol)
- IP 위에서 동작하는 프로토콜
- 신뢰적인 데이터 전송 서비스 제공
- 특징:
- 데이터 손실 방지: 손실된 데이터를 재전송합니다.
- 데이터 순서 보장: 원래 순서대로 데이터를 정렬합니다.
- 무결성 확인: 데이터가 손상되지 않았는지 확인합니다.
예를 들면,
IP가 배달원이라면 TCP는 매니저 역할이다.
- IP는 "주소만 보고" 패킷(데이터 조각)을 전달 → 잘못된 경로로 가거나 손실될 수 있음.
- TCP는 패킷이 제대로 도착했는지 확인, 문제가 생기면 수정. 모든 패킷을 순서대로 정리하여 완전한 데이터로 조립.
TCP가 신뢰적인 데이터 전송을 제공하는 방법
- 기다리는 순서 번호를 가진 순서에 맞는 세그먼트의 도착. 그 이전 순서까지의 모든 데이터들은 이미 확인 응답 된 상태라면?
- 지연 ACK. 추가 세그먼트를 위해 대기. 만약 다른 세그먼트가 오지 않는다면 ACK 보냄. 온다면 두개를 합쳐서 ACK 보냄.
- 순서에 맞는 세그먼트의 도착. 이미 하나의 순서에 맞는 세그먼트가 있다면?
- 하나의 누적된 ACK를 보냄
- 지연 ACK:
- ACK 전송을 최대 500ms까지 지연하여 추가 데이터를 기다리는 것.
- TCP에서는 네트워크 트래픽을 줄이기 위해 지연 ACK 메커니즘을 사용한다.
예시
- 송신자가 100바이트 크기의 데이터를 두 번에 나누어 보낸다고 가정하자
- 첫 번째 세그먼트(Sequence Number = 1~100) 도착.
- 두 번째 세그먼트(Sequence Number = 101~200) 아직 도착하지 않음.
- TCP Receiver의 행동:
- 첫 번째 세그먼트에 대해 즉시 ACK를 보내지 않음.
- 대신 500ms 동안 대기하며, 두 번째 세그먼트가 도착하는지 확인한다.
- 두 번째 세그먼트가 500ms 내에 도착: 두 세그먼트에 대해 한 번의 ACK를 보냄.
- 두 번째 세그먼트가 500ms 내에 도착하지 않음: 첫 번째 세그먼트에 대해 ACK를 보냄.
TCP와 GBN 프로토콜, SR 프로토콜
- Go-Back-N(GBN)의 특징
- 누적 ACK:
- 송신자는 수신자로부터 가장 최근에 성공적으로 수신된 순서대로 된 데이터에 대한 ACK만 받음.
- 예:
- 세그먼트 1, 2, 3, 4, 5를 보냈을 때, 세그먼트 3까지 성공적으로 수신되었으면, 수신자는 "세그먼트 3까지 잘 받았음"이라는 ACK를 보낸다.
- 송신자는 ACK 3을 기준으로 4, 5 이후의 데이터를 전송 상태로 간주.
- 손실 시 전체 재전송:
- 만약 세그먼트 4가 손실되었다면, 세그먼트 4 이후의 모든 데이터를 재전송. (비효율적)
- 누적 ACK:
- Selective Repeat(SR)의 특징
- 개별 ACK:
- 수신자는 각 세그먼트마다 별도의 ACK를 보냄.
- 예:
- 세그먼트 1, 2, 3, 4, 5 중 세그먼트 4가 손실되었을 때, 수신자는 1, 2, 3, 5에 대해 ACK를 보낸다.
- 송신자는 손실된 세그먼트(4)만 재전송.
- 손실된 데이터만 재전송:
- 개별 ACK 덕분에 손실된 데이터만 재전송 가능하며, 네트워크 리소스를 절약할 수 있음.
- 개별 ACK:
TCP에서의 혼합 동작
TCP는 위의 두 방식에서 효율적인 요소를 가져와 혼합하여 동작한다.
TCP의 기본 동작 (GBN 기반)
- TCP는 기본적으로 누적 ACK를 사용.
- 수신자는 순서대로 도착한 가장 마지막 세그먼트에 대한 ACK만 송신자에게 보냄
- 순서가 틀린 세그먼트가 도착하면, 즉시 중복 ACK(Duplicate ACK) 전송(다음에 기대하는 데이터의 순서 번호가 포함됨)
TCP의 효율화 (SR 요소 추가)
- TCP는 일부 구현에서 순서가 틀린 데이터도 임시로 저장 가능.
- 송신자는 손실된 데이터만 재전송 → 효율 개선.
Selective Acknowledgment (SACK) 옵션
- 수신자는 누락된 데이터 외에도, 어떤 데이터가 성공적으로 수신되었는지 세부적으로 표시
- 송신자는 이 정보를 기반으로 손실된 데이터만 재전송
'CS' 카테고리의 다른 글
[CS] ICMP: 인터넷 제어 메시지 프로토콜 (Internet Control Message Protocol) (0) | 2025.02.08 |
---|---|
[CS] TCP 혼잡 제어(TCP Congestion Control) (0) | 2025.02.01 |
[CS] HTTP의 비지속적 연결과 지속적 연결, 메시지 형식 (0) | 2025.01.10 |
[CS] 지역성과 Fast File System (1) | 2025.01.04 |
[CS] 페이징: 더 빠른 주소 변환을 위한 TLB 기법 (3) | 2024.12.22 |