全1657文字

 TCPで通信するために、まずしなければならないのがTCPコネクションの確立だ。

 TCPコネクションは、アクセス元のアプリケーションからアクセス先のアプリケーションを呼び出す形で確立する。このときに、通信相手のパソコン内で動いているアプリケーションを間違いなく呼び出す必要がある。

ポート番号でアプリを指定

 TCPは、ポート番号という情報を使ってアプリケーションを指定するようになっている(図1)。

図1●ポート番号でどのアプリケーションの通信かを指定する
図1●ポート番号でどのアプリケーションの通信かを指定する
主要なサーバーアプリケーションはポート番号が決まっており、アクセス元のパソコンはその番号を宛先に指定することで的確にサーバーと通信できるようになっている。クライアントアプリケーションのポート番号は、クライアント側のTCPスタックが空いている番号を選んで割り当てることが多い。
[画像のクリックで拡大表示]

 ポート番号は宛先ポート番号と送信元ポート番号が組みになってTCPヘッダーに書き込まれる。アクセス元のアプリケーションは、相手のアプリケーションの宛先ポート番号をあらかじめ知っている

 アクセス元のアプリケーションは、宛先ポート番号を指定してTCPコネクションの確立をTCPスタックに依頼する。送信元ポート番号は特に指定しなくても、TCPスタックが空いている番号を割り当ててくれる

 TCPスタックは、相手のTCPスタックに対してTCPコネクションの確立を要求する。アクセス先のTCPスタックは、宛先ポート番号を見て、コネクションをアクセス先のアプリケーションにつなぐわけだ。このようにして、TCPコネクションはポート番号で明確に識別される。