問題分析と対応計画を開梱TCPスティックパッケージ

比較の問題を開梱スティックパッケージは、データリンク層、ネットワーク層とトランスポート層の下にあるネットワーク内にある発生する可能性があります。私たちの開梱、UDPニュース国境保護以来の大部分は、トランスポート層におけるネットワークアプリケーションの開発、日足パッケージ問題は発生しませんので、スティックパッケージ開梱問題は、TCPプロトコルで発生します。

 

スティック包装、開梱は何ですか?

クライアントが2つのパケットが連続してサーバに送信することを想定し、そしてパケット1とpacket2に表され、サーバは、データが3分割されてもよい受け取り、以下に列挙する。

前者の場合、受信端末は、通常、2つのパケットを受信し、即ち、スティックパッケージとアンパック現象が発生しない、そのような条件は、この説明の範囲内ではありません。

 

 

TCPパケット損失が発生しないので、第二の場合には、受信端末は、パケットが送信機によって送信された情報の2つのパケットを含んでいるように、スティック・パッケージである現象を一つだけのパケットを受信します。受信機は、2つのデータパケットの限界を知らないので、この場合、受信側が処理されるため、それは困難です。

 

 

以下に示すように、第3のケースは、このケースでは、2つの形式があります。受信機は、2つのパケットを受信するが、両方のパケットのいずれか不完全であるか、または複数の外である、すなわち、このような状況が発生し、スティックパッケージをアンパック。特別な治療なしの両方のケースならば、受信側の処理のためにも悪いです。

 

 

 

 

 

なぜスティックパッケージTCPは、開梱、起こるのだろうか?

TCPスティックパッケージには、次の理由のいくつかを解凍するために主に起因する、発生します。

 

1.アプリケーションが開梱発生するソケットバッファのサイズよりも大きいデータを書き込みます。

 

2.アプリケーションのソケットバッファサイズは、スティックのパッケージを発生しますネットワークに複数のデータの書き込みを送信するカードアプリケーション、書き込みデータよりも小さくなっています。

 

3. TCPセグメントパケット長TCPヘッダ長-TCP> MSSのMSS(最大パケット長)サイズ開梱が発生します。

 

ソケットバッファを受信する4. A方式は、タイムリーなスティック包装を発生しますデータを、読んでいません。

 

 

 

スティック包装、開梱ソリューション

TCPは、それをストリームする方法、データの定常流で来て、合併や意味のある情報の中から出て分割するには、ネットワーク・サーバとして、ストリーム指向そのものですか?通常、我々は、以下の一般的な方法のいくつかを持っています:

図1に示すように、各パケットの送信側は、ヘッダは、パケットの少なくとも長さが含まれている必要があり、パックヘッダを追加するので、受信端末ヘッダのパケット長フィールドを読み取ることによって、データを受信した後、それらは各データパケットの実際の長さを知っていることA。

図2に示すように、各固定長データパケットがカプセル化されているの送信端(0でないにより充填されてもよい)、固定長データのこの端部は、それぞれに受信バッファから読み出され、オープン自然分割各データパケットを受信します来ます。

図3は、この境界は、異なるデータパケットが開いて分割することができるので、受信側は、そのような特殊記号を追加するように、データパケットの境界に設けられていてもよいです。

おすすめ

転載: www.cnblogs.com/xifenglou/p/12052971.html