【初心者わかりやすく】TCP通信の確立と終了シーケンス

 TCP通信の基本として、データを送受信する前に、コネクション確立と終了のシーケンスを確認します。

TCPコネクション開始時

 TCPの場合、データを送受信する前に、コネクションを確立します。これには3回のやりとりがあるので、スリーウェイハンドシェイク(3-Way-Handshake)と呼ばれます。

 まず、通信を開始したい方(クライアント)が、SYNビットを立てて、送信します。

 これに対して、サーバはクライアントからのSYNを受け入れる場合は、Acknowledgement(ACK)のビットを立てて返します。また、サーバもTCP通信を開始したいので、端末へSYNビットを立てる必要があります。これをSYN+ACKという形で、1パケット内で返します。

 端末は、サーバからのSYNを受け入れる場合は、ACKのビットを立てて返します。この3回のやりとりで、データ通信前のコネクションが確立されます。

TCPコネクション終了時

 コネクションを閉じる時は、閉じたい方からFINビットを立てて送信します。

 サーバからもコネクションを切断する必要があるので、端末へのAckと合わせてサーバからのFINも立てて送信します

 サーバからのFINに対してAckを立てて返します。

 これで、完全にコネクションが終了します。 コネクション終了の動作は、アプリによっては、FIN+ACKではなく、FINとACKを別々のパケットで送信する場合もよくあります。

コメント