再送信、それを処理する方法のためのTCPのバイトストリームトランスポート?

1つのネットワークプロトコルの背景概念

レイヤ4 UDPポートに基づいてネットワーク伝送

7層ネットワークプロトコル送信は(複雑さのTCP非常に高度..)TCPポートに基づいており、TCPはの上に追加された意味セッション層、アプリケーション層を

UPDパケット指向プロトコル、TCP表面バイトストリームプロトコル。

 

バイト指向のストリームそれは何ですか?

 

2 TCP転送通信手順

バイトストリームは、TCP、UDPメッセージ指向を指向しますそのバイトストリームTCPはそれが何ですか?

TCPは、データリンクは、メッセージが転送されていない、TCPに2つのエンドポイントを確立し、通信をポイントツーポイントであるデータの一片の一部であり、読み出しが送信され、数されるデータの量を知りません。

決定されたTCPにより送信されるどのくらいのデータ層へのTCPデータが、決定される多くの条件があり、透過窓、輻輳ウィンドウ、ルート上の最大伝送単位(MTU)、そのような出力キュー等のデータの総量。

 

アプリケーションとバイトサイズに固定されていないプロトコルTCP TCPバッファキューは、送信すべきデータが固定されていないされたTCPバイトサイズと、データTCPを送信する前に、

TCPはバイトストリームデータの一部を送信することで、

そしてそれは、伝送のこのような方法で行われています。

このため、ネットワーク伝送では、データセグメントを見ることができ、データのグループのグループは、受信者に配信されます。

 

伝送エラー再送機構3

送信者が送信した場合、受信者1234が3 ACKのみ12戻り確認を受け、確認がジャンプすることができないので、その後、私たちは、5 ACK応答を確認することができない送信者4に送られます。

このように、再送機構を、2種類があります。

3.1再送タイムアウト

私は、送信者が受信機は、他の3になっているケース345を受信し、このように、より深刻な問題があるだろうかわかりません。

送信者は、2つのオプションがあります。

  A、3デフォルトの送信が失敗し、再伝送3 

  B、345デフォルトの送信が失敗し、再送信345 

のみ、3が遅くなることがあり、Bの345を渡す方法が、すぐに占有帯域幅を渡すには、タイムアウトはこれら二つは最後の手段ではない、非常に長くなることがあります。

3.2高速再転送

データ駆動型の再送信に基づく高速TCP再送アルゴリズム、高速再送は、タイムアウトが時間駆動ではない、もあります。

データはどのようにそれを駆動していますか?

わずか12応答が3、次いで45を受信し、ACK受信しかし3受け取っていない場合には、ACK、さらに4 5 3 3返信ので、送信者は、3つの異なるACKを受信すると、その輸送を知っているであろうことは問題です

これは、ほとんどのデータ駆動型TCP再送メカニズムである(ほとんどのTCP、合計でいくつかのバージョンがありますか?...)。

この方法では、最高ではありませんが、問題のタイムアウトを解決するために、リターンの数がまだ解決されていない、一度20を作ったような、その3件のヘアACKを知って、これは20を返す必要はありません。

3.3袋再送

選択再送、選択Acknowledgemen T(SACK)、TCPヘッダは、よりSACK、依然として高速再送ACKあろう。

送信側が正確にバイトストリームの再送部分を知ることができるように袋の応答が、到着した断片のみ。このフィールドは、Linuxではこの機能、Linuxバージョンのオープン後に2.4のデフォルトをオンtcp_sack使用することができます。

 

参考:https://tools.ietf.org/html/rfc2018   https://www.jianshu.com/p/69695f332a71

 

残された課題

TCP再送いくつかの問題があり、袋は完全に信じることはできません。

受信端末は、失敗したパケットの再送までのデータを保存している場合は、受信者は、データメモリ混雑破棄チャンスを受信して​​います。

 

おすすめ

転載: www.cnblogs.com/the-last/p/11524964.html