Web教材一覧ネットワーク

トランスポート層とTCP/UDP

学習のポイント

トランスポート層には2つの機能があります。

を持っています。ここでは,トランスポート層に属するTCPとUDPについて学習します。

TCPの位置づけ

キーワード

TCP,TCPヘッダ,ウインドウ制御,フロー制御,輻輳制御,UDP,リアルタイム通信


TCP(Trasmission Control Protocol)

TCPヘッダ

TCPヘッダは,次のようになっています。

TCPヘッダ

ポート番号

TCPから上位のプロトコルを示す番号です。これにより,HTTPやPOP3などのアプリケーションが起動します。その標準的なものはウェルノウン(well-known)ポート番号といいますが,その主なものを掲げます。

    ポート番号 プロトコル  サービス内容
      80  http   Webページ閲覧
     443  https  同上(セキュリティ)
      25  smtp   電子メール(送信・転送)
     110  pop3   同上(受信)
     143  imap   同上(IMAP)
      20  ftp    ファイルの転送(データ)
      21  ftp    同上(制御)
      23  telnet 遠隔ログイン
      53  DNS    名前解決(UDPでも使える)

ftpやhttpなどの詳細は,別章「インターネットのアプリケーション」で取扱います。

コネクション型通信

コネクション型通信

TCPは,コネクション型通信を行います。コネクション型とは,ホスト間で相互の状況を確認してからデータを送り,データの到着を確認してから次のデータを送るようにして,通信を確実に行う方法です(IP単独での通信,また後述のUDPはコネクションレス型であり,このような通信の保証はありません)。

コネクションの確立

データ送信に先立ち,ホストAとホストBの間で通信の準備をする必要があります。それをコネクションの確立といいます。
 まず,ホストAはホストBにSYN(SYNchronization:同期)を送ります。ホストBはそれを受けて要求を受け付けたACK(ACKnowledgement:確認応答)とSYNを返信します。それを受けてホストAはACKを送ります。
 これで送信する準備ができました。なお,このように3回のやりとりをするので,3ウエイハンドシェイクといいます。また,一般に相手との確認をとることをネゴシエーションといいます。

データの送信

ホストAは,データを送信します。ホストBはそれを受信するとホストAにACKを戻します。それを受けてホストAは次のデータを送ります。このとき,一定時間内にACKが来ないと,ホストAは同じデータを再送します。
 しかし,ACKが返信している間に再送すればデータが重複しますし,すべてのデータが同じ経路を通る保証はありませんから,ホストAが送信する順序とホストBに到着する順序が異なる場合があります。それを整理するのが,TCPヘッダにある「シーケンス番号」です。それにより,ホストBは次に受信するべきシーケンス番号をホストAに伝えます。このようにして,データが順序正しくホストBに送られます。

コネクションの解放

すべてのデータを送信完了したら,コネクションを解放します。まず,ホストAからFIN(FINish:終了)を送り,ホストBからACKを返信します。次に逆にホストBからFINを送り,ホストAがACKを戻すことにより終了します。
 なお,SYN,ACK,FINなどはTCPヘッダの「コントロールビット」に記入されます。

フロー制御

ウインドウ制御とフロー制御(流量制御)

データを1個送受信するたびにACKを取り交わすよりも,一度にいくつかのデータをまとめて送るほうが効率的です。ACKを待たずに送るデータの大きさをウインドウサイズといいます。
 ホストBが負荷が高い状況では,ホストAからのデータを受信しきれない場合があり,それにより再送が必要になって効率が下がる場合があります。それを防ぐために,ホストBはホストAに受信可能なサイズ,すなわちウインドウサイズを送ることにより,ホストAの送信量を制御します。これをフロー制御といいます。

輻輳(ふくそう)制御

輻輳とは,ネットワークが非常に混みあっており,正常な通信ができない状況のことです。通信が始まった直後では,経路のどこが混雑しているかわかりません。そのときに大量のデータを送信すると,輻輳が起こる危険があります。それを避けるために,輻輳ウインドウを設定しておき,通信開始時は一度に送る量を少なくして,ホストBから返されるウインドウサイズとを比較しながら,次第に増やしていく方法をスロースタートといいます。

UDP(User Datagram Protocol)

UDPは,TCPと同様トランスポート層のプロトコルですが,IPと同様のコネクションレス型の通信を行います。ポート番号を持つこと,チェックサムをすること以外には,IPとほとんど違いはありません。
 コネクション型通信をするための情報が不要なので,UDPヘッダは非常にシンプルです。

UDPヘッダの形式

コネクションレス型通信とは,ホストAとホストBが接続したら,直ちにデータを一方的に送りつける方式で,エラーがあってもわかりませんので再送機能もありませんし,フロー制御機能もありません。それだけ,信頼性が低いといえますが,逆に伝送効率は高くなります。
 それで,次のような用途に用いられます。

マルチメディア通信
動画や音声では,データの一部が失われても一瞬の出来事に過ぎず,数値や文字データのような深刻な影響はありません。逆に,伝送効率が悪いと途中で途切れてしまうので困ります。それで,ストリーミングでの音楽や映画の配信にはUDPが用いられます。
少量データの同報通信
送信するデータが少ないとき,TCPでは本来のデータ伝送時間に対するオーバーヘッドの時間の割合が大きくなります。しかも,多数の相手に同報するときはなおさらです。それで,ルーティングやDNSなどでは,UDPを用いるのが適切です。

リアルタイム通信

リアルタイム通信とは,VoIP(IP電話),ライブ中継など,大量データを迅速に送信する通信です。通信効率を高めるためにTCPは向いていません。また,UDPはデータの到着間隔が一定していない(それをジッタといいます)欠点があります。ジッタが大きくなると,音声や画像が乱れますし,さらに大きくなると再生できないこともあります。
 それを解決するにはバッファを設けておき,それでジッタを吸収する方法がとられますが,バッファを大きくするとデータが蓄積されるまで待つので,遅延時間が大きくなります。これは電話や電子会議などの双方向通信には不向きです。
 このようなリアルタイム通信でのプロトコルに,UDPをベースにしたRTP(Real-Time Protocol)とそれを補助するRTCP(RTP Control Protokol)があります。


理解度チェック

第1問

次の文のうち,正しいものには〇印をつけ,誤りである文には×印をつけて誤りの個所を訂正しなさい。

  1. TCP/IPでのトランスポート層に属するプロトコルに,TCPとIPがある。
  2. TCPはコネクション方式,UDP,IPはコネクションレス方式である。
  3. コネクションの確立とは,データの送信に先立ち,ホストAとホストBの間で通信の準備をすることである。
  4. コネクションの確立と解放を電話の例でいえば,受話器を取り上げたときがコネクションの確立で,受話器を置いたときが解放に相当する。
  5. TCPでは,パケットの到達順序を送信した順序に並べ替えす機能がある。
  6. TCPヘッダのポート番号により,Webページ閲覧や電子メール送信などのアプリケーションにデータを渡す。
  7. TCPでウインドウを大きくすれば,転送効率は向上し,再送の確率は低くなる。
  8. TCPでは,転送効率を上げるために,当初はウインドウを大きくして転送し,輻輳が起こるようならウインドウを少なくする方法をとっている。
  9. UDPは,少量データの同報通信に適している。
  10. RTPは,ジッタを吸収することにより,音声や画像の乱れを防ぐので,リアルタイム通信に適している。

第2問

問1 テクニカルエンジニア(ネットワーク)平成14年秋問24
 TCPヘッダに含まれる情報はどれか。
 ア あて先ポート番号      イ 発信元IPアドレス
 ウ パケット生存時間(TTL) エ プロトコル番号

問2 テクニカルエンジニア(ネットワーク)平成15年秋問26
 UDPのヘッダフィールドにはないが,TCPのヘッダフィールドには含まれる情報はどれか。
 ア あて先ポート番号   イ シーケンス番号
 ウ 送信元ポート番号   エ チェックサム

問3 テクニカルエンジニア(ネットワーク)平成13年秋問32
 コネクションレス型通信に関する記述として,適切なものはどれか。
 ア コネクションレス型通信の一つであるUDPによる通信では,回線交換や専用線でのコネクションレス型通信は行えない。
 イ 送信するすべてのパケットに,あて先を示す情報を付加する。
 ウ 常にPVCと呼ばれる接続形態がとられ,あらかじめ通信相手との通信パスを設定しておき,接続動作なしで通信を行う。
 エ パケットごとにコネクションの確立や解放を行うので,大量のデータ通信には不向きである。

問4 テクニカルエンジニア(ネットワーク)平成14年秋問25
 UDPに関する記述のうち,適切なものはどれか。
 ア コネクションレス型のデータ転送プロトコルであり,データをIPデータグラムで転送する。
 イ 送信データのシーケンス管理は,ヘッダの順序番号によって行う。
 ウ データのフロー制御を行うので,受信バッファの空き状態に合わせてデータを送ることができる。
 エ データをすぐに送りたい場合は,ヘッダにある転送強制フラグを使用する。

問5 テクニカルエンジニア(ネットワーク)平成16年秋問29
 ネットワークのフロー制御の一つに,受信確認をメッセージ単位で行わずに,すく数のメッセージを連続して送信する方法がある。この方法において,受信確認を待たずに送信できる最大メッセージ数を何と呼ぶか。
 ア ウインドウサイズ イ セルサイズ  ウ チャネル数 エ レイヤ数

問6 テクニカルエンジニア(ネットワーク)平成15年秋問45
 ネットワークの制御に関する記述のうち,適切なものはどれか。
 ア TCPでは,ウィンドウサイズが固定で輻輳(ふくそう)回避ができないので,輻輳が起きると,データに対してタイムアウト処理が必要になる。
 イ 誤り制御方式の一つであるフォワード誤り訂正方式は,受信側で誤りを検出し,送信側にデータの再送を要求する方式である。
 ウ ウィンドウによるフロー制御では,応答確認のあったブロック数だけウィンドウをずらすことによって,複数のデータをまとめて送ることができる。
 エ データグラム方式では,両端を結ぶ仮想の通信路を確立し,以降はすべてその経路を通すことによって,経路選択のオーバヘッドを小さくしている。


本シリーズの目次へ