TCP/IPの核であるTCPプロトコルの詳細を知る。TCP編の最後である今回は、TCPのオプションと状態遷移について解説する。
■連載目次
第1回 Windowsネットワークの舞台裏
第2回 レイヤ・モデルとファイル共有
第3回 NetBIOSを理解する(1)
第4回 NetBIOSを理解する(2)
第5回 NetBIOSの通信の実際
第6回 TCP/IP始めの一歩
第7回 IPアドレスとネットマスク
第8回 アドレス・クラスとIPアドレス
第9回 IPルーティング
第10回 IPパケットの構造
第11回 MACアドレスを解決するARP
第12回 TCP/IPを支えるICMP
第13回 データグラム通信を実現 UDP
第14回 信頼性を実現するTCP(1)
第15回 信頼性を実現するTCP(2)
第16回 信頼性を実現するTCP(3)
第17回 LLCとNetBEUI
第18回 NetBIOS over TCP/IP(1)
第19回 NetBIOS over TCP/IP(2)
第20回 ファイル共有SMB/CIFS(1)
第21回 ファイル共有SMB/CIFS(2)
第22回 ファイル共有SMB/CIFS(3)
第23回 ブラウザ・サービス
前々回と前回では、TCPにおける基本的な通信モデルと、TCPパケットの構造、TCPのオープン/クローズ処理について解説した。今回はTCPプロトコル解説の最後として、TCPオプションとTCPの状態遷移図、そして実際のTCPプロトコルの例についてみていく。
TCPのオープン処理では、3ウェイ・ハンドシェイクという手法を使っている。これは都合3つのパケットを往復させることにより、オープン要求の送信とそれに対する受信確認の返答を行うものである。TCPは双方向型の通信サービスなので、両方のノードがそれぞれオープン要求を送信し、それに対してそれぞれが応答を返信する。実際にネットワークをキャプチャして確認すると、この3ウェイ・ハンドシェイクの様子がよく分かるだあろう。
TCPのクローズ処理とは、もうこれ以上送信するデータがない、ということを相手に通知するためのものである。やはり双方がこのクローズ要求を送信し、それに対する確認を受け取って初めてクローズ処理が完了する。一方的に受信をやめるだけでは正しいクローズ処理にはならない。
以上のように、TCPでは、UDPと比べるとかなり複雑な制御が行われている。特にオープンとクローズの処理では、どちらが先に要求を送信したのかによって処理内容が変化する。また、同時に処理要求が出されることもあるので(ネットワーク上では、このようなことも当然発生する)、その場合でも破綻しないようになっていなければならない。このようなさまざまな事態に対応するため、TCPではあらかじめ有効な「状態遷移」が詳細に決められている。この状態遷移は、例えばnetstatコマンドで表示されるようになっている。ネットワークのトラブルシューティングを行う場合には、この状態遷移を調べることによい、トラブルの状態や症状を的確に知ることができるので、ぜひとも覚えておくとよいだろう。
Copyright© Digital Advantage Corp. All Rights Reserved.