[8]開梱ネッティーTCP、スティック包装、およびソリューションを理解します


図1に示すように、TCPプロトコル伝送

TCPプロトコルは、フローのためのプロトコルであり、フローは、事業セグメント、バッファ又はスティックパッケージをアンパックによる電流のみソケットはありません。 TCPプロトコルの伝送.JPG

送信側は、最初に入力バイト・ストリーム・バッファ、及び次いで最終的に受信機によって取得された、ネットワークバッファを介して受信側に送られます。

2、TCPスティック包装と開梱概念

TCPパケットが事業におけるバッファの実際の状況に基づいて分割されますので、送信のために複数のパケットにいくつかのパケット分割が、それは小さな複数のパケットがある大規模なパケット伝送、中にカプセル化することができる知っていると信じていますTCP-スティックパッケージまたは開梱。

3、TCPは、スティック包装と開梱を説明します

図示の.pngを開梱スティックパッケージ

1.サーバーが二度読まれるバイト数を読む時間が非常に次のような状況があるかもしれないこと、不確実であるため、サーバー、サーバーへのクライアントの送信二つのパケットD1およびD2を仮定二つの独立したデータ・パケット、それぞれD1およびD2、およびない開梱パッケージを貼り付けます。2.サーバは、2つの最初のパケットを受信し、D1及びD2は、一緒にスティックパッケージの発生をスティック。3.サーバが発生開梱、二回初回パッケージの完全読出しパケットD1およびD2部品、残りのパッケージの内容D2第2読み出しをデータ・パケットを読み出します。4.サーバーは、二回部D1、すべてのパッケージのパケットD1とD2の残りの部分への第2の読み出しに第一リードパケットをデータ・パケットを読み出します。

TCPは、少しずつ、バッファとき、次いで、D1及びD2は、それぞれ、パケット送信の複数に分割されます。

4、TCPスティック包装と開梱解決戦略

TCPはデータ送信のみに責任があるので、ビジネス上のデータを扱っていない、我々は唯一の上位アプリケーションプロトコルスタックを解決することができ、現在のソリューションが要約されている:1.メッセージの長さは、各パケットのサイズが固定され、データが十分でない場合には、欠員フィルスペース。テールキャリッジリターンパケット識別子を追加します。2.。メッセージはメッセージヘッダとメッセージ本体とに分割されている3、メッセージヘッダはメッセージの全長を含みます。4.より複雑なプロトコルの設計。

溶液中の5、ネッティー

ネッティーは、スティック包装と開梱を解決するためのエンコーダ、いくつかのデフォルトを提供しています。 ネッティーソリューション.PNG

5.1、LineBasedFrameDecoder

直面基づきキャリッジリターン文字デコーダ、

おすすめ

転載: juejin.im/post/5de50c035188252f1c34d282