すべてのモノがネットワークにつながるIoT時代、IT技術者ならネットワークに関する基本的な知識は不可欠だ。そこで本特集では日経NETWORKの過去記事を再編集。全12回で基本的なネットワーク技術を分かりやすく解説する。

 IPネットワークにおけるコンピューター同士の通信は、WebブラウザーとWebサーバー、メーラーとメールサーバーといったアプリケーション間のデータのやりとりを指す。

 このとき、前回まで解説してきたIPやイーサネットは、データを目的のコンピュータまで運び届ける役割を担う。コンピューターに届いたデータを目的のアプリケーションに渡すのは、「TCP」や「UDP」の役割である。

 送信側のコンピューターでは、TCPやUDPの処理ソフトがアプリケーションから通信データを受け取ると、それを収めたパケットを作る。

 このとき、パケットのヘッダーには、アプリケーションから指定された番号を書き込む。この番号はポート番号と呼ばれ、受信側でデータを受け取るアプリケーションを識別するために使う。

 受信側では、パケットが届くとTCPやUDPの処理ソフトがパケットからデータを取り出す。そして、ヘッダーに書かれたポート番号を見て、指定されたアプリケーションにデータを渡す。

 これが通信の大まかな流れである(ポート番号は次回詳細に解説する)。

 TCPとUDPのどちらを使うかは、アプリケーションが決める。では、どのように使い分けるのか。両者の違いを理解するために、それぞれのしくみを知っておこう。

TCPは3回のやりとりで仮想の通信路を確立

 TCPの最大の特徴は、データを確実に送受信することである。それを支えるのが、「コネクション」と四つの通信制御機能である。

 コネクションとは、通信相手のコンピューターと結ぶ仮想の通信路である。TCPでは、通信前にパケットを3回やりとりしてコネクションを確立する。これにより、送信側と受信側の双方でデータの受け渡しが可能な状態であることを確認できる。

 下図は、コネクションの確立と切断の手順を示したものだ。

手順を重ねてコネクションの確立と切断を行うTCP
[画像のクリックで拡大表示]

 コネクションを確立するには、まず開始側(パソコンA)から受ける側(パソコンB)に、制御ビットSYNをオンにしたパケットを送る。制御ビットはヘッダーに書かれた6ビット分の制御情報である。SYNは、「通信を開始しよう」といったあいさつのようなものである。

 次に、SYNパケットを受け取ったパソコンBは、通信を許可する場合、パソコンAへSYNとACKをオンにしたパケットを返す。ACKは承諾を意味する。最後に、SYN+ACKパケットを受け取ったパソコンAが、パソコンBにACKパケットを送るとコネクションが確立する。

 一方、コネクションを切断するときは、まず送信データが無くなったコンピューター(図ではパソコンB)からFINパケットを送る。FINは終了を意味する。

 次に、FINパケットを受け取ったもう一方のコンピューター(パソコンA)はACKパケットを返す。これでパソコンBからパソコンAへのコネクションが切断される。なお、この状態でも反対向き(パソコンAからパソコンBへ)の通信は可能である。これを「ハーフコネクト」と呼ぶ。

 残ったもう片方のコネクションは、同じようにFINとACKのパケットのやりとりによって切断される。