第16回 信頼性のある通信を実現するTCPプロトコル(3)

TCPのオープンにおける通信の例 (1)クライアントからサーバへのアクティブ・オープン要求。 (2)サーバからクライアントへのパッシブ・オープン要求(と(1)に対する受信確認)。 (3)クライアントからサーバへの受信確認。 (4)TCPフラグの状態。TCPのオープン時にはこのように、「SYN」「SYN+ACK」「ACK」という3つのフラグ・シーケンスが観測できる。以後のパケットはすべて「Ack」がセットされている。 (5)CLIENT側の初期シーケンス番号。SYNフラグとともに送信されたシーケンス番号が、初期シーケンス番号となる。 (6)SERVER側の応答パケットのACK番号は、(5)(SYN)に対応している。+1されているのは、SYNフラグもシーケンス番号を1つ分占めるため。 (7)サーバ側の初期シーケンス番号。 (8)サーバ側の初期シーケンス番号((7))に対応するACK番号。やはりSYNの値に+1されている。 (9)ウィンドウ・サイズ。クライアント側はMSSの整数倍であるが、このサーバはMSSの整数倍ではない値(65,535)を返している。少しチューニングした方がよいであろう。 (10)TCPの送信元とあて先のポート番号。あて先ポートの80番は、HTTPプロトコルを表す。送信パケットと受信パケットでは2つのポート番号が入れ替わっていることが分かる。 (11)TCPのフラグ・フィールドの詳細。TCPのオープン要求では、このようにS(Synchronize)のみがセットされている。 (12)MSSオプション。ここでは1460となっている。 (13)ウィンドウ・スケール・オプション。 (14)SACKオプション。

TCPのオープンにおける通信の例 (1)クライアントからサーバへのアクティブ・オープン要求。 (2)サーバからクライアントへのパッシブ・オープン要求(と(1)に対する受信確認)。 (3)クライアントからサーバへの受信確認。 (4)TCPフラグの状態。TCPのオープン時にはこのように、「SYN」「SYN+ACK」「ACK」という3つのフラグ・シーケンスが観測できる。以後のパケットはすべて「Ack」がセットされている。 (5)CLIENT側の初期シーケンス番号。SYNフラグとともに送信されたシーケンス番号が、初期シーケンス番号となる。 (6)SERVER側の応答パケットのACK番号は、(5)(SYN)に対応している。+1されているのは、SYNフラグもシーケンス番号を1つ分占めるため。 (7)サーバ側の初期シーケンス番号。 (8)サーバ側の初期シーケンス番号((7))に対応するACK番号。やはりSYNの値に+1されている。 (9)ウィンドウ・サイズ。クライアント側はMSSの整数倍であるが、このサーバはMSSの整数倍ではない値(65,535)を返している。少しチューニングした方がよいであろう。 (10)TCPの送信元とあて先のポート番号。あて先ポートの80番は、HTTPプロトコルを表す。送信パケットと受信パケットでは2つのポート番号が入れ替わっていることが分かる。 (11)TCPのフラグ・フィールドの詳細。TCPのオープン要求では、このようにS(Synchronize)のみがセットされている。 (12)MSSオプション。ここでは1460となっている。 (13)ウィンドウ・スケール・オプション。 (14)SACKオプション。