この文書の目的
どういうわけか、TCP Previous Segment Lost で検索して来る人が多いので、そのための対策ページ(ぇ
日記に書いてあるのを読むよりは、きっとマシ。
どういうわけか、TCP Previous Segment Lost で検索して来る人が多いので、そのための対策ページ(ぇ
日記に書いてあるのを読むよりは、きっとマシ。
TCP では、そのパケットが全体の頭から何バイト目であるかを表す値(SEQ/ACK 番号)が付加されていて、この番号をもとにして、再送や、順序通りでないパケットの確認・再構成が行われている。
Ethereal でネットワークを流れるパケットを監視していると、[TCP Previous Segment Lost] と表記されたパケットが流れていることがある。 これは、前のパケットの SEQ 番号 + 前のパケットのペイロード長(データの長さ)が、次のパケットの SEQ 番号に一致しない場合に表示される。
例えば、次の図のような例を考える。150、250、100 バイトのパケットが連続して送信され、受信された場合である。
次に、このうち真ん中の 250 バイトのパケットが、何らかの理由によってロスト(紛失)した場合である。
SEQ 番号は送信側がつける番号なので、パケットに紛失があると受信側では計算が合わず、パケットがロストしたと検出される。このとき、3番目の 100 バイトのパケット、すなわち、ロストしたパケットの次の(ロストしていない)パケットに TCP Previous Segment Lost と表示される。
previous (前の) segment (セグメント、この場合はパケットと考えてよい) lost (紛失した) という、文字通りの意味である。
いくつかの発生要因が考えられるが、おおよそ次のいずれかであろう。