Monthly Archives: 8月 2008

ゼミ中 〜TCP(1)

詳細TCP/IPの核。TCPの章。

TCPの構成は分かれていて、概要、接続方法、と話が進んでいく。

TCPの特徴はコネクション志向であること。フロー制御、輻輳制御、再送を行うこと。それ以外は、ほとんど忘れた。

接続方法は、基本は3wayハンドシェーク。SYN, SYN+ACK, ACK。送信側、受信側にて状態を持つ。CLOSE, SYN_SENT, SYN,RCVD, LISTEN, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, CLOSING, TIME_WAIT…ああ、CLOSE_WAITとLAST_ACKが思い出せなかった。

特に重要でもないが、SYNを送る方をアクティブ・オープン、SYNを受ける方をパッシブ・オープン、FINを送る方をアクティブ・クローズ、FINを受ける方をパッシブ・クローズと呼ぶ。

さらに、APIやOSの中で、TCPとアプリケーションがどのようになっているのかの細かい話が続く。例えばバックログという値をアプリケーション側から設定することができ、OSのTCPの受信キューの数を変更することができる。このOSの受信キューはアプリケーションにてacceptされることでOSからアプリケーションに渡される。

そうしないとOSが持ったままになる。その場合、例えばアプリケーションがacceptしなければ、キューの最大数までTCPコネクションが張られた場合、SYNに対するACKを返さなくなる。RSTによる拒否は行わない。なぜなら、SYNの再送を望むからだ。SYNの再送は5.5〜6秒の間で行われる(当時のBSD実装は500msタイマーを用いるため)。

キューに余裕、つまりSYNに対するSYN+ACKによる応答と、クライアントからのACKが到着した時点で、OSのTCPモジュールは、アプリケーションにコネクションが接続できたということを伝える。SYNの時点ではアプリケーションには渡さない。

同時オープン・同時クローズは何に使うの?という感じ。

お次はインタラクティブなTCPについて。バルク伝送のTCPが個人的には好みだが。

質問が最近、ぱったりと来なくなった。率直な話をM1に聞いたところ、意味不明、追いつけないらしい。困った。どうしよう。復習か、もしくは実地演習でもしようか迷っている。

というより、詳細TCP/IPvol.1は今の自分にとって、インターネットとは何か?を振り返るために、難易度の適度な教材になっているレベルなので、初めての人には追いつけないかもしれない。それとも、もっと準備をした方が良かっただろうか。何にしても、自分にとってはかなりプラスになるゼミだった。