TCP/IPアレルギー撲滅ドリル【総まとめ編】

パケット君の冒険旅行

福永勇二
インタラクティブリサーチ
2005/3/29


 Webページのリクエスト

・httpは何をリクエストするのでしょうか?

 httpは、Webサーバに格納されているhtmlファイルなどを読み出したり、反対にWebサーバにデータを送信するためのプロトコルです。WebブラウザからWebサーバに対して、例えば「xxxというファイルを読み出してください」「yyyというデータを送信します」といったリクエストを送信すると、要求したファイルを受信したり、送信データをWebサーバに届けることができます。

・httpの働きについては「Webのベースになったアイデアがあるそうですが」を参照してください
・httpのメソッドについては「GETメッセージをもう少し詳しく説明してください」を参照してください

・httpはTCPですかUDPですか?

 DNS問い合わせがUDPを使うのに対して、httpはTCPを使います。TCPにはデータのチェックと再送などの仕組みがあるため、UDPよりも正確な通信ができます。その半面、通信を始める前には、あらかじめ通信相手との間で通信開始を伝え合うなど、通信準備に多少手間が掛かる側面もあります。

  TCPを使って通信をするhttpは、通信に先立ってあらかじめ相手との間で通信開始を伝え合わなければなりません。

・TCPの特徴は「TCPの迷宮をさまよってみませんか?」を参照してください

・httpコマンドが送り出すまでを説明してください

 では図5を使って、httpコマンドがEthernetに送り出されるまでを説明します。

 名前解決の時に、WebブラウザはURLの中から接続先Webサーバのドメイン名を抜き出しました。これと同様にファイルの位置を示す情報を抜き出します。例えばユーザーが入力したURLがhttp://www.atmarkit.co.jp/fnetwork/accesstest/at.htmlならば、ファイルの位置を示す情報は/fnetwork/accesstest/at.htmlになります。

 Webブラウザはファイルを読み出すメソッドにこの情報を加えて、サーバに送り出すリクエストを作り出します。作り出したリクエストは、接続するWebサーバのIPアドレス、ポート番号と一緒にTCPを処理するプログラムに引き渡されます。このとき指定するIPアドレスは、先にリゾルバが回答したものです。またポート番号には通常80番を指定します。

 なお、TCPではデータのやりとりを始める前と終えたときに、通信を開始・終了するための決められた手順を踏みます。この図では省略していますので注意してください。そのやりとりは、この図とほぼ同じ手順で、TCPヘッダの中に開始・終了の情報が入ります。またリクエストの部分は空っぽになります。

図5 Webブラウザがリクエストを送信する(図クリックで拡大表示)


・ファイルを読み出すメソッドは「サーバとはどんなメッセージをやりとりするんですか?」を参照してください
・TCPの開始・終了は「TCPの通信を簡単な例で説明してください」を参照してください

 情報を受け取ったTCP処理プログラムは、受け取ったポート番号を含んだTCPヘッダを作り出します。これをリクエストにくっつけてTCPパケットを作り、それをIP処理プログラムに引き渡します。

 TCPパケットを受けとったIP処理プログラムは、あて先IPアドレスを含んだIPヘッダを作り出します。それをTCPパケットにくっつけてIPパケットを作り出します。またarpを利用してあて先IPアドレスからMACアドレスを得ます。こうやって準備したIPパケットとMACアドレスをEthernetに引き渡します。

 これらを受け取ったEthernetでは、IPパケットの前後に、受け取ったMACアドレスを含んだイーサネットヘッダと、データをチェックするためのフレームチェックシーケンスを付け、Ethernetフレームを作り出します。こうして作り出したEthernetフレームがLANに送出されます。

・TCPとUDPの処理は同じなのですか?

 この説明ではTCP処理プログラムでの処理内容を簡素化して書いています。しかし実際のTCP処理プログラムは、信頼性の高い正確な通信を効率よく行うために、ここでは書き切れないくらい複雑な処理をしています。詳しくは本ページのTCPの説明を参照してください。

・TCPの特徴「ウィンドウ制御」の説明は「分かるスライディングウィンドウ、見えるEthereal」を参照してください
・TCPの特徴「フロー制御」の説明は「いつでも受信できるとは限りません!」を参照してください
・TCPの特徴「スロースタート」の説明は「ウィンドウは主導権と良心のはざまで」を参照してください
・TCPの特徴「再送」の説明は「それでも不正確なデータを受け取ったらどうするの?」を参照してください

・LANに送出された後はどうなりますか?

 LANに送出した後は、名前解決の場合と同様に、まず接続先コンピュータが自分のMACアドレスあてのEthernetフレームを拾い出します。フレームチェックシーケンスを使って受信内容が正しいかなどのチェックを行ったら、次にIP処理プログラムに情報を引き渡します。イーサヘッダには、そのデータがIPパケットであると示されているので、受信したデータの引き渡し先はIP処理プログラムであることがすぐに判断できます。

 IP処理プログラムは、IPパケットのあて先が自分あてであることを確認し、またその他必要な処理を行います。その後、IPヘッダを取り除いてから、情報をTCP処理プログラムに引き渡します。どのプログラムに引き渡すかは、IPヘッダに含まれている情報を見ます。この場合はIPヘッダにTCPの情報であることが示されています。

 TCP処理プログラムは、受け取った情報からTCPヘッダを取り除き、情報本体を取り出します。なお、前述しましたが、TCPは情報の再送や受信確認をしない送信など、複雑な処理をしていますので、こうやって受け取ったデータをそのままプログラムに引き渡すとは限りません。ほかの情報を受け取るまでためておいたり、送り直したりなどを行って、必要な情報がすべてそろってから、プログラムに引き渡します。

 情報を引き渡す先のプログラムは、TCPヘッダに含まれるポート番号によって決めます。80番宛のデータを待っているのは、一般にhttpです。

「名前」を「解決」するとは?

TCP/IPアレルギー撲滅ドリル【総まとめ編】(1)目次
1  冒険の舞台はいずこ?
2  「名前」を「解決」するとは?
3  Webページをリクエストする
4  読み出し結果を受信する
5  ルータを経由するケース

関連リンク
  連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編)
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(下位レイヤ編)
連載:インターネット・プロトコル詳説

連載:ルータの仕組みを学ぼう
ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜


「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間