◆LAN特集◆ 10/100BASE-Tはなぜ半二重になるのか

(1)通信の中身とTCP/IP

LANの中でも今はイーサネットが主流な訳ですが、そのイーサネットの中核を成すプロトコルTCP/IPだと思います。通信の中身を見る前に、そもそもLANのパケット通信とはどうなっているかですが、こちらPICマイコンの解説がいいかと思います。

図1OSIレイア図
このような図は色々な場所で載っていて、見かけたことがあるかと思います。この図よくわからないんですよね。
ではPICマイコンに於けるIPプロトコルTCPプロトコルの中身を電子工作室さんからもってきてみましょう。
※1 IPフレーム

図2IPフレーム
※2 TCPフレーム

図3TCPフレーム
上記二つですが、よーーーく見るとTCPフレームの上の方にIPヘッダというIPフレームのデータ以外の部分が乗っているのがおわかりでしょうか?そうその上にはイーサネットヘッダも乗っています。
なにやらいきなり難しそうでごめんなさい。この図の細かいところはどうでもいいのですが、実際のフォーマット見たほうがいいだろうと思ってこれを選びました。図3の構造は、イーサネットヘッダ+IPヘッダ+TCPヘッダそして実際のデータの順番で重なっています。これは図1のOSIレイアの逆の重なり順番でつみあがっていることに注目してください。

イーサネットヘッダには、相手と自分のMACアドレスが入ります。そしてIPヘッダーには相手と自分のIPアドレスが入っています。この他通信には必要なポート番号は(これも相手と自分の)TCPヘッダーに入っています。この3つのパラメーターがそろって初めてTCP/IP通信が可能となっています。
はて?
では通信を始める最初の段階でIPアドレスはわかったとして、MACアドレスはわかりようがないですね。ポート番号については、アプリケーションで決められていたりするので、大体わかります。なので、初めて通信するときは

IPアドレスを指定して、そのIPアドレスの相手のMACアドレスを調べる

必要があります。通常"arp”コマンドなんかを使って、指定のIPアドレスMACは何番かブロードバンドで送信します。該当する機器はそれに答えて、MACアドレスを送信、そしてIPアドレスMACアドレスが関連づいたテーブルが作成されます。
上記の説明はこのサイトを見るとわかりやすいかと思います。実際にはTCPプロトコルには、返答するしくみやハンドシェイク、ハンドシェイク後の連続通信などの規定があります。また、イーサネットプロトコルでは、ひとつのパケット通信に於いて、必ず応答が必要な訳ではありません(UDPプロトコルなどはACKが必要ありません)。つまり投げたら投げっぱなしというのが基本になっています。(ここがポイント)送出されたデータはLANのネットワークをめぐってぐるぐると回り、自分宛と思われるデータは取得し、それ以外のデータは破棄されます。送出側も確認はとらず、エラー(コリジョンなど)が帰ってこなければ基本的には通信成功とみなします。そのための確認コードがパケット内にセットされていて受信側は正しく受け取れたか判断できるようになっています。まとめます。

  • TCP/IP通信では、自分と相手のMAC,IPアドレスとポート番号が必要
  • パケットはレイア層の下から先頭にくっつくカプセル型
  • パケットは基本的に投げっぱなし。応答はない場合もある
  • 問題があった時、再送などのリクエストを発行する

※IPプロトコルのみで通信するコマンドは、MACアドレスを調査する”arp”コマンド以外にはICMPプロトコルの”ping"などがあります。その他のコマンドややり取りは"TCP"プロトコルか”UDP"プロトコルによってヘッダーが追加されます。ブラウザで表示するHTTP,ファイル転送のFTP、メールのSMTP,ネーム解決のDNSIPアドレス自動振り分けのDHCPなどはさらにひとつ上の層(データではさらに下に追加される)となります。
>目次に戻る