ネットワーク基礎

ネットワークの基礎 ~TCP/IP①インターネット層~

復習 ~ネットワーク層(レイヤ3)とは~

エンドツーエンドの通信に関するプロトコル群

  • データの送信元と宛先の識別方法に関するルール(論理アドレス)
  • 経路選択の方法に関するルール
  • データの送出方法に関するルールetc
  • データの送信元と宛先を結ぶ通信経路全体→エンドツーエンド

OSIとTCP/IP

OSI

  • OSIプロトコルスタック
  • ISO(国際標準化機構)生まれ
  • 理論重視のため、普及せず

TCP/IP

  • TCP/IPプロトコルスタック
  • アメリカ(国防総省×大学)生まれ
  • 実運用重視
  • インターネットの発展とともに普及(デファクトスタンダード)

TCP/IPプロトコルスタック

  • インターネットの世界標準プロトコル=デファクトスタンダード(事実上の標準)な通信プロトコル。
  • RFC(RFC791)にて標準化
  • TCPIPという二つのプロトコルを中心に、リンク層・インターネット層・トランスポート層・アプリケーション層の4つのレイヤで構成
  • RFC(Request For Comments)は主に、インターネットに関する技術仕様を公開している文書のこと
  • RFCは、インターネットの技術標準を定めるIETF(Internet Engineering Task Force)という団体が発行

インターネット層~トランスポート層の主なプロトコル

インターネット層

IP:エンドツーエンドでパケットを伝送する仕組みを提供

ICMP:IPの補助。通信状況やエラーを通知

ARP:IPアドレスからMACアドレスを特定

トランスポート層

TCP:信頼性重視

UDP:速度重視

カプセル化/非カプセル化

トランスポート層のプロトコルがTCPの場合

  • リンク層=フレーム
  • インターネット層=パケット(IPデータグラム)
  • トランスポート層=TCPセグメント

トランスポート層のプロトコルがUDPの場合

  • リンク層=フレーム
  • インターネット層=パケット(IPデータグラム)
  • トランスポート層=UDPデータグラム

IP

  • IP(Internet Protocol)はネットワーク層/インターネット層で中心的な役割を担うプロトコル。IPアドレスを使用してエンドツーエンドの通信を可能にする
  • IPアドレスは広いネットワークの世界における住所のようなもの。世界中で重複しないように設定される。MACアドレスとは違い、付与されるIPアドレスは状況によって変化する(論理アドレス)

IPの特徴

コネクションレス型

  • 送りっぱなし
  • 正しく届いたかどうかは関知しない

ベストエフォート型

  • 保証はしないが、最善は尽くすというタイプ
  • 信頼性を高める為の簡単な仕組みを提供

データ回復機能なし

  • データを破棄したら破棄しっぱなし(再送信の要求などはしない)
  • 必要であれば、他のプロトコルで補う

IPアドレスの概要

  • IPアドレスはバージョンがあり、現在最も普及しているのはIPv4
  • ただし、割り振ることのできるIPアドレスに限界がきており(IPアドレス枯渇問題)、その解消のためにIPv6の普及が進められている
  • IPv4においてIPアドレスは32ビット持ち、ネットワークのアドレスを表すネットワーク部と個々のノードを表すホスト部で構成されている

IPヘッダ(IPv4)の詳細

  • IPヘッダ(IPv4)はエンドツーエンドの通信で肝となる「送信元IPアドレス」「宛先IPアドレス」だけでなく、データの送信過程において必要になる情報をフィールドとして多数持つ
  • IPヘッダを構成するフィールドのうち、軸となるものは全部で20バイト定義されている
  • テストやデバッグなどの特別な状況では「オプション設定」として最大40バイトIPヘッダに情報追加できる
プロトコルスタックフィールドPDU
インターネット層IPヘッダ・TCPヘッダ・HTTPヘッダ・データパケット(IPデータグラム)

IPv4の詳細 ~フラグメンテーション(断片化)~

  • 送信データがMTU(Maxmum Transmission Unit)を超えている場合、データはMTUに収まるサイズへと分割してから送信される
  • 断片化することは、フラグメント処理と呼ばれる
  • ネットワーク機器間でいちいち起こる
  • フラグメンテーションは全てのノードで分割/再構成処理が起こり、効率が悪いので現在はほとんど使われていない

IPv4の詳細 ~その他~

TTL(生存時間:Time To Live)

  • パケットの生存時間
  • 正確には、ルータを中継できる回数
  • ルータはパケットを中継する度にフィールド内の数値を1減らし、0になると中継を中止して破棄する
  • データがネットワーク上を永遠に転送され続けるといったトラブルを防止する

サービスタイプ(ToS:Type of Service)

  • 主に、QoS(Quality of Service:パケットの送信優先度に応じた最適な通信を行う為の仕組み)実施のための制御情報を整理
  • 「パケットの送信や破棄の優先度」といったQoSに関する情報に加え、「輻輳への対処に関する情報」も管理

プロトコル(フィールド)

  • 上位のプロトコルを表す番号
  • どのプロトコルがどの番号かはIANA(現ICANN)という組織によって定義された
  • 例:TCP=6UDP=17ICMP=1

IPアドレスのクラス

クラスA(大規模ネットワーク向け)クラスB(中規模ネットワーク向け)クラスC(小規模ネットワーク向け)クラスD(IPマルチキャスト向け)
構成10.0.0.1172.16.0.1192.168.0.1224.0.0.3
最大ホスト数16,777,21465,534254
最大ネットワーク数25465,53416,777,214

ネットワークを跨ぐ通信(デフォルトゲートウェイ)

デフォルトゲートウェイ

  • 外のネットワークとの出入り口となる機器(ルータ)
  • ルータのポートはそれぞれ一つのノードとしてIPアドレスを持つことが可能
  • ノードはネットワーク内に宛先がない場合(=外部ネットワークに宛先がある場合)にどこに対してデータを送るかを予め設定している
  • 流れとしては、送信元ノード→デフォルトゲートウェイ①→デフォルトゲートウェイ②→宛先ノード

ARP

パケットを送信元ノード→宛先ノードへ送りたい時…

  • 送信元・宛先IPアドレス→IPヘッダに書いてある
  • 送信元MACアドレス→自分の情報だからわかる
  • 宛先MACアドレス→???
  • 宛先MACアドレスがわからないと、下位層のヘッダを作れなくて送信できない…

ARP(Address Resolution Protocol)はIPアドレスに紐づくMACアドレスを調べる為のプロトコル

  • このIPアドレスからMACアドレスを調べる一連の処理は、アドレス解決(Address Resolution)と呼ばれる
  • ブロードキャストでネットワーク内の全ノードに「このIPアドレスは誰?」という通信(ARPリクエスト:要求)を行い、自分と認識したノードにMACアドレスを返送させる仕組み(ARPリプライ:応答)
  • フレームの宛先MACアドレスを決定するために必要
  • 何度もブロードキャストされることを防ぐためにARPテーブルが用いられる

ARP処理の流れ

  • 取得したMACアドレスはARPテーブルに管理
  • 保存された情報は一定時間を超えると除去される(ARPキャッシュ)

ネットワークを跨いだARPの動作

  • ネットワークを跨いだ宛先に送信する場合、デフォルトゲートウェイ(ルータのポート)のMACアドレスをARP(アドレス解決)で取得し、宛先MACアドレスとして送信する
  • ルータはネットワーク間のパケット転送を行う際、送信元MACアドレスを自身のMACアドレスに、宛先MACアドレスをARPで取得したMACアドレスに書き換えて送信する
  • IPアドレスはネットワークを跨いでも変わらない

ARPコマンド

  • ARPテーブルの表示
arp -a      ※Windows
show ip arp ※Cisco
  • ARPテーブルの即時クリア
arp -d          ※Windows
clear arp-cache ※Cisco IOS

ICMP(Internet Control Message Protocol)

  • エラー通知や問い合わせ情報を転送する為のプロトコル
  • ベストエフォード型のため、通信状況やエラーの確認を行わない
  • IPを補う役割を担い、IPとセットで用いられる
  • ICMPはインターネット層のプロトコルであり、IPの上位に位置付け

ICMPフォーマット ~主なタイプとコード~

タイプコード
意味種類エコーの応答
0エコー応答
宛先の生存確認用
Query0エコーの応答
3宛先到達不能Error0宛先ネットワークに到達できない
3宛先到達不能Error1宛先ホストに到達できない
5経路変更Error0指定されたネットワークへの最適経路変更を通知
5経路変更Error1指定されたホストへの最適経路を通知
8エコー要求Query0エコー要求
11時間超過Error0TTL超過
11時間超過Error1分割パケットの組み立て中にタイムアウト

ICMP ~ping~

  • pingは、特定のノードと通信確認の際に用いられるコマンドの一つ
  • エコー要求(タイプ8)を発信し、対象ノードからエコー応答(タイプ0)が返ってきたら接続OKと判断する
  • 通常、一回のpingで複数のエコー要求を送る(Windowsの場合はデフォルトで4回送信)

ICMP ~traceroute~

  • tracerouteは、特定のノードまでの経路情報を取得する為のコマンドの一つ
  • Windowsだと「tracert」、Cisco IOSだと「traceroute」
タイトルとURLをコピーしました