개발놀이터

면접 준비 (흐름 제어와 혼잡 제어) 본문

CS 지식/면접준비

면접 준비 (흐름 제어와 혼잡 제어)

마늘냄새폴폴 2024. 1. 13. 18:23

Q. TCP의 흐름 제어와 혼잡 제어에 대해서 설명해주세요. 

A. 흐름 제어는 송신자와 수신자 사이에서 벌어지는 현상이고 송신자가 보내는 패킷의 크기가 수신자의 수용 용량보다 클 경우 수신자의 버퍼를 동적으로 늘리기 위해 잠시 시간을 벌어주는 용도로 사용됩니다. 이때 sliding window 방식으로 수신자가 ACK 패킷을 전달할 때마다 일정량의 데이터를 보내주는 것이 특징입니다. 혼잡 제어는 송신자와 수신자와의 통신뿐만 아니라 더 넓은 범위에서 일어나는 현상으로서 네트워크 트래픽이 너무 많아지는 경우 패킷이 로스되는 것을 막기 위해 트래픽 레벨의 모니터링을 통해 혼잡을 막기위해 window 크기와 전송 속도를 제어하는 역할을 합니다. 

 

Q. window 크기가 뭔가요?

A. 단위 시간당 전송되는 패킷의 수입니다. 

 

Q. 혼잡 제어의 알고리즘에 대해서 설명해주세요. 

A. 혼잡 제어의 알고리즘에는 slow start, congestion avoidance, fast retransmit, fast recovery가 있습니다. slow start는 패킷이 도착할 때마다 window 크기를 2배로 늘리고 전송속도를 늘리는 알고리즘입니다. 이후 일정 수준에서 혼잡을 회피하기 위한 알고리즘은 congestion avoidance가 window 크기를 선형적으로 증가시킵니다. ACK 패킷의 순서가 꼬이는 경우 재전송을 하게 되는데 세번의 재전송이 일어나면 window 크기를 절반으로 줄이는 fast retransmit이 작동합니다. 마지막으로 window 크기를 다시 선형적으로 늘리면서 패킷을 받는 알고리즘은 fast recovery가 작동하면서 마무리됩니다.