パート1 TCPのコンピュータネットワーク

A、TCPプロトコル

参考文献:newcoder
TCP / IPプロトコル、TCPとUDPの違いと特徴

1、4層モデル

アプリケーション層は:、アプリケーションが含まれているトランスポート層にデータを送信します。主なプロトコルはHTTP、SMTP、FTP、DNSなどです。
トランスポート層:アプリケーションを担当するアプリケーション間のカプセル化フォーマットの情報の流れからの通信。主なプロトコルはTCP、UDPです。
ネットワーク層:トランスポートストリーム層は、異なるホスト間のリンク層の通信に、IPパケットにパック。主なプロトコルはIPです。
リンク層:ネットワーク層のIPパケットを受信し、ネットワークに送信されるフレームにカプセル化され、ネットワークから受信した物理フレームは、ネットワーク層のIPパケットを抽出します。

2、信頼性

1)シリアル番号、確認応答、再送タイムアウト

受信されたデータセグメントは、受信機は、対応する肯定応答文字ACKを返し、一般ACK号+ I受けて、次を受信することを期待され、各パケットは、シーケンス番号、受信機は、シーケンス番号によってソートすることができる有します最初のデータバイトセグメントシーケンス番号、一定時間(この時間は2内に通常* RTT(ラウンドトリップ時間セグメント)+オフセット値)のための送信側は、確認、対応するデータ・パケットを受信しない場合それが失われたとみなされ、再送信されます。

2)フロー制御

スライディングウィンドウ:送信者の受信者の広告ウィンドウサイズ、送信者があまりにも多くのデータ伝送時間を防止することができます。
送信者があまりにも迅速にデータを送信する場合、受信者は、データの損失につながるれ、受信するには遅すぎるかもしれません。いわゆるフロー制御は、受信者が受信できるように送信者のない速すぎて、時間の伝送速度を可能にすることです。
スライディングウィンドウ内のデータ・パケットを直接送信することができ、そして場合、ウィンドウの左側を右側に肯定応答送信ウィンドウ移動を受信した後。

3)輻輳制御

輻輳ウィンドウ:伝送路に使用されるウィンドウの目詰まりを避けるために、送信者。
ウィンドウサイズ設定:
スロースタート:開始ウィンドウ(CWND)は1に、それは(RTTを介して)確認応答を受信するたびに設定され、輻輳ウィンドウサイズ* 2;場合、パケット再送タイムアウト期間、閾値( SSTHRESH)現在のウィンドウサイズの半分に設定され、ウィンドウサイズが1に設定され、その後、スロースタート。
輻輳回避:通常65536(2 ^ 16)に設定スロースタート閾値を設定します。輻輳ウィンドウサイズではなく2によりこの閾値が、それぞれ+1に到達するときに、現在のウィンドウサイズの半分に閾値を設定するセグメント再送タイムアウトが、ウィンドウサイズはスロースタート、その後、1に設定されている場合。
高速再送: 3回はすぐに重複ACK、再送を受けます。例えば、3回1001は承認を受けた、それは1001年の始まりは1001年が始まった再送データセグメントを受信しなかったことを意味します。
高速リカバリは:高速再送開始ACK 3を繰り返し、および高速回復開始を受け取ります。(以前に3は、3せず、いくつかの3つの絶縁を送信し、受信し説明したように)閾値が+3の新たな閾値に半分現在のウィンドウの大きさと輻輳ウィンドウサイズに設定されています。それからちょうど各確認、輻輳ウィンドウ+1を受信繰り返します。新しいデータがACKを確認すると、ウィンドウのサイズは、その後、輻輳回避、SSTHRESHに設定されています。

3、3ウェイハンドシェイク

参考文献:4とのTCP 3ウェイハンドシェイクを理解し、手を振って顔質問(非常に包括的)

トランスポート層プロトコルはTCPベースの接続が確立されると、送信者と受信者は、3つのパケットは、3ウェイハンドシェイクと呼ばれた送ります。
最初のハンドシェイク:送信者は、SYN = 1(SEQ ID NO同期)を送信し、初期シーケンス番号SEQ = X(ランダム)。接続を確立するために、受信者の要求を知らせます。クライアントは、入射SYN_SENTの接続、肯定応答の待機を要求する状態。
第二のハンドシェイク:それ自体がSYN = 1、SEQ = Y(ランダム)を送信しながら受信機は、SYN送信側(ACK = X + 1を送信すること)を認めます。DESCRIPTION受信機は、接続メッセージの受信を肯定応答します。サーバーは、入力したSYN_RECVの状態を。
第三のハンドシェイク:A受信確認応答SYN + ACKパケット、送信ACK = Y + 1、SEQ = X + 1。このとき、TCP接続が成功します。クライアントとサーバーESTABLISHED状態。

3ウェイハンドシェイクのはなぜですか?代わりに、二回または4回の?
それによってエラーを発生、サーバセグメントにバースト接続要求パケットを防ぐことができませんでした。
例えば、なぜならノードサーバの到着の遅延のネットワーク内のクライアント最初のハンドシェイクセグメント、及びサーバが確認応答を送信するときに、接続を確立共感。クライアントは、この時点で接続を確立するために要求しなかったいかなる第三のハンドシェイクがないので、しかし、それは、サーバがデータを送信するために、クライアントのために待機する必要があります、ご了承を無視します。

図4に示すように、四の光波

最初の波:クライアントが、FIN = 1、SEQ = uの接続を解放するためにパケットを送信します 。接続を解放するための要求。クライアントが入りFIN_WAIT1(1つの終端待ち)状態。
第二波:サーバは= V = U + 1を接続解放メッセージ、確認メッセージACKを受信し、自身のシーケンス番号の配列をもたらします。この場合、サーバーへのクライアントの接続先が切断方向となっている、クライアントがデータを送信し続けることはありません。では、半近い(FIN_WAIT2)状態。ただし、サーバーがデータを送信し、クライアントはまだ受け入れられています。クライアントは、サーバー接続解放メッセージを待ちます。サーバーCLOSE_WAIT(クローズ待機)状態。クライアントが入力するための確認要求を受信FIN_WAIT2(2終了待ち)状態。
第三の波:データが送信された最後のサーバ、パケットがFIN = 1、ACK = U、クライアントのリリースに接続を送っ + 1、配列= W。確認するために、クライアントを待ちます。サーバが入りLAST_ACK確認メッセージクライアントを待って、(最終確認)状態。
第四の波:クライアントが確認するために送られた接続解放メッセージを受信して、入力しTIME_WAIT状態に。ACK = + 1、SEQ = W U + 1。サーバーはすぐ近くにTCP接続がすぐに入力し、確認メッセージが表示されCLOSED状態に。クライアントは、それが他の2 * MSL(最大セグメント寿命)をオフした直後に近い接続をしませんが、確認応答メッセージを送信します。サーバが確認メッセージを受信しなかった場合は、最後の確認メッセージは、その待ち時間に、失われる可能性があるため、サーバがタイムアウトします再送信FIN。そのため、サーバは、以前のクライアントよりもTCP接続を切断します。最後に、TCP接続のクライアント取り消し、入力CLOSED状態に。

5、クローズ、ハーフオープンしながら、開かれている間

参照:TCP-IPのコメント:TCPハーフオープン接続と同時に開いて閉じているとき
:同時に開く
SYN_SENT状態にSYNパケットを送信し、二つのアプリケーションを同時にアクティブオープンを。彼らは他のすべての側面は、SYN、SYNパケットを送信し、その後、他にACKパケットを送信し、その後、SYN_RECV状態に入る受け取りました。彼らは互いのSYNとACKパケットを受信した後、直接接続が確立され、ESTABLISHED状態に入ります。

クローズ中:
双方はまた、FINパケットを送信することFIN_WAIT1状態になり、シャットダウンするためのイニシアチブをとります。互いのFIN入力する政党を受信するとCLOSINGの状態を、そして確認するためにACKを送信し、TIME_WAIT状態に入ります。最後にCLOSED。

半開:
知識なし、異常クローズ(切断、電源オフ)への1つ、および他の、ハーフオープン接続における今回。当事者は、データ通信を実行しない場合、当事者はまだ発生した異常を検出していない他の側に接続されています。あなたがデータを送信する必要がある場合は、実際には、それはRSTパケット(リセットパケット)を返しますが存在しない接続を受信した後、ここで見つけるには、接続を再確立する必要性に、強制的に近いこの時間は、接続を語りました。

おすすめ

転載: www.cnblogs.com/KirinSB/p/12602036.html