본문 바로가기

Computer Science8

[TCP] 혼잡 제어(Congestion Control) 호스트의 상황을 넘어 네트워크 상황으로 TCP의 각 호스트는 Send Buffer, Receive Buffer을 가지고 있다. 송신 호스트의 Send Buffer는 수신 호스트의 Receive Buffer 여유 공간에 영향을 받는다. Receiver Buffer의 정보는 TCP 헤더의 Window Size에 담겨 보내진다. 여기에 네트워크의 혼잡 상태를 추가로 적용한 예시를 확인해보자. 상황 1 네트워크 상황이 좋아 최대 100개의 패킷을 보낼 수 있다. 하지만 수신자의 Receive Buffer의 여유 공간은 50 패킷 정도이다. 이때 송신자는 최대로 50개의 패킷만 보낼 수 있다. 상황 2 상황 1과 반대로 네트워크 상황이 좋지 않아 최대 30개의 패킷만 보낼 수 있다. 여전히 수신자의 Receive.. 2022. 7. 7.
[TCP] 파이프 라이닝(Pipelining) Pipelining 패킷을 전송 후 피드백(응답)을 받기 전까지의 시간을 RTT(Round Trip Time)라고 한다. 만약 패킷을 전송하고 응답받을 때까지 다른 패킷을 보내지 않는 다면 RTT 동안 네트워크를 사용하지 않아 성능적인 이슈가 발생한다. 이를 해결하기 위한 방법이 Pipelining이다. Pipelining이란 특정 크기만큼의 패킷을 한 번에 전송 후 피드백을 받는 방법이다. 구현 방법에는 Go-Back-N과 Selective Repeat이 있다. Go-Back-N Go-Back-N은 윈도우 사이즈를 N으로 지정하여, 패킷의 전송을 실패한 경우 N개의 패킷을 모두 다시 전송하는 방법이다. 패킷 전송이 실패되는 경우는 패킷에 타임아웃이 발생한 경우이다. (*참고. 수신자 측은 이미 받은 패.. 2022. 7. 6.