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

クローズ処理ここでは、SERVER側が先にCLIENT側へ終了要求(Fフラグのセットされたパケット)を送信している。SERVER側とCLIENT側のどちらが先にクローズ要求を出すかは、オープンの順序とは関係ない。送信するデータがなくなった方から順にクローズ処理を行えばよい。双方がクローズ要求を送信し、それに対するACK応答を受け取るとすべての通信が終了する。 (1)一番最初にSERVERからCLIENTへ向けてクローズ要求が送信されている(アクティブ・クローズ)。 (2)(1)のクローズに対する受信確認。 (3)CLIENTからSERVERに対するクローズ要求の送信(パッシブ・クローズ)。 (4)(3)のクローズに対する受信確認。 (5)クローズ時の典型的なフラグ・パターン。Fとそれに対するAが続いている。双方から送信されるので、全部で4つのパケットが存在する。 (6)データ部の長さは0。つまりこれらのパケットはFとAフラグを送信するためだけに使われている。 (7)SERVERからのクローズ要求に対するシーケンス番号と、それに対するACK番号。Fフラグも1byte分占めるので、+1されていることに注意。 (8)CLIENTからのクローズ要求に対するシーケンス番号と、それに対するACK番号。Fフラグも1byte分占めるので、+1されていることに注意。

クローズ処理ここでは、SERVER側が先にCLIENT側へ終了要求(Fフラグのセットされたパケット)を送信している。SERVER側とCLIENT側のどちらが先にクローズ要求を出すかは、オープンの順序とは関係ない。送信するデータがなくなった方から順にクローズ処理を行えばよい。双方がクローズ要求を送信し、それに対するACK応答を受け取るとすべての通信が終了する。 (1)一番最初にSERVERからCLIENTへ向けてクローズ要求が送信されている(アクティブ・クローズ)。 (2)(1)のクローズに対する受信確認。 (3)CLIENTからSERVERに対するクローズ要求の送信(パッシブ・クローズ)。 (4)(3)のクローズに対する受信確認。 (5)クローズ時の典型的なフラグ・パターン。Fとそれに対するAが続いている。双方から送信されるので、全部で4つのパケットが存在する。 (6)データ部の長さは0。つまりこれらのパケットはFとAフラグを送信するためだけに使われている。 (7)SERVERからのクローズ要求に対するシーケンス番号と、それに対するACK番号。Fフラグも1byte分占めるので、+1されていることに注意。 (8)CLIENTからのクローズ要求に対するシーケンス番号と、それに対するACK番号。Fフラグも1byte分占めるので、+1されていることに注意。