ネットワークでやりとりされるパケットにはTCPによるものとUDPによるものがある。UDPはDNSやDHCPといったプロトコルで使われるものの、やりとりされるパケットの数はHTTPで主に使われるTCPのほうが圧倒的に多い。

 TCPの理解を深めるため、Wiresharkを使ってTCPのシーケンスを確認しよう。正しいシーケンスを知っておけば、TCPに関連するトラブルへの対処にも役立つ。

最初にコネクションを確立

 TCPの特徴は、パケットを確実にやりとりできる仕組みを備えていることだ。

 TCPによる通信のシーケンスは、(1)コネクションの確立、(2)データのやりとり、(3)コネクションの終了の3つの段階に分けられる。

TCPでは、データをやりとりする前に3ウエイハンドシェークでコネクションを確立する
[画像のクリックで拡大表示]

 コネクションは、確実に通信できるように確保する仮想的な通信路を指す。コネクションを確立するために、TCPで通信を行う機器は通信相手とやりとりする。このやりとりをハンドシェークと呼ぶ。

 TCPでは、コネクションを確立して初めてデータのやりとりを始められる。データのやりとりが終わると、コネクションを終了する。このような仕組みを採用することで、第三者が送信元を偽って通信するといった攻撃を防ぐ。

 TCPのハンドシェークでは、コネクションを確立するために、通信を開始する機器と送信相手の間でパケットを3回やりとりする。これを「3ウエイハンドシェーク」と呼ぶ。

 3ウエイハンドシェークではまず、通信を開始する機器が、同期を表す「SYN」という特性が記されたTCPパケットを通信相手に送る。これを受け取った通信相手は、同期を表すSYNと承諾を表す「ACK」が記されたTCPパケットを送信元に返す。通信を開始した機器がSYN+ACKのTCPパケットを受け取ったら、通信相手にACKのTCPパケットを送る。これら3回のやりとりでTCPのコネクションを確立する。

Wiresharkでやりとりを見る

 TCPの3ウエイハンドシェークで行われるこうしたやりとりをWiresharkで確認してみよう。

 パソコン上でWiresharkを起動し、ネットワーク内のプリンターやサーバーなどにアクセスする。パケットキャプチャーが終わったら、キャプチャー結果をファイルに保存する。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら