トランスポート層のプロトコル(TCP/IP)
- 目的
トランスポート(TCP)層はアプリケーションから生成される実際のデータを生成するネットワーク階層です。UDPとTCPの2種の方式がよく利用されます。トランスポート層では宛先のアプリケーションを指定するのに、ポート番号を利用します。
- サーバー&クライアントモデル
- サーバー&クライアントモデルとは
インターネットのサービスは多くの場合サービスを行うサーバーと、サーバーに接続しサービスを受けるクライアントから構成されます。たとえば、webサービスの場合、求めに応じてhttpの文書や画像などの情報を提供するwebサーバーとサーバーに情報の提供を請求し、ホームページとして表示を行うクライアント(ブラウザともいいます)から構成されます。
- クライアント
一般的にPC上のweb、電子メール、FTP、機能はすべてクライアントのプログラムです。これらのプログラムがサービスを実行するためには、サーバープログラムが必要です。PCでも、webやFTPのサーバーソフトは作成されており、windowsでもNTや2000では、オプション機能として組み込むことができます。
- サーバーの多重処理
一般に、サービス処理では一台のサーバーに対し複数のクライアントがネットサービス要求を行います。したがってサーバーマシンでは、複数のサービスを同時に実行する多重処理(マルティプロセス)機能が必要です。複雑なサービス処理では、各クライアントに対してサービスを行う部分を複製して処理を行います。
- ポート番号
- ポート番号
データは宛先のIP番号のネットワークまで配達され、特定のMACアドレスを有するネットワーク機器(アダプタ)に届けられます。しかし、一般に一つのサーバーで複数のサーバーが起動しています。到着したデータ(パケット)を届けるサーバーを指定する情報が必要です。そのため、アプリケーション層ではさらに、ポート番号(2バイト)で対応するアプリケーションを区別すします。ネットワーク機器で受け取ったデータは最終的には、ポート番号を利用して特定のプログラムに配達されます。
- 代表的なポート番号
- TCP
20,21:FTP(ファイル転送)
22: SSL(暗号化Trlnet)
23:Telnet(遠隔端末)
25:Mail(電子メール)
80:http(web)
- UDP
53:DNS(ドメイン名管理)
123:ntp(時刻同期)
161:snmp(ネットワーク管理)
520:rip(経路情報)
- クライアントのポート番号
クライアントの宛先のポート番号は、必要なサービスの種目(アプリケーション)で定まります。では
送り主のポート番号は、どうなるのでしょうか?これは、プログラムにも依存しますが、通常システムから自動的に割り当てられる通し番号を利用します。
- ソケットライブラリ
ネットワークを利用する場合、ソケットと呼ばれるライブラリを利用します。windowsの場合、winsockと呼ばれるライブラリが利用できます。
- UDPとTCPプロトコル
- UDPとTCP
アプリケーション層では二つのプロトコルが利用されています。一つはTCPでこれは少し手間と時間がかかりますが、安全で確実なデータを交換することができます。他はUDPで、信頼性は低くなりますが効率的な伝送が可能です。近距離で大量のデータを送る場合はUDPを利用します。
- UDPプロトコル
- 概略
インターネットのアプリケーションでは後述するTCP/IPがよく利用されますが、ルータ間程度の比較的近距離ではUDP/IPプロトコルがよく利用されます。UDPはUser Datagram Protocol の略です。また、ビデオや音声のような一連のとぎれてはいけないデータ(ストリーム)を流すに場合にもUDPが適当です。TCPは応答が必要なため、データが途切れてしまいます。
- UDPを利用しているサービス
UDPは以下のようなサービスに利用されています。 いずれも、応用分野のサービスというより、ネットワークをサポートするシステムに利用されています。
DNS:ドメイン名とIPの変換
RIP:動的経路情報の通知
NFS:ナットワークを利用したファイル共有
SNMP:ネットワーク管理
- UDPプロトコルの形式
- UDPのデータ構成(セグメント)
UDPのヘッダは宛先と送り主のポート番号、長さ、チェックサムの合計8バイトです。UDPの場合、フレームの番号やデータを含むエラーチェックを行いませんからデータが欠けたり、伝送中に一部のデータに誤りが発生してもチェックできません。
- イーサネットのUDPセグメント
LAN上では送り主と宛先のMACなどを先頭に持ち、フレームデータを内容とするフレーム構成のデータが流れます。フレームデータは、送り主と宛先のIPを明示したIPヘダとデータから構成されます。このIPデータは、さらに、宛先と送り主のポート番号とUDPデータから構成されます。UDPデータには実際のデータ(情報)が記録されます。
- UDPのフレーム
ここでは、UDPのセグメントを含めた、全体のフレー構成を示します。アプリケーションで生成されたデータに、ポート番号、IP番号、MACアドレスを含むヘッダが負荷されて、イーサネットを流れます。
- TCPプロトコル
- TCPの構成(パケット)
TCPのデータをここではパケットと呼びますが、パケットの呼称は一般にネットワークを流れるすべてのデータに使用する場合もあります。TCPのデータもUDPと同様ですが、異なるのはヘダの情報がUDPと比べて大きくなり24バイトになります。TCPでは、分割してデータが送られた場合の再構成の処理や、伝送エラーの処理を行います。したがって、遠距離でも比較的安全にデータを送ることができます。
- TCPのパケット構成
- コネクション
TCPでデータを送るには、まず、コネクションを行い、サーバーからの接続の承認をとる必要があります。これをコネクション方式といいます。UDPの場合、このコネクションは不要です。
- データ受け取り
TCPでは、一定量のデータを受け取りチェックが終わると、「ここまでのデータを受け取りました」というパケットを返します。この受け取りがくるまでは、サーバーは送信データを保持し再送に備えます。TCPではさらに長いデータを分割して送った場合、順序番号で組み立て直す処理も行います。
- エラー再送処理
TCPではデータの伝送エラーに対する処理が行われます。cs(チェックサム)により受け取ったパケットに対するエラーチェックを行い、エラーが検出された場合、自動的にパケットの再送を要求します。送信側では再送要求を受け取ると、同じパケットを再送します。伝送エラーの大部分は一時的な外部雑音の影響なので、再送により正しいパケットを受け取ることができます。
- チェックサム
チェックサムはパケット全体の2バイトの和です。送り側でこの計算を行いCSに記録して送り出します。受け側で同じ計算を行い、一致を確認します。
- サービスしているポート
現在サービスしているポートは次のコマンドで知ることが出来ます。これはLinuxのサーバーの例です。
\>netstat -a
- 例
[root@hibashi mito]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 138 hibashi:telnet 150.42.41.158:1154 ESTABLISHED
tcp 0 0 hibashi:domain *:* LISTEN
tcp 0 0 localhost.locald:domain *:* LISTEN
tcp 0 0 *:www *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:pop3 *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
udp 0 0 *:bootps *:*
- ネットワークの統計量
ネットワークを通して送受信したパケットの統計量を次のコマンドで表示することが出来ます。
\>netstat -s
- 例
一部のデータは削除しました。ICMP,TCP,UDPの3部門に分割して集計しています。
F:\>netstat -s
IP Statistics
Packets Received = 24240
Received Header Errors = 0
Received Address Errors = 1579
Received Packets Delivered = 24102
Output Requests = 10480
Routing Discards = 0
ICMP Statistics Received Sent
Messages 318 95
Errors 237 0
Destination Unreachable 3 0
Time Exceeded 0 0
Echos 32 63
Echo Replies 46 32
TCP Statistics
Active Opens = 290
Passive Opens = 10
Failed Connection Attempts = 18
Reset Connections = 163
Segments Received = 6670
Segments Sent = 7256
UDP Statistics
Datagrams Received = 3471
No Ports = 13692
Receive Errors = 0
Datagrams Sent = 2357
- NAT、IPマスカレード
- NAT
インターネットで利用されるグローバルIPを付加したTCPパケットを生成するサーバーは、IPの数の問題や外部からの不正利用に対処する必要があるため、必要最小限な数に制限する必要があります。そこで、通常のパケットはプライベートアドレスを利用し、インターネットを利用するときのみ、ルータ(ゲートウエイ)でパケットを送り主のIPをグローバルIPに付け替えて送る方式が実用化されました。この方式をNATといいます
簡単な方式では、同時にインターネットに送り出せる装置はNATが保有するグローバルIPの数に限定されます。
- IPマスカレード
NATの方式をさらに進めてNATを行う装置側でIPのみでなくポート番号も識別して送り出し、返送パケットに対し、IPとポートを元の送り主にあわせて戻す方式が利用されるようになりました。この方式をIPマスカレード方式と言いますが、広義のNATと呼ばれる場合もあります。
- セキュリティ
IP番号だけでなくポート番号もチェックしてパケットを配送する手法は、特定の相手の特定のポートのパケットのみを通過する(阻止する)ことが可能になります。この手法はIPやポートフィルタと呼ばれ、不正アクセスを防ぐ基本的な手法として利用されます。
- プロクシーを利用
- プロクシー(代理)サーバーの必要性
NATは一般のパケットを対象にしましたが、アプリケーションのレベルでプライベートなIPでインターネットを利用する方式にプロクシーの利用があります。プライベートなIPを設定したアダプタからインターネットに接続するにはパケットをまず、プロクシ(代理)サーバーに送ります。代理サーバーは、ローカルなPCからインターネットへのデータ要求を受けると、代理となって情報を取得し、取得後その情報を送り主に返してくれます。
- プロクシーの利用
webで代理サーバーを利用するにはエクスプローラのツールメニューからインターネットオプションを選択し、「接続」、「LANの設定」と進み、ここで、「プロクシサーバを利用する」をチェックして、以下のIPアドレスとポート番号を指定します。ポート番号の意味は後で詳しく説明しますが、webの情報を受け取る窓口の番号の意味です。
これで、代理サーバーを経由して、ホームページの閲覧ができます。
- インターネット接続
- インターネット接続
インターネットに接続するには、既設のネットワークまで接続する必要があり通常ネットワーク業者にサービスを依頼します。ここでは、専用線やCTAVなどを利用した常時接続型の接続方式を説明します。
- CATV(ケーブルTV)利用
- インターネットサービス
CATVは、TV信号をケーブルで配信するサービスですが、使用していない周波数帯域を利用して、インターネットへの接続サービスを行っています。
- ケーブルモデム
CATVを利用してインターネットに接続するには、接続業者から貸与されるケーブルモデムをイーサLANカードで接続します。サービス企業により異なりますが、ハブを経由した接続が可能な場合、許容台数まで同時に利用が可能です。この場合、ハブに接続する各PCは業者側のDHCPにより接続情報を取得します。
- IPアドレス
CATVから取得するIPは多くの場合プライベートアドレスです。したがって、インターネット側から、CATV経由で接続したPCにアクセスすることはできません。オプション料金でインターネットに接続するグローバルIPを取得することができる場合もあります。
- xDSLの利用
- 電話線のみを利用する
4KHzまでの電話の音声信号の上の周波数帯域を利用し、上り32-640kb/s、下り1.5M-6Mb/sのデータ伝送を行うことができます。音声とデータは30Khzの周波数で電話機と交換機の直前でスプリッタにより分離します。交換機を利用しないで、電話線(これはイーサネットと同じツイストペア線)のみを利用する方法です。上りと下りの速度が異なるのは、平均的なネットワークの利用状況に合わせたためで、物理的な条件ではありません。
- xDSLモデムの接続
電話機の音声信号とxDSLの信号はスプリッタによって分離/併合します。PCからxDSLまでの接続はCATVの場合と同様です。xDSLモデム電話側の信号をスプリッタに接続します。PCからの信号は電話機からの信号と混ぜ合わせられて電話線に送られます。逆に、プロバイダからの信号はスプリッタで分離されネットワークの信号のみが、xDSLモデムに届きます。したがって、PCのインターネット利用と電話機は同時に利用できます。
混合と分離は周波数で分離していますから、ISDNとxDSLの同時利用はできません。
- xDSLの利用
- IPアドレスと動的IPアドレス
xDSLで接続する場合、多くの業者で一時的なグローバルIPを提供されますが、固定したIPアドレスではありません。そこで、動的なIPアドレスシステムが利用されるようになりました。これは、DNSのシステムが常時データを交換していることを利用し、ドメイン名とIPの対応関係を動的に変更できるようにしたものです。
従来は、DNSの管理者しか変更できいなかった、DNSのデータを認証機構を利用して一般の利用者でも変更できるようになりました。このサービスはホームページ経由でりようすることもできます。
- 専用線の利用
- 専用線はレンタル
インターネットに常時接続するには、すでにインターネットに接続しているルータまで、専用線で接続します。通常、専用線、および、専用線用のモデムはネットワーク業者から月単位の契約でレンタルします。
- 内部LANとの接続
下の例では、DNSやwebなどのサーバーをクラスCの150.42.41のセグメントに接続します。外部からのインターネットアクセスは、150.42.41のセグメントには入りますが、内部へのアクセスはルータで阻止されます。
内部からのインターネットの要求はルータAを通り、プロクシサーバーから結果を受け取ります。webサーバーはルーターBを経由して、専用線を利用してインターネットに接続しデータを受け取ります。ルーターBの専用線側のIPは接続する上位のドメインのIPアドレスとなります。
-
- バリアセグメントとファイアーウオール
150.42.41のセグメントは外部からの接続を直接受け取りますから、どのようなアクセスに対しても耐えられるよう、注意して構築する必要があります。このセグメントをバリア(武装)セグメントと呼ぶことがあります。
ルータAは外部からの内部のLANに対し直接の接続を遮断し、防御する役割が必要です。この防御機能をファイアーウオール(防火壁)と呼ぶことがあります。
- ブロードバンドルータ
- ブロードバンドルータ
個人や小規模な企業で複数台のPCをインターネットに接続するための簡単で安価なルータが実用化されています。これには、接続業者から割り当てられるIPが1種に限定されている場合、複数のPC(クライアント)でIPを共有することが出来ます。NATやDHCP機能が組み込まれています。
- 機能
ルータには複数のLAN側端子と、一つのWAN側端子があります。LAN側に接続するPCにはDHCPでプライベートIPを渡します。WAN側はCATVたxDL側より、IPを受け取ります。ルータはLAN側のゲートウエイとなり、PCからのインターネットへのアクセス要求を受け取り、送り主のIPとポートを自分のWAN側の番号に置き換えて送ります。
インターネットから受け取ったデータは元の送り主のIPとポートに差し替えて、LAN側に送ります。
- 接続
- 注意
標準のルータの設定では、サービス要求に対しWAN側から戻されたデータには対応しますが、WAN側からの接続要求には応答しません。したがって、WANからLAN側へのpingにも応答しませんし、LAN側にサーバーを設置することも出来ません。一部のインターネットゲームにも対応しません。
ただし、設定によっては、双方向のルータとしたり、LAN側にサーバーを設置することも出来ます。
- ダイアルアップ接続
以上は、各種のケーブルを利用した常時接続方式です。インターネットを利用するには、他に、電話線を利用したダイアルアップ方式がありますが、これは別項目で説明します。
- まとめ
- ポート番号
宛先と受け取りのポート番号でアプリケーションを識別する
- UDP
高速、簡単プロトコルで事前に接続許可を得る必要がない。
- TCP
確認しながらパケットを受け取る。事前に接続許可を得る必要がある。
- NAT、IPマスカレード
NATを利用すると、プライベートなIPを持つPCでもインターネットにアクセス出来る
- ポートフィルタ、ファイアーウオール
IPやポート番号を利用して配送の制限を行う
- ブロードバンドルーター
広義のNAT機能を備えたゲートウェイ
トップに戻る