-
[Network] - TCP Flow Control / Congestion ControlCS/면접준비 2022. 9. 30. 21:33
TCP
네트워크 통신에서 신뢰적인 연결 방식
신뢰성을 보장하는 Protocol
Reliable Network 보장 조건
- Loss = Packet이 도중에 유실
- Ordering = Packet의 순서
- Congestion = Network가 혼잡
- Overload = Receiver의 역량
Data 전송 과정
Flow Control
- Sender 와 Receiver의 데이터 처리 속도가 차이나는 경우 ( Sender가 느리게 보내줄 때는 상관 X )
- Receiver는 제한된 Buffer 크기로 용량이 초과되면 Data를 받지 못하고 유실
- 손실된다면, Sender,Receiver에게 불필요한 전송이 또 발생
- Receiver에 맞추어 데이터 전송량을 줄여야한다.
해결 방안
1. Stop and Wait
매번 전송한 Packet에 대해 응답을 받는다.
Batch처리와 마찬가지로 더 큰 단위로 처리하는 것이 유리
2. Sliding Window
Receiver에서 설정한 Window 크기 만큼 Sender측에서 확인 응답 없이 Segment 전송하여 동적으로 조절
1. sender buffer
2. receiver window
3. sender window
- 이때 receiver가 sender에게 ACK 203을 Response하였다면,
- Sender는 이를 보고 Window의 범위를 203부터 203+7-1 = 209 까지 설정
Congetsion Control
- Sender가 전달한 Packet들은 대형 네트워크를 통해 전달된다.
- 만약 라우터에 Packet이 몰리는 경우, 모든 Packet을 처리하는 것이 불가능하다.
- 이 때, 전송을 못 받은 줄 알고 재전송하게 되면 혼잡만 가중시킬 것이다.
- 이러한 혼잡을 줄이기 위해 Sender에서 보내는 데이터의 전송속도를 강제로 줄인다.
- Flow control은 Sender-Receiver 사이의 전송속도 문제이지만, Congestion Contorl은 Router를 포함한 더 넓은 관점에서 봐야한다.
1. AIMD
- 처음에는 Packet을 하나씩 보내고, 문제 없이 도착하면 Packet의 갯수를 증가시킨다.
- Linear 하게 증가시킨다는 의미
- 실패하는 경우(time out,전송 실패)에는 Packet을 절반으로 감소
- 초기에 높은 대역폭을 사용하지 못하기 때문에 오랜 시간이 걸리며, Congest한 상황을 미리 아는 것이 아닌 이후에 대처
2. Slow Start
- AIMD와 동일하지만, Packet이 이상없이 도착하면 window size를 2배씩 증가
- 전송 속도를 지수 함수와 동일하게 증가
- Congest가 발생하면 1씩 떨어뜨린다. ( 어느정도 수용량 예측 )
3. Fast Retransmit
- Receiver가 받아야할 Packet이 오지 않고 다음것이 오게 되면, Ack Packet을 보내게 된다.
- 특정 Ack가 3번 반복되면 없다고 인지하고 다시 재전송한다.
- 이 때 혼잡한 상황이 있다고 가정하여 window size를 줄여준다.
4. Fast Recovery
- 혼잡한 상태가 되면 window size를 반으로 줄이고 선형증가 시킨다.
- AICD와 동일하게 선형으로 증가.
방안
'CS > 면접준비' 카테고리의 다른 글
[Network] - 대칭 키 / 공개 키 (1) 2022.09.30 [Network] - UDP (0) 2022.09.30 [Network] - TCP 3 handshake / 4 handshake (0) 2022.09.30 [Network] - OSI 7계층 (0) 2022.09.30 [컴구] - Parity bit / 해밍코드 (0) 2022.09.30