LoginSignup
0
2

TCP / IP の基本〜インターネット層・ネットワークインターフェース層編〜

Posted at

はじめに

この記事は TCP / IP のインターネット層とネットワークインターフェース層について簡潔に説明した内容となっております。
上位層であるアプリケーション層とトランスポート層の解説については、以下の記事をご覧いただければ幸いです。

インターネット層

TCP / IP において、インターネット層は下位層のネットワークインターフェース層と協力して他のコンピュータにデータを届ける役割を担っている。
ハードウェアに依存する部分はネットワークインターフェース層が担当するので、インターネット層は「IPアドレス」を識別してデータを届ける仕組みを提供している。

IP アドレス

IP アドレスとは、現在主に使用されているインターネット層のプロトコルで、32 ビットの IP アドレスで各コンピュータの識別を行っている。
IP アドレスは 2 進数であるが、人間が理解しやすくするために 10 進数で表記される。

IP アドレスヘッダ

IP パケットのヘッダには、送信元と宛先の IP アドレスの他に、パケット長などのデータが含まれる。
qiita.jpg

フィールド サイズ 説明
バージョン 4ビット ヘッダのバージョン情報 例)IPv4:4
ヘッダ長 4ビット IPヘッダの長さ
サービスタイプ 1バイト IPパケットの優先度
パケット長 2バイト IPパケット(IPヘッダ+データ)の長さ(1バイト単位)
識別子 2バイト パケットを識別するための値。受信側は識別子やIPアドレスを手掛かりに、分散されたデータの復元を行う
フラグ 3ビット IPパケットをフラグメント※に分割する際に使用される値
フラグメントオフセット 13ビット IPパケットが複数のフラグメントに分割された場合、そのフラグメントの順序を表す値
生存期間(TTL) 1バイト パケットが生存できる最大時間
プロトコル 1バイト 上位層(トランスポート層)のプロトコルを表す値 例)TCP:6、UDP:17
チェックサム 2バイト パケットにエラーがないかをチェックするための値
送信元IPアドレス 4バイト 送信元のIPアドレス
宛先IPアドレス 4バイト 宛先のIPアドレス
オプション 可変長 追加のデータ(4バイト単位で、最大40バイト)

※細分化された小さなデータのことで、送信できる最大サイズよりも大きい IP パケットはルータによって細分化される。
 ルータの負荷が高くなることが考慮されるため、通常は TCP の MSS のすり合わせによってサイズが決定される。

ネットワーク部とホスト部

IP アドレスは「ネットワーク部」と「ホスト部」で構成されている。
ホストとは、ネットワークに参加しているコンピュータや機器のことで、ルータは宛先 IP アドレスのネットワーク部を見て、ネットワーク外に送るべきデータかネットワーク内に送るべきデータかを判断している。

初期のインターネットでは、何ビットまでがネットワーク部で、残り何ビットまでがホスト部かは「アドレスクラス」によって固定的に決定されてた。
qiita-アドレスクラス.drawio.png

クラスAのアドレスでは、1 つのネットワークで約 1,677万台分のホストにアドレスを割り当てることができる。
しかし、現実には多くのホストを 1 つのネットワークに所属させることができないので、多くのアドレスが無駄になってしまう。

そこで、「サブネットマスク」を指定することで、アドレスクラスで決められたネットワークをビット単位で柔軟に変更することができる。
qiita-サブネットマスク.jpg

例えば IP アドレスが 10.1.1.1 でネットワーク部が 24 ビットの場合の IP アドレスは以下の表記となる。
qiita-サブネット表記.drawio.png

プライベート IP アドレス

プライベート IP アドレス」は、家庭や組織で自由に使えるアドレスである。
直接つながっていなければ、他のネットワークと重複しても問題ないが、インターネットと通信を行う場合は NAT※等のアドレス変換技術を使用してグローバル IP アドレス※後述 に変換を行う必要がある。

qiita-プライベートIP.drawio.png

※送信元 IP アドレスをグローバル IP アドレスに変換して通信を行う仕組み

グローバル IP アドレス

グローバル IP アドレス(パブリック IP アドレス)」は、インターネット上で一意で世界的に識別される IP アドレスを指す。
グローバル IP アドレスは ICANN や JPNIC などの組織(「インターネットレジストリ」)によって管理されている。
グローバル IP アドレスが必要な場合は、各組織に申請して割り当ててもらう必要がある。

インターネットレジストリ

インターネットレジストリからプロバイダ(インターネットサービスプロバイダ:ISP)にグローバル IP アドレスが割り当てられ、企業や家庭などはプロバイダから貸し出されて使用する、といった仕組みとなっている。
qiita-インターネットレジストリ.drawio.png

ICMP

ICMP(Internet Control Message Protocol)」は、データ転送中のトラブルの通知などに使われるプロトコルである。
qiita-ICMP.drawio.png

ICMP メッセージを送信する際の ICMP ヘッダは以下のようになっており、既存のIP ヘッダに付加される形となっている。
qiita-ICMPヘッダ.drawio.png

タイプ 意味
0 エコー応答。宛先の存在確認に使われる
3 データが到達できなかった
4 回線が混雑している
5 経路が最適ではない
8 エコー要求。宛先の存在確認に使われる
9 所属ネットワークのルータの通知に使われる
10 所属ネットワークのルータを探す際に使われる
11 生存期間を超えたのでパケットが消滅

DNS

IPアドレスは数字の羅列のため覚えにくく、よりわかりやすくするために「ホスト名」が作られ、それを管理するために「DNS(Domain Name System)」とドメイン名が作られた。
qiita-DNS.drawio.png

ドメイン名の階層構造

DNS は「.(ピリオド)」で階層に区切られており、一番最後に来る「jp」や「com」などのドメインが最上位となり、「トップレベルドメイン」と呼ぶ。
トップレベルドメイン以降のドメインは「第2レベルドメイン」、「第3レベルドメイン」、...と続く。
qiita-DNSの階層構造.drawio.png

DNS サーバの階層構造

DNSサーバもまた階層構造を持っており、自分が担当するゾーンに属するドメイン名を管理している。
また、ドメイン名を管理する DNS サーバを DNS コンテンツサーバ とも呼ぶ。
qiita-DNSの階層構造.drawio.png

DNS サーバへの問い合わせの流れ

DNS サーバはドメイン名を管理するコンテンツサーバと、外部からの問い合わせに対応する「キャッシュサーバ」の2種類に分かれている。
ャッシュサーバはルート DNS サーバから順に問い合わせを行い、IP アドレスがわかったら、その IP アドレスを返す仕組みとなっている。
1回調べた名前はキャッシュサーバに保管されるので、次回からはルート DNS サーバなどに問い合わせることなく IP アドレスを返せるようになる。
qiita-DNSの問い合わせ.drawio.png

DNS への登録

ドメイン名は、グローバル IP アドレスと同じく ICANN が管理しており、新しいドメイン名が必要な場合は申請が必要となる。
ドメイン事業者に申請を依頼した場合、通常は事業者が所有している DNS サーバにドメインが登録される。
DNS サーバに登録する情報を「リソースレコード」と呼ばれ、リソースレコードが記述されたファイルを「ゾーンファイル」と呼ぶ。

レコード名 説明 記載例
SOAレコード ドメイン名を管轄する DNS サーバを記述 example.com. IN SOA ns1.example.com. admin.example.com. ( )
NSレコード プライマリ、セカンダリの DNS サーバを記述 example.com. IN NS ns1.example.com. example.com. IN NS ns2.example.com.
Aレコード ホスト名と IP アドレスを対応付ける example.com. IN A 192.168.1.1
CNAMEレコード Aレコードに指定済みのホスト名に別名を付ける www IN CNAME example.com.(www.example.comとexample.comを同じ IP アドレスと関連付けたい場合)
MXレコード 「xxx@ドメイン名」という形式のメールアドレスとメールサーバを対応付ける example.com. IN MX 10 mail.example.com.

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

ネットワークインターフェース層」はネットワークのハードウェアを制御する層である。
ネットワークのハードウェアには、ネットワークインターフェースカード(NIC)や LAN ケーブル、光ケーブルなどが含まれる。
ネットワークインターフェース層はこれらの要素を効果的に制御して、インターネット層など上位の層がハードウェアの違いを意識せず、同様に機能できるようにする役割を果たしている。
ちなみに OSI 参照モデルでは、プロトコルなどソフトウェア仕様の部分をデータリンク層、ハードウェア部分を物理層と呼ぶ。

ネットワークインターフェース層は多くの構成要素から成り立っており、ここでは MAC アドレスのみを紹介する。
詳細については、以下の参考文献で確認することをお勧めする。

MAC アドレス

ネットワークインターフェース層でデータを通信する際には、主に「MAC アドレス」が使用される。
MAC(Media Access Control)アドレスとは NIC に割り当てられた識別番号のことである。
これは製造段階でメーカーによって付与され、グローバル IP アドレス同様、全世界で重複しないように設定されている。
qiita-MACアドレス.drawio.png

MAC アドレスは、有線 LAN のイーサネットや無線 LAN の他、短距離通信の Bluetooth など、様々なデータ通信で利用されている。
ネットワークインターフェース層が送信するデータを「フレーム」と呼び、フレーム内には宛先と送信先の MAC アドレスが含まれている。
qiita-フレーム.drawio.png

MAC アドレスの役割は IP アドレスに類似しているが、IP アドレスは最終的な宛先を指すのに対して、MAC アドレスは途中の装置間の通信に使用される。

qiita-MACアドレス2.drawio.png

参考文献

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2