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再送いくつかの問題があり、袋は完全に信じることはできません。
受信端末は、失敗したパケットの再送までのデータを保存している場合は、受信者は、データメモリ混雑破棄チャンスを受信しています。