순간이 영원해 지는 곳

TCP delayed ACK time 본문

통신 & 네트워크

TCP delayed ACK time

nenunena 2013. 1. 4. 15:01

 

 

TCP에서 Receiver는 데이터 패킷을 잘 수신하면 Acknowledgement(ACK) 패킷을 Sender 에게 전송한다.

ACK 패킷 전송 횟수를 줄이기 위해 Delayed ACK 라는 방식을 사용하는데, 아래 링크를 보면 윈도우 운영체제에서는 Delayed ACK timer(하나의 패킷을 수신하고 곧장 ACK 을 보내지 않고 다음 패킷을 기다리는 시간)는 200ms 이다.

http://support.microsoft.com/kb/328890

위에 링크에는 아래와 같은 내용이 있다.

RFC 1122에 지정된 대로 TCP는 지연된 응답을 사용하여 미디어의 송신 패킷 수를 줄입니다. Windows 2000 이상에서의 TCP는 수신한 각 TCP 세그먼트에 대해 응답을 보내는 대신 일반적인 방법으로 지연된 ACK를 구현합니다. 즉, 특정 연결에서 TCP가 데이터를 수신할 때 다음 경우 중 하나에 해당할 때만 응답을 돌려보냅니다.

· 수신된 이전 세그먼트에 대해 응답이 보내지지 않았을 경우

· 한 세그먼트가 수신되지만 다른 세그먼트는 해당 연결에 대해 200밀리초 내에 도착하지 않는 경우

일반적으로 응답은 지연된 ACK 타이머(200밀리초)가 만료되지 않는 한 해당 연결에서 다른 TCP 세그먼트가 수신될 때마다 보내집니다.

위에 녹색 부분에 대한 설명을 좀 더 한다면,

· 수신된 이전 세그먼트에 대해 응답이 보내지지 않았을 경우

    • Receiver 가 패킷을 하나 받고 Delayed ACK timer 만료되지 않은 상태에서 다른 패킷을 하나 더 받으면 곧장 ACK 패킷을 전송

· 한 세그먼트가 수신되지만 다른 세그먼트는 해당 연결에 대해 200밀리초 내에 도착하지 않는 경우

    • Receiver가 패킷을 하나 받고 Delayed ACK timer 만료되면 ACK 패킷을 전송

 

아래 링크는 Delayed ack 응답 절차에 대한 예가 있다. (영문)

http://ask.wireshark.org/questions/4798/when-does-delayed-ack-start

아래는 www.naver.com 에 접속 했을 때 Wireshark 로 패킷을 캡춰한 내용이다. HTTP도 TCP를 사용하는데, 아래처럼 데이터 패킷 두 개를 수신할 때마다 ACK 패킷을 전송하는 것을 확인할 수 있다.

 

 

 

Comments