TCP-Nagleアルゴリズム

945 ワード

面接で聞かれたことをまとめます.
tcpが接続する送信データを確立する際には、小さなパケット(微小パケットと呼ばれる)が発生する可能性があるが、1バイトずつ送信すると、41バイトのパケット、20バイトのIPヘッダ、20バイトのtcpヘッダ、1バイトのデータが発生する.ローカルエリアネットワーク上でこれらの小さなパケットが発生すると、一般的にはネットワークの混雑が発生しないため、問題は発生しない.しかし、広域ネットワークでは、これらの小さなパケットが混雑の発生を増加させる可能性が高い.Nagleアルゴリズムが必要です
このアルゴリズムは、1つのtcp接続上に最大1つの未確認の未完了の小パケットしか存在することができず、そのパケットの確認が到着するまで他の小パケットを送信ことができないことを要求する.逆に、tcpはこれらの少量のパケットを収集する、到来を確認するときに1つのパケットで送信する.
このアルゴリズムの利点は、到達が速いほどデータの送信が速くなることを確認する適応性にある.疑似コードは次のようになります.
if there is new data to send
  if the window size >= MSS and available data is >= MSS
    send complete MSS segment now
  else
    if there is unconfirmed data still in the pipe
      enqueue data in the buffer until an acknowledge is received
    else
      send data immediately
    end if
  end if
end if
しかし、Nagleアルゴリズムを閉じる必要がある場合がある.典型的な例は、Xウィンドウシステムサーバである:ある操作を行うインタラクティブなユーザにリアルタイムのフィードバックを提供するために、小さなメッセージを無遅延に送信しなければならない.