スリーウェイハンドシェイク、第四の波は、それが今どのようなものかを見て、ホットフェイス質問であると言うことができます!
我々は最初のチャートTieshanglaiフロー:
TCPは信頼性の高い輸送ですのでなぜ?複雑。
前提の信頼性の高い伝送を確認: TCP接続管理メカニズムを
TCPコネクションを管理するためのフィールド制御とTCPヘッダー:
スリーウェイハンドシェイク(接続): 二回の接続要求(SYN)+二回確認応答(ACK)
プロセス:LISTEN状態サーバーを入力した後、クライアントはサーバSYN接続要求を送信し、サーバは受信してACK応答SYN接続要求を送信し、クライアントは応答を受信した後、サーバにACKを送信し、その後、接続が確立されます成功。
四波(切断):二つの切断要求(FIN)+ 2つの肯定応答(ACK)
プロセス:OFF不明側アクティブ、FINオフポジ切断要求を送信し、受動側CLOSE_WAIT状態に入るACK応答を返信する、受動側が切断要求FINを送信する前に接続を閉じ、当事者オフポジTIME_WAIT状態にACK応答を返信ACKを受信した後受動正方形オフは、アクティブ側2MSLオフした後に、成功したこの時点で切断します。
Q1:なぜ、サービスの終了がLISTEN状態に最初のでしょうか?
A1:アプリケーションレイヤでにソケット、聞く関数を呼び出すことで、受動状態、他のクライアントとサーバーが接続を確立することができ、。
Q2:成功した接続を確立する方法は成功したと考えられて切断されています?
A2:ESTABLISHED状態に入る両端には、COLSED状態に入ってきました。
Q3:なぜ直接オフそうしない、状態をTIME_WAIT必要がありますか?
A3:再送制御 、最終ACKが再送信を確認するために、他のパーティを決定することができます失われたことを確実にするためです。そう、パッシブ側がACKを受信しなかった場合、それは再送FINをタイムアウトします、クライアントプロセスが行ってきましたが、TCPコネクションが残っています
Q4:2MSLのはなぜですか?
A4:それはメモリの接続は、それは常に存在し、かつ合理的なので、2MSLができない、存在取り上げます。
1.MSLは、データグラムが消費される最大時間の他端の一方の端部から歩いて、2MSLができ消失遅くセグメント二つの伝送が受信されなかった保証又は(またはサーバが直ちに再起動された場合、プロセスを受けますデータ)
2.理論的保証(紛失、TCP接続がまだある場合、サーバはと仮定して、最後のACK信頼性の到着を再送FINをタイムアウトすることができます)
Q5:3ウェイハンドシェイク、4波はなぜですか?
A5:サービスはSYN、SYNとACKを返信する直接送信することができ受けるので、3ウェイハンドシェイクがある同期。
サーバがFIN、コアイニシアチブはACKに対応するために受信した場合、アプリケーション層は近いが、FINが送信されます呼び出します。また、ピギーバックで三回振っすることができます。
Q6:クライアントが突然現れ失敗した場合にどのように行うには?
A6:提供TCP処理の例外キープアライブタイマーを切断する応答しない場合、送信者は、この時点で髪を数回ハートビートパケットを送信するために、所定の時間内にすべてのデータを受信しない場合:。
Q7:なぜ二度で接続できませんか?
A7:1.スリーができ、両方の当事者がいることを確認してください準備ができてお互いを知っています
2.双方は許可初期シーケンス番号を交渉、ハンドシェーク中にシリアル番号が送信され、承認され。