ネットワーク講座 > TCP/IPプロトコル
TCP/IPネットワークアーキテクチャとは?†
TCP/IPネットワークアーキテクチャとは、TCPやIPを中心とした、様々なプロトコルの集まりを指しています。
TCP/IPネットワークアーキテクチャは、4つの階層から成っています。
OSI参照モデルとの対応は?†
ネットワークインターフェース層とは?†
TCP/IPのネットワークインターフェース層は、OSI参照モデルの物理層に相当します。
ネットワークインターフェース層に含まれるプロトコルは、
TCP/IPでは、ネットワークインターフェース層の仕様を特に規定していません。
つまり、TCP/IPのプロトコルは、ネットワークインターフェース層から独立しているので、あらゆるネットワークでTCP/IPを利用した通信を行うことができます。
インターネット層とは?†
TCP/IPのインターネット層は、OSI参照モデルのネットワーク層に相当します。
インターネット層には、TCP/IPの中心的なプロトコルである、IPが含まれています。
IPの他に、ARP、ICMP、OSPFなどのプロトコルも含まれています。
トランスポート層とは?†
TCP/IPのトランスポート層は、OSI参照モデルのトランスポート層とセッション層の一部に相当します。
トランスポート層には、TCPとUDPの二つのプロトコルがあります。
アプリケーション層とは?†
TCP/IPのアプリケーション層は、OSI参照モデルのセッション層の一部、プレゼンテーション層、アプリケーション層とに相当します。
アプリケーション層には、HTTP、DNS、DHCP、SNMP、SMTPなど、数多くのプロトコルが含まれています。
プロトコルの連携によるデータの流れは?†
例えば、WebサーバへアクセスしてWebサイトを見る場合、次のようなプロトコルが連携しています。
http://ascii.jp/elem/000/000/424/424788/index-2.html
http://www.hndtc.co.jp/p090/p090_004_tcpip.html
http://takaq1.plala.jp/contents/jitaku_server/network/network2-7.htm
http://togodb.seselab.org/pukiwiki/Network/%B3%AC%C1%D8%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB%A4%C8TCP/IP.html
階層ごとのデータの名称は?†
TCP/IPネットワークアーキテクチャでは、各階層ごとに、データの呼び名があります。
インターネット層のプロトコルは?†
(1) IPとは?†
IP = Internet Protocol
IP(Internet Protocol)は、TCP/IPの名前の由来にもなっている、代表的なプロトコルです。
IPによってエンドツーエンドの通信ができます。
IPによって運ばれるデータを、IPパケットと呼びます。
IPパケットには、IPヘッダが含まれています。
IPヘッダの情報によって、ルータが適切なルーティングを行い、エンドツーエンドの通信が可能となります。
http://www.atmarkit.co.jp/fnetwork/tokusyuu/11mpls/mpls01.html
ルータの基本的な動作。
ルータにパケットが到着するたび、ルーティング・プロトコルにより学習したルーティング・テーブルとあて先IPアドレスを参照して、ネクスト・ホップへパケットをフォワーディングする。
IPv4ヘッダフォーマットとは?†
詳細 → IPヘッダ
IPパケットは、IPヘッダとデータ(IPペイロード)で構成されています。
- IPv4のヘッダは、12のフィールドとオプションで構成されています。
- オプションを含まない、12のフィールドだけのIPヘッダ長は、20バイトです。
- オプションが追加された場合でも、必ず4バイト単位で増えるように調整されています。
- IPヘッダ長は、最大で60バイトです。=オプションは最大で40バイトまで追加できます。
(2) ARPとは?†
詳細 → ARP
ARP (Address Resolution Protocol)は、イーサネットなどのLAN上で、TCP/IP通信を行う際に必要なプロトコルです。
- 関連していないIPアドレスとMACアドレスを対応させる役割を持つプロトコルがARP
- ARPによって、(MACアドレスの)アドレス解決を行い、イーサネットのフレームを生成シテ、ネットワーク上に送信できる。
- ARPは、ARPリクエストとARPリプライによって、目的のIPアドレスに対応するMACアドレスを求める。
GARPとは?†
詳細 → GARP
自分自身のIPアドレスに対するARPを、Gratuitous ARP(GARP)と呼ぶ。
「Gratuitous」とは「余計な」という意味。
GARPの目的は、主に次の2つ。
RARPとは?†
詳細 → RARP
Reverse ARPのこと。ARPと逆の働きをする。
- 機器によっては、電源をオフにするとIPアドレスを保持できない。
- 機器の起動時に、自動的にIPアドレスを取得するためのプロトコルがRARP (Reverse ARP)。
- MACアドレスからIPアドレスを取得する。
- RARPの動作には、RARPサーバの用意が必要。
あらかじめ、RARPサーバにMACアドレスに対応するIPアドレスを登録しておく。
- RARPクライアントがRARPサーバから、自分のMACアドレスに対応するIPアドレスを取得する。
(3) ICMPとは?†
詳細 → ICMP
| 機能 | コマンド | 内容 |
| エラーレポート機能 | traceroute | どのような経路を通っていくか追跡する |
| 診断機能 | ping | 目的の相手と通信できるか=接続性を確認する |
トランスポート層のプロトコルは?†
(1) ポート番号とは?†
詳細 → ポート番号
ポート番号には、
- ウェルノウンポート(0~1023)
- ランダムポート(1024~65535)
の二種類がある。
ウェルノウンポートは、RFC1700で定義されている。
(2) TCPとは?†
詳細 → TCP
TCPの特徴
- ポート番号を使用して、適切なアプリケーションにデータを送り届ける。
- コネクション型プロトコルである。
- 3ウェイハンドシェイクで、TCPコネクションを確立する。
- 送信データにシーケンス番号を付けて、データの順序制御を行う。
- 送信データの確認応答がない場合は、エラー発生とみなして、データを再送する再送制御を行う。
- ネットワークの混雑度合いに応じて、送信するデータ量を調整するフロー制御を行う。
TCPヘッダのフォーマット†
詳細 → TCPヘッダ
- ACK番号
データを受信した確認通知と、次に送信を期待するシーケンス番号を通知する。
送信データに対するACKが返ってこない場合は、再送する。
→ 再送制御 (エラー制御)
- フラグ
6ビットのフィールド。
TCPセグメントの種類を示すビットが格納される領域。
| フラグ | 意味 | 動作 |
| URG | 緊急 | 優先的に送信する必要があるデータを含んでいることを示す。 |
| ACK | 応答 | コネクションを確立する最初のTCPセグメント(=接続要求)以外は、すべてのTCPセグメントでACK=1 |
| PSH | 強制転送 | 受信したデータをバッファに貯めず、すぐに上位のアプリケーションに渡す。(TELNETのエコーバック等) |
| RST | 強制終了 | コネクションの強制終了を要求する。 |
| SYN | 同期 | 接続要求に使う。SYN=1のTCPセグメントのシーケンス番号に、自身のACK番号を同期させる。 |
| FIN | 送信終了 | コネクションの正常終了を要求する。 |
- ウィンドウサイズ
受信側の一度に受信可能なデータ量。
送信側に通知する。
送信側は、ウィンドウサイズを超えないように、データ量を調整する。
→ フロー制御
- アージェントポインタ
URGフラグが立っているときのみ有効で、緊急データの開始位置を示す。
| TCPセグメント(送信数) | 送信方向 | SYN | ACK |
| TCPセグメント1 | A → B | 1 | 0 |
| TCPセグメント2 | B → A | 1 | 1 |
| TCPセグメント3 | A → B | 0 | 1 |
- TCPセグメント1:AからBへの接続要求。
これは最初のTCPセグメントで、それ以前の受信確認がないため、ACK=0である。
- TCPセグメント2:BからAへの接続要求(SYN=1)+TCPセグメント1に対する応答(ACK=1)
- TCPセグメント3:AからBへのTCPセグメント2に対する応答(ACK=1)
3回の挨拶が必要なので、3ウェイハンドシェイクと呼ばれる。
| TCPセグメント(送信数) | 送信方向 | FIN | ACK |
| TCPセグメント1 | A → B | 1 | 1 |
| TCPセグメント2 | B → A | 0 | 1 |
| TCPセグメント3 | B → A | 1 | 1 |
| TCPセグメント4 | A → B | 0 | 1 |
- TCPセグメント1:AからBへの切断要求。
- TCPセグメント2:BからAへの応答。
- TCPセグメント3:BからAへの切断要求。
- TCPセグメント3:AからBへの応答。
双方向に形成しているTCPコネクションの切断は、片方向ずつ行うため、4回の挨拶を交わす。
AとBがお互いにFINフラグ=1で、相手に対して切断要求を行ってから、TCPコネクションを解放する。
FINによる正常終了ではなく、一方の都合で強制終了したい場合は、RSTフラグ=1にして送りつける。
(3) UDPとは?†
詳細 → UDP
UDPヘッダのフォーマット†
- 送信元ポート番号・宛先ポート番号
送信元のポート番号、宛先のポート番号を格納する。
- データグラム長
- チェックサム
UDPの用途†
| 用途 | 事例 |
| リアルタイム性のあるデータを転送 | VoIP(IP電話) |
| 複数の相手に同じデータを転送 | ストリーミング(テレビ会議) |
| 少量のデータで、信頼性を必要としない転送 | DNS |
TCPとUDPの信号名†
アプリケーション層のプロトコルは?†
TCPやUDPの上位層(アプリケーション層)で働くプロトコルの代表例。
- HTTP (Hypertext Transfer Protocol ハイパーテキスト転送プロトコル)
Webアクセスを行うためのプロトコル
TCPのポート番号は80を使用
- SMTP (Simple Mail Transfer Protocol 簡易メール転送プロトコル)
電子メールを送信するためのプロトコル
TCPのポート番号は25を使用
- POP (Post Office Protocol)
電子メールを受信するためのプロトコル
TCPのポート番号は、POP2では109、POP3では110を使用
- IMAP (Internet Message Access Protocol)
電子メールを受信するためのプロトコル
TCPのポート番号は、IMAP2とIMAP4では143、IMAP3では220を使用
- DNS (Domain Name System)
ホスト名とIPアドレスの対応付けを行うプロトコル
TCP/UDPのポート番号53を使用
- FTP (File Transfer Protocol)
ファイル転送を行うためのプロトコル
TCPのポート番号20、21を使用