[[ネットワーク講座]] > TCP/IPプロトコル

#norelated

#contents

* TCP/IPネットワークアーキテクチャとは? [#ka1d22e1]
TCP/IP[[ネットワークアーキテクチャ]]とは、[[TCP]]や[[IP]]を中心とした、様々な[[プロトコル]]の集まりを指しています。
TCP/IPネットワークアーキテクチャは、4つの階層から成っています。

| [[レイヤ]] | コンピューター内部の対応 |h
| [[アプリケーション層]] | アプリケーション(Webブラウザなど) |
| [[トランスポート層]] | OS |
| [[インターネット層]] |~|
| [[ネットワークインターフェース層]] | [[NIC]](Network Interface Card) |

CENTER:http://program.sagasite.info/wiki/index.php?plugin=attach&refer=TCP%2FIP&openfile=image106.PNG

* OSI参照モデルとの対応は? [#ed468a08]

| [[OSI参照モデル]] | [[プロトコル]] | [[TCP/IP]] |h
| [[アプリケーション層]] | [[HTTP]]、[[DNS]]、[[DHCP]]、[[SNMP]]、[[SMTP]]など | [[アプリケーション層]] |
| [[プレゼンテーション層]] |~|~|
| [[セッション層]] |~|~|
|~|BGCOLOR(#FFCCCC):[[TCP]]、[[UDP]] |BGCOLOR(#FFCCCC):[[トランスポート層]] |
| [[トランスポート層]] |~|~|
| [[ネットワーク層]] |BGCOLOR(#FFCCCC):[[IP]]v4/v6、[[ARP]]、[[ICMP]]、[[OSPF]]、[[EIGRP]]、[[IGRP]] |BGCOLOR(#FFCCCC):[[インターネット層]] |
| [[データリンク層]] | [[イーサネット]]、[[トークンリング]]、[[FDDI]]、[[ATM]]、[[フレームリレー]]、[[PPP]]など | [[ネットワークインターフェース層]] |
| [[物理層]] |~|~|

*** ネットワークインターフェース層とは? [#pe09a0fc]
TCP/IPの[[ネットワークインターフェース層]]は、[[OSI参照モデル]]の[[物理層]]に相当します。
ネットワークインターフェース層に含まれる[[プロトコル]]は、
- [[LAN]]のプロトコル:[[イーサネット]]、[[トークンリング]]など
- [[WAN]]のプロトコル:[[フレームリレー]]、[[ATM]]、[[PPP]]など
です。

TCP/IPでは、ネットワークインターフェース層の仕様を特に規定していません。
つまり、TCP/IPのプロトコルは、ネットワークインターフェース層から独立しているので、あらゆるネットワークでTCP/IPを利用した通信を行うことができます。

*** インターネット層とは? [#sfdfd0e2]
TCP/IPの[[インターネット層]]は、[[OSI参照モデル]]の[[ネットワーク層]]に相当します。
インターネット層には、TCP/IPの中心的な[[プロトコル]]である、[[IP]]が含まれています。
IPの他に、[[ARP]]、[[ICMP]]、[[OSPF]]などのプロトコルも含まれています。

*** トランスポート層とは? [#f3c66d55]
TCP/IPの[[トランスポート層]]は、[[OSI参照モデル]]の[[トランスポート層]]と[[セッション層]]の一部に相当します。
トランスポート層には、[[TCP]]と[[UDP]]の二つのプロトコルがあります。

*** アプリケーション層とは? [#tf4cdea3]
TCP/IPの[[アプリケーション層]]は、[[OSI参照モデル]]の[[セッション層]]の一部、[[プレゼンテーション層]]、[[アプリケーション層]]とに相当します。
アプリケーション層には、[[HTTP]]、[[DNS]]、[[DHCP]]、[[SNMP]]、[[SMTP]]など、数多くのプロトコルが含まれています。

* プロトコルの連携によるデータの流れは? [#n6061758]
例えば、WebサーバへアクセスしてWebサイトを見る場合、次のようなプロトコルが連携しています。

| [[レイヤ]] | [[プロトコル]] |h
| [[アプリケーション層]] | [[HTTP]] |
| [[トランスポート層]] | [[TCP]] |
| [[インターネット層]] | [[IP]] |
| [[ネットワークインターフェース層]] | LANやWANのネットワークの種類によって異なる(=TCP/IPでは規定していない) |

CENTER:&ref(zu_02.png);
>http://ascii.jp/elem/000/000/424/424788/index-2.html

CENTER:&ref(tcpip_encapsulation.jpg);
> http://www.hndtc.co.jp/p090/p090_004_tcpip.html

CENTER:&ref(network2-7.gif);
> http://takaq1.plala.jp/contents/jitaku_server/network/network2-7.htm 

CENTER:&ref(fig2-6.png);
> http://togodb.seselab.org/pukiwiki/Network/%B3%AC%C1%D8%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB%A4%C8TCP/IP.html

* 階層ごとのデータの名称は? [#s6daf2f3]
TCP/IPネットワークアーキテクチャでは、各階層ごとに、データの呼び名があります。

| [[レイヤ]] | データの名称 |h
| [[アプリケーション層]] | メッセージ |
| [[トランスポート層]] | セグメント/[[データグラム]] |
| [[インターネット層]] | [[パケット]] |
| [[ネットワークインターフェース層]] | [[フレーム]] |

* インターネット層のプロトコルは? [#if8d2080]

** (1) IPとは? [#wd40a1ee]

CENTER:&size(50){IP = &color(red,pink){Internet Protocol};};

[[IP]](Internet Protocol)は、[[TCP/IP]]の名前の由来にもなっている、代表的な[[プロトコル]]です。
IPによって[[エンドツーエンド]]の通信ができます。

IPによって運ばれるデータを、IPパケットと呼びます。
IPパケットには、[[IPヘッダ]]が含まれています。
IPヘッダの情報によって、[[ルータ]]が適切な[[ルーティング]]を行い、エンドツーエンドの通信が可能となります。

CENTER:http://program.sagasite.info/wiki/index.php?plugin=attach&refer=%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0&openfile=zu01.gif
>http://www.atmarkit.co.jp/fnetwork/tokusyuu/11mpls/mpls01.html
ルータの基本的な動作。
ルータにパケットが到着するたび、ルーティング・プロトコルにより学習したルーティング・テーブルとあて先IPアドレスを参照して、ネクスト・ホップへパケットをフォワーディングする。

*** IPv4ヘッダフォーマットとは? [#l19914e3]
&color(,pink){ 詳細 → [[IPヘッダ]] };

IP[[パケット]]は、[[IPヘッダ]]とデータ(IP[[ペイロード]])で構成されています。

|>|BGCOLOR(pink):CENTER: IPパケット |
| IPヘッダ | IPペイロード |

- IPv4のヘッダは、&color(red){12のフィールド};と&color(red){オプション};で構成されています。
- オプションを含まない、12のフィールドだけのIPヘッダ長は、&color(red){20バイト};です。
- オプションが追加された場合でも、必ず&color(red){4バイト単位で増える};ように調整されています。
- IPヘッダ長は、&color(red){最大で60バイト};です。=オプションは最大で40バイトまで追加できます。

** (2) ARPとは? [#rafa2924]

&color(,pink){ 詳細 → [[ARP]] };

[[ARP]] (Address Resolution Protocol)は、[[イーサネット]]などの[[LAN]]上で、[[TCP/IP]]通信を行う際に必要な[[プロトコル]]です。
- [[TCP/IP]]では[[IPアドレス]]
- [[LAN]]では[[MACアドレス]]
を利用して、通信を行うが、この二つのアドレスはお互いに関連していない。

- 関連していない&color(red){IPアドレスとMACアドレスを対応させる};役割を持つプロトコルが[[ARP]]
- ARPによって、(MACアドレスの)アドレス解決を行い、イーサネットのフレームを生成シテ、ネットワーク上に送信できる。
- ARPは、ARPリクエストとARPリプライによって、目的のIPアドレスに対応するMACアドレスを求める。

| レイヤー | | アドレス |h
| L3 | [[TCP/IP]]、[[ARP]] | [[IPアドレス]] |
| L2 | [[イーサネット]]などの[[LAN]] | [[MACアドレス]] |

*** GARPとは? [#cf6c4203]

&color(,pink){ 詳細 → [[GARP]] };

自分自身のIPアドレスに対する[[ARP]]を、Gratuitous ARP([[GARP]])と呼ぶ。
「Gratuitous」とは「余計な」という意味。

GARPの目的は、主に次の2つ。
- IPアドレスの重複検出
- ARPキャッシュの更新

*** RARPとは? [#ib4491c2]
&color(,pink){ 詳細 → [[RARP]] };

Reverse ARPのこと。[[ARP]]と逆の働きをする。

- 機器によっては、電源をオフにすると[[IPアドレス]]を保持できない。
- 機器の起動時に、自動的にIPアドレスを取得するためのプロトコルが[[RARP]] (Reverse ARP)。
- &color(red){MACアドレスからIPアドレスを取得する。};
- RARPの動作には、RARPサーバの用意が必要。
あらかじめ、RARPサーバにMACアドレスに対応するIPアドレスを登録しておく。
- RARPクライアントがRARPサーバから、自分のMACアドレスに対応するIPアドレスを取得する。

** (3) ICMPとは? [#k2037662]
&color(,pink){ 詳細 → [[ICMP]] };

- [[ICMP]] = Internet Control Message Protocol インターネット制御通知プロトコル
- [[IP]]のエラーメッセージや制御メッセージを転送するプロトコル。
- [[OSI参照モデル]]でいえば、L3([[ネットワーク層]])のプロトコル。
- [[TCP/IP]]でいえば、[[インターネット層]]のプロトコル。

| 機能 | コマンド | 内容 |h
| エラーレポート機能 | [[traceroute]]| どのような経路を通っていくか追跡する |
| 診断機能 | [[ping]] | 目的の相手と通信できるか=接続性を確認する |

* トランスポート層のプロトコルは? [#vfba827d]

** (1) ポート番号とは? [#b2ccfa96]
&color(,pink){ 詳細 → [[ポート番号]] };

- [[ポート番号]]とは、[[TCP/IP]]プロトコルスタックのアプリケーションプロトコルを識別するための識別番号。
- [[TCP]]または[[UDP]]の[[ヘッダ]]に記述され、上位のアプリケーションが何であるかを示す。
- [[IPアドレス]]によって目的のホストまで届けたら、次に[[ポート番号]]によって目的のアプリケーションまでデータを送り届ける。

ポート番号には、
+ [[ウェルノウンポート>ウェルノウンポート番号]](0~1023)
+ [[ランダムポート>ランダムポート番号]](1024~65535)
の二種類がある。

ウェルノウンポートは、RFC1700で定義されている。

** (2) TCPとは? [#cad96580]
&color(,pink){ 詳細 → [[TCP]] };

- TCP = Transmission Control Protocol
- [[TCP/IP]][[ネットワークアーキテクチャ]]における[[トランスポート層]]の[[プロトコル]]

CENTER:http://program.sagasite.info/wiki/index.php?plugin=attach&refer=OSI%E5%8F%82%E7%85%A7%E3%83%A2%E3%83%87%E3%83%AB&openfile=zu2.gif

TCPの特徴
+ [[ポート番号]]を使用して、適切なアプリケーションにデータを送り届ける。
+ [[コネクション型プロトコル]]である。
+ [[3ウェイハンドシェイク]]で、TCP[[コネクション]]を確立する。
+ 送信データに[[シーケンス番号]]を付けて、データの[[順序制御]]を行う。
+ 送信データの確認応答がない場合は、エラー発生とみなして、データを再送する[[再送制御]]を行う。
+ ネットワークの混雑度合いに応じて、送信するデータ量を調整する[[フロー制御]]を行う。







** (3) UDPとは? [#e2482ebc]
&color(,pink){ 詳細 → [[UDP]] };

* アプリケーション層のプロトコルは? [#k6b9cd81]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS