728x90
이번 포스트에서는 TCP의 연결 관리 및 흐름 제어에 대해 다루겠다.
RTT : 패킷 하나를 보내고 나서 ACK이 올때까지 걸리는 시간(Queueing 딜레이에 의해 변동)
흐름제어(Flow Control)란?
: Sender가 세그먼트를 보낼 때 Reciever의 버퍼 정보를 확인하여 버퍼 오버플로우가 발생하지 않는 만큼만 보내는 기법이다.
흐름제어: Basic Idea
- Receiver의 여유 버퍼 크기를 receive window 필드를 통해 Sender에게 알려준다.
- Sender는 RW의 크기에 맞게 세그먼트를 전송한다.
그럼 만약 세그먼트 하나를 보냈는데 Receiver 버퍼가 꽉 차면 Sender는 언제 세그먼트 전송을 재개할까?
- Receiver가 먼저 Sender에게 RW 사이즈가 담긴 세그먼트를 보낸다. (Duplex 통신)
- Probing: Sender가 일정 주기로 1B(바이트)의 세그먼트를 Receiver에게 보낸다. Receiver 입장에서 여유 공간이 없는 경우 discard, 여유 공간 있는 경우 (RW 사이즈가 담긴)ACK 보낸다.
또한 서로간의 초기 RW 사이즈(Receiver buffer 사이즈)는 3-way handshake를 통해 사전에 교환한다.
'Networking' 카테고리의 다른 글
혼잡 제어 (TCP) (0) | 2022.06.15 |
---|---|
TCP (0) | 2022.06.11 |
Go-Back-N & Selective Repeat (0) | 2022.06.04 |
Reliable Data Transfer (RDT) (0) | 2022.05.26 |
Transport Layer (전송 계층) (0) | 2022.05.06 |