SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

仮想ネットワークの実装で学ぶTCP/IP

仮想ネットワーク実装でTCP/IPを学ぼう(4)
― トランスポート層の勘所

仮想ネットワーク実装でTCP/IPを学ぼう(4)


  • X ポスト
  • このエントリーをはてなブックマークに追加

 この連載では仮想的なLANを実装することにより、目に見えないTCP/IPプロトコル群を、手を動かして目で実際に確認しながら習得することを 目的としています。今回はトランスポート層のプロトコルとそれに関係する事柄について解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この連載では仮想的なLANを実装することにより、目に見えないTCP/IPプロトコル群を、手を動かして目で実際に確認しながら習得することを目的としています。ただし、TCP/IPのすべてを解説するのは分量上不可能ですし、余計に読者を混乱させてしまいますので、筆者が重要と考えている部分だけ解説します。またサンプルコードや本記事に出てくるIPアドレスとMACアドレスについては架空のものであり、実際にそのIPアドレスを取得した組織などを意識したものではありません。あらかじめご了承ください。

 今回はトランスポート層のプロトコルとそれに関係する事柄について解説します。

トランスポート層の概要

 この層の役割は、アプリケーション層のデータを2台のホスト間で、どのようにやり取りをするのかを既定することです。特徴は通信方式の信頼性です。

 純全たるこの層のプロトコルは今の所2つしか存在しません。それは、UDP(User Datagram Protocol)とTCP(Transmission Control Protocol)です。簡潔に説明すると、TCPは信頼性のあるコネクション型通信を行うための機能を提供し、信頼性はないものの大量を素早く送信する、コネクションレス型通信を行うための機能を提供するのがUDPです。コネクション型とは、通信中に設定される仮想的な通信路のことです。この通信路は、送受信者それぞれのIPアドレスと、アプリケーション・ポート番号の組み合わせで識別される仮想的なものです。

 なお、アプリケーション・ポート番号(一般的にはポート番号と呼ぶ)とは、アプリケーション層のプロトコルを識別するための番号だと考えてください。

 これで概要の説明を終えましたので、次項でUDPについて詳しく説明します。

UDP

 UDPはコネクションレス型のプロトコルで、データを伝送するための非常に簡易な機能だけを提供するプロトコルです。UDPを既定しているRFCも768だけです。アプリケーション・プログラムに対して、IPデータグラムをそのまま利用させる仕組みだと考えると良いでしょう。そのためヘッダフォーマットも単純です。

UDPのヘッダフォーマット
UDPのヘッダフォーマット

 UDPの利点はデータが正しく送信されたかや、データの順序制御などを行わないその簡潔さにあります。一般的に信頼性のある通信は好ましいように思いがちです。しかし、信頼性を確保するにはさまざまな処理をする必要があり、オーバーヘッドを生むことになります。このオーバーヘッドが許容できず、高い信頼性を必要としないアプリケーション層のプロトコルにとって逆に高い信頼性はネックとなってしまいます。ですからUDPの簡潔さが利点となるのです。UDPは、DNS,TFTP,BOOTP,SNMP,DHCP,RADIUSなど多くのプロトコルが使用しています。

 また、ブロードキャストとマルチキャストというUDP特有のデータ送信方式が使用できるのも利点です。ブロードキャストとマルチキャストは、複数の宛て先にデータを送信する通信方式です。TCPはコネクション型なので、ブロードキャストとマルチキャストはできません。

 次項でブロードキャストについて詳しく説明します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ブロードキャスト

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
仮想ネットワークの実装で学ぶTCP/IP連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4209 2010/04/27 12:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング