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

TCP/IPネットワークアーキテクチャとは?

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

レイヤコンピューター内部の対応
アプリケーション層アプリケーション(Webブラウザなど)
トランスポート層OS
インターネット層
ネットワークインターフェース層NIC(Network Interface Card)
http://program.sagasite.info/wiki/index.php?plugin=attach&refer=TCP%2FIP&openfile=image106.PNG

OSI参照モデルとの対応は?

ネットワークインターフェース層とは?

TCP/IPのネットワークインターフェース層は、OSI参照モデル物理層に相当します。
ネットワークインターフェース層に含まれるプロトコルは、

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

インターネット層とは?

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

トランスポート層とは?

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

アプリケーション層とは?

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

プロトコルの連携によるデータの流れは?

例えば、WebサーバへアクセスしてWebサイトを見る場合、次のようなプロトコルが連携しています。

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

http://ascii.jp/elem/000/000/424/424788/index-2.html

tcpip_encapsulation.jpg

http://www.hndtc.co.jp/p090/p090_004_tcpip.html

network2-7.gif

http://takaq1.plala.jp/contents/jitaku_server/network/network2-7.htm

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

階層ごとのデータの名称は?

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

インターネット層のプロトコルは?

(1) IPとは?

IP = Internet Protocol

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

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

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ヘッダフォーマットとは?

詳細 → IPヘッダ

IPパケットは、IPヘッダとデータ(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アドレスを求める。
レイヤーアドレス
L3TCP/IPARPIPアドレス
L2イーサネットなどのLANMACアドレス

GARPとは?

詳細 → GARP

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

GARPの目的は、主に次の2つ。

  • IPアドレスの重複検出
  • ARPキャッシュの更新

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) ポート番号とは?

詳細 → ポート番号

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

ポート番号には、

  1. ウェルノウンポート(0~1023)
  2. ランダムポート(1024~65535)
    の二種類がある。

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

(2) TCPとは?

詳細 → TCP

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の特徴

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

TCPヘッダのフォーマット

詳細 → TCPヘッダ

http://program.sagasite.info/wiki/index.php?plugin=attach&refer=TCP%E3%83%98%E3%83%83%E3%83%80&openfile=fig01.gif
  • ACK番号
    データを受信した確認通知と、次に送信を期待するシーケンス番号を通知する。
    送信データに対するACKが返ってこない場合は、再送する。
    再送制御 (エラー制御)
  • データオフセット
    TCPヘッダの長さ(ヘッダ長)を示す。
  • 予約
    未使用領域。
  • フラグ
    6ビットのフィールド。
    TCPセグメントの種類を示すビットが格納される領域。
フラグ意味動作
URG緊急優先的に送信する必要があるデータを含んでいることを示す。
ACK応答コネクションを確立する最初のTCPセグメント(=接続要求)以外は、すべてのTCPセグメントでACK=1
PSH強制転送受信したデータをバッファに貯めず、すぐに上位のアプリケーションに渡す。(TELNETのエコーバック等)
RST強制終了コネクションの強制終了を要求する。
SYN同期接続要求に使う。SYN=1のTCPセグメントのシーケンス番号に、自身のACK番号を同期させる。
FIN送信終了コネクションの正常終了を要求する。
  • ウィンドウサイズ
    受信側の一度に受信可能なデータ量。
    送信側に通知する。
    送信側は、ウィンドウサイズを超えないように、データ量を調整する。
    フロー制御
  • アージェントポインタ
    URGフラグが立っているときのみ有効で、緊急データの開始位置を示す。

コネクションの確立

http://program.sagasite.info/wiki/index.php?plugin=attach&refer=3%E3%82%A6%E3%82%A7%E3%82%A4%E3%83%8F%E3%83%B3%E3%83%89%E3%82%B7%E3%82%A7%E3%82%A4%E3%82%AF&openfile=connection_start.jpg


TCPセグメント(送信数)送信方向SYNACK
TCPセグメント1A → B10
TCPセグメント2B → A11
TCPセグメント3A → B01
  • 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ウェイハンドシェイクと呼ばれる。

コネクションの切断

http://program.sagasite.info/wiki/index.php?plugin=attach&refer=3%E3%82%A6%E3%82%A7%E3%82%A4%E3%83%8F%E3%83%B3%E3%83%89%E3%82%B7%E3%82%A7%E3%82%A4%E3%82%AF&openfile=connection_end.jpg


TCPセグメント(送信数)送信方向FINACK
TCPセグメント1A → B11
TCPセグメント2B → A01
TCPセグメント3B → A11
TCPセグメント4A → B01
  • 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ヘッダのフォーマット

http://program.sagasite.info/wiki/index.php?plugin=attach&refer=UDP&openfile=fig05.gif
  • 送信元ポート番号・宛先ポート番号
    送信元のポート番号、宛先のポート番号を格納する。
  • データグラム長
  • チェックサム

UDPの用途

用途事例
リアルタイム性のあるデータを転送VoIP(IP電話)
複数の相手に同じデータを転送ストリーミング(テレビ会議)
少量のデータで、信頼性を必要としない転送DNS

TCPとUDPの信号名

プロトコルプロトコルで扱われる信号の呼び名
TCPセグメント
UDPデータグラム

アプリケーション層のプロトコルは?

TCPUDPの上位層(アプリケーション層)で働くプロトコルの代表例。

  • 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を使用

添付ファイル: filezu_02.png 2327件 [詳細] filefig2-6.png 2105件 [詳細] filenetwork2-7.gif 2332件 [詳細] filetcpip_encapsulation.jpg 2443件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-09-09 (金) 19:54:25 (4612d)