ネットワークでやりとりされるパケットには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 Active会員の登録が必要です

日経xTECH Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。