Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/09/18 14:00

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

目次

はじめに

 この連載では仮想的な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はコネクション型なので、ブロードキャストとマルチキャストはできません。

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


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • インドリ(インドリ)

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

バックナンバー

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

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5