LPIC Level1 復習ラジオ 07:ネットワーク基礎
音声
目次
ネットワーク通信の全体像
ネットワーク通信では、複数の仕組みが役割を分担しています。
DNSは名前からIPアドレスを調べます。IPアドレスは通信相手やネットワークを識別します。MACアドレスは同じリンク上でフレームを届けるために使われます。ARPはIPv4アドレスに対応するMACアドレスを調べます。ルーティングは、宛先へ向かう経路を選びます。
DHCPを利用すると、端末はIPアドレス、サブネットマスクやプレフィックス、デフォルトゲートウェイ、DNSサーバーなどの設定を自動的に受け取れます。
OSI参照モデル
OSI参照モデルは、ネットワーク通信の機能を七つの階層に分けて整理する考え方です。
各層の役割を分けることで、通信のどこで問題が起きているかを整理しやすくなります。ただし、実際のプロトコルが常に一つの層へ完全に収まるとは限りません。
| 層 | 名称 | 主な役割 | 関連する例 |
|---|---|---|---|
| 第7層 | アプリケーション層 | 利用者やアプリケーションへ通信機能を提供する | HTTP、DNS、SSH、SMTP |
| 第6層 | プレゼンテーション層 | 文字コード、データ形式、暗号化、圧縮などを扱う | データ表現、暗号化処理 |
| 第5層 | セッション層 | 通信の開始、維持、終了などを管理する | セッション管理 |
| 第4層 | トランスポート層 | アプリケーション間の通信、信頼性、ポート番号を扱う | TCP、UDP |
| 第3層 | ネットワーク層 | 異なるネットワーク間の転送や経路選択を行う | IP、ICMP、ルーティング |
| 第2層 | データリンク層 | 同じリンク上でフレームを転送する | Ethernet、MACアドレス |
| 第1層 | 物理層 | 電気信号、光、電波などでビットを伝える | ケーブル、コネクタ、無線信号 |
例えば、ケーブルが抜けていれば第1層、MACアドレスやスイッチングの問題は第2層、IPアドレスや経路の問題は第3層、TCPポートや接続の問題は第4層として整理できます。
TCP/IPモデル
インターネットで実際に広く使われているプロトコル群は、TCP/IPとして整理されます。
TCP/IPモデルは、一般にアプリケーション層、トランスポート層、インターネット層、リンク層の四層で説明されます。
| TCP/IPモデル | 主な役割 | 主なプロトコル | 対応するOSI層の目安 |
|---|---|---|---|
| アプリケーション層 | アプリケーション向けの通信機能 | HTTP、DNS、SSH、DHCP | 第5層から第7層 |
| トランスポート層 | アプリケーション間のデータ転送 | TCP、UDP | 第4層 |
| インターネット層 | IPアドレスによる転送と経路選択 | IPv4、IPv6、ICMP | 第3層 |
| リンク層 | 直接接続されたネットワーク上での転送 | Ethernet、無線LAN、ARP | 第1層と第2層 |
TCPとUDP
TCPは、接続を確立し、順序制御、再送、フロー制御などを行う信頼性重視の通信です。
UDPは、接続確立や再送をプロトコル自身では行わない、比較的単純なデータグラム通信です。
どちらもポート番号を使い、同じ端末上のどのアプリケーションへデータを渡すかを識別します。
IPは宛先まで運ぶための仕組みですが、IPv4のIP自体は、必ず届くことや順番どおりに届くことを保証しません。必要な信頼性はTCPなど上位の仕組みが補います。
IPアドレス
IPアドレスは、IPネットワーク上のインターフェースを識別するためのアドレスです。
IPv4
IPv4アドレスは32ビットで、通常は192.168.1.10のように、8ビットずつ十進数で表します。
192.168.1.10/24の/24はプレフィックス長です。先頭24ビットがネットワーク部分であることを表します。
192.168.1.10/24
ネットワークアドレス: 192.168.1.0
利用するネットワーク範囲の目安: 192.168.1.0/24
同じネットワークに属するかどうかは、IPアドレスだけでなく、サブネットマスクまたはプレフィックス長と組み合わせて判断します。
プライベートIPv4アドレス
| 範囲 | プレフィックス |
|---|---|
10.0.0.0 ~ 10.255.255.255 |
10.0.0.0/8 |
172.16.0.0 ~ 172.31.255.255 |
172.16.0.0/12 |
192.168.0.0 ~ 192.168.255.255 |
192.168.0.0/16 |
プライベートアドレスは、組織内や家庭内などの私設ネットワークで利用されます。通常、そのままではグローバルインターネット上の経路として扱われません。
特別なアドレス
127.0.0.1:自分自身を表す代表的なループバックアドレス169.254.0.0/16:IPv4リンクローカルアドレスの範囲0.0.0.0/0:すべてのIPv4宛先に一致するデフォルトルート
IPv6
IPv6アドレスは128ビットで、16進数とコロンを使って表します。連続するゼロは::で一度だけ省略できます。
2001:db8:1::10/64
::1
::1はIPv6のループバックアドレスです。IPv6ではARPを使わず、Neighbor Discoveryの仕組みを利用します。
MACアドレス
MACアドレスは、Ethernetなどのリンク層でネットワークインターフェースを識別するために使われます。
一般的なEthernetのMACアドレスは48ビットで、00:11:22:33:44:55のような16進数で表します。
ip link show
ip -br link
IPアドレスがネットワークを越えて宛先を識別するために使われるのに対し、MACアドレスは基本的に同じリンク上の次の相手へフレームを届けるために使われます。
ルーターを一つ越えるたびに、リンク層のフレームは作り直されます。そのため、送信元MACアドレスと宛先MACアドレスは区間ごとに変わります。
一方、IPパケットの送信元IPアドレスと宛先IPアドレスは、通常は最終的な送信元と宛先を表したまま転送されます。ただし、NATなどでIPアドレスが変換される場合は例外です。
ARP
ARPは、Address Resolution Protocolの略です。IPv4アドレスに対応するリンク層アドレス、通常はMACアドレスを調べるために使われます。
同じネットワーク上の相手へ送る場合
- 送信元は、宛先IPv4アドレスが自分と同じネットワークにあると判断します。
- ARP要求をブロードキャストし、「このIPv4アドレスを持つ相手は誰か」と問い合わせます。
- 該当する端末が、自分のMACアドレスをARP応答で返します。
- 送信元は、そのMACアドレスを宛先としてEthernetフレームを送ります。
別のネットワーク上の相手へ送る場合
送信先が別ネットワークにある場合、端末は最終宛先のMACアドレスを直接調べません。代わりに、次の転送先であるデフォルトゲートウェイなどのMACアドレスをARPで調べます。
このとき、Ethernetフレームの宛先MACアドレスはゲートウェイですが、IPパケットの宛先IPアドレスは最終的な通信相手です。
ip neigh show
ip neigh show dev eth0
Linuxでは、ARPで得た対応関係を近隣テーブルで確認できます。IPv4の近隣テーブルはARPテーブルとも呼ばれます。
表示される状態には、REACHABLE、STALE、FAILEDなどがあります。
DNS
DNSは、Domain Name Systemの略です。example.comのような名前と、IPアドレスなどの情報を対応付ける、階層型で分散された仕組みです。
名前解決の流れ
- アプリケーションが、ホスト名に対応するIPアドレスを必要とします。
- 端末上のリゾルバが、設定されたDNSリゾルバへ問い合わせます。
- 必要に応じて、ルート、トップレベルドメイン、権威DNSサーバーなどが参照されます。
- 得られた結果が端末へ返され、一定時間キャッシュされます。
主なDNSレコード
| 種類 | 主な役割 |
|---|---|
A |
名前に対応するIPv4アドレス |
AAAA |
名前に対応するIPv6アドレス |
CNAME |
別名から正式名への対応 |
MX |
メール配送先 |
NS |
ゾーンを担当するDNSサーバー |
PTR |
IPアドレス側から名前を調べる逆引き |
Linuxで関係するファイル
/etc/hosts:ローカルで静的に名前とアドレスを対応付ける/etc/resolv.conf:参照するDNSサーバーや検索ドメインなどの情報/etc/nsswitch.conf:名前解決で参照する情報源の順序などを設定する
getent hosts example.com
dig example.com
host example.com
getent hostsは、システムに設定された名前サービスの順序を通して確認するときに便利です。digやhostは、DNSへ直接問い合わせて応答を詳しく確認するために使います。
DHCP
DHCPは、Dynamic Host Configuration Protocolの略です。端末へネットワーク設定を自動的に配布するための仕組みです。
DHCPから配布される代表的な情報には、次のものがあります。
- IPv4アドレス
- サブネットマスク
- デフォルトゲートウェイ
- DNSサーバー
- アドレスを利用できる期間であるリース時間
DORA
DHCPv4でアドレスを取得する基本的な流れは、DORAという順番で覚えられます。
| 段階 | 名称 | 内容 |
|---|---|---|
| D | Discover | クライアントが利用可能なDHCPサーバーを探す |
| O | Offer | サーバーが利用可能なアドレスなどを提案する |
| R | Request | クライアントが利用したい提案を要求する |
| A | Acknowledge | サーバーが割り当てを確認する |
DHCPv4では、通常、サーバー側がUDPの67番ポート、クライアント側がUDPの68番ポートを使います。
端末は割り当てられたアドレスを永久に所有するのではなく、リース期間の途中で更新を試みます。
ルーティング
ルーティングは、IPパケットを宛先ネットワークへ送るために、次の転送先や出力インターフェースを選ぶ処理です。
ip route show
ルーティングテーブルには、宛先プレフィックス、ゲートウェイ、出力インターフェース、メトリックなどの情報が登録されます。
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
192.168.1.0/24:直接接続されたネットワークへの経路default:より具体的な経路がない場合に利用するデフォルトルートvia 192.168.1.1:次の転送先となるゲートウェイdev eth0:パケットを出すインターフェース
最長一致
複数の経路が宛先に一致する場合、一般にプレフィックス長が最も長い、つまり最も具体的な経路が優先されます。これを最長一致、Longest Prefix Matchと呼びます。
ip route get 8.8.8.8
ip route getを使うと、指定した宛先へ送る際に、どの経路、ゲートウェイ、送信元アドレス、インターフェースが選ばれるかを確認できます。
デフォルトゲートウェイが設定されていない場合、同じネットワーク内とは通信できても、別ネットワークへ到達できないことがあります。
通信の流れと確認コマンド
ブラウザやコマンドから、別ネットワーク上のサーバー名へ接続するときの流れをまとめます。
- DNSなどを使い、サーバー名から宛先IPアドレスを調べます。
- 自分のIPアドレスとプレフィックスから、宛先が同じネットワークか別ネットワークかを判断します。
- ルーティングテーブルから、出力インターフェースと次の転送先を選びます。
- IPv4ではARPを使い、同じリンク上の次の転送先のMACアドレスを調べます。
- IPパケットをEthernetフレームへ入れて送信します。
- 必要に応じてルーターが次のネットワークへ転送し、最終的な宛先へ到達します。
- TCPやUDPのポート番号を使い、宛先端末上のアプリケーションへデータが渡されます。
基本の確認順序
ip link show
ip addr show
ip route show
ip neigh show
ping -c 4 192.168.1.1
getent hosts example.com
dig example.com
ip route get 8.8.8.8
| 確認内容 | 代表的な確認方法 |
|---|---|
| インターフェースが有効か | ip link show |
| IPアドレスとプレフィックス | ip addr show |
| デフォルトゲートウェイと経路 | ip route show |
| ARP・近隣情報 | ip neigh show |
| IPレベルの疎通 | ping |
| システム全体の名前解決 | getent hosts |
| DNS応答の詳細 | dig |
症状から考える
- IPアドレスへのpingは成功するが、名前では失敗する:DNSや
/etc/hosts、名前解決設定を確認する - 同じネットワークの相手へ届かない:リンク状態、IPアドレス、プレフィックス、ARPを確認する
- 同じネットワークへは届くが外部へ届かない:デフォルトルートやゲートウェイを確認する
- pingは成功するがSSHへ接続できない:TCPポート、sshd、ファイアウォールなど上位の確認へ進む
詳しい使い方は、次のマニュアルでも確認できます。
man 8 ip
man 8 ip-address
man 8 ip-link
man 8 ip-neighbour
man 8 ip-route
man 7 ip
man 5 resolv.conf
man 5 nsswitch.conf
30秒チェック
- OSI参照モデルで、IPとルーティングは主に第何層でしょうか。
- TCP/IPモデルの四つの層を、上から順に答えてください。
- IPv4アドレスに対応するMACアドレスを調べるプロトコルは何でしょうか。
- 別ネットワーク上の相手へ送るとき、端末がARPで調べるのは通常誰のMACアドレスでしょうか。
- DHCPv4の基本的な四段階を表すDORAは、何の略でしょうか。
- 複数の経路が一致した場合、一般にどの経路が優先されるでしょうか。
答えを表示
- 第3層、ネットワーク層
- アプリケーション層、トランスポート層、インターネット層、リンク層
- ARP
- デフォルトゲートウェイなど、同じリンク上の次の転送先
- Discover、Offer、Request、Acknowledge
- プレフィックス長が最も長い、最も具体的な経路
要約
- OSI参照モデルは、通信機能を七つの層に分けて整理します。
- TCP/IPモデルは、一般にアプリケーション、トランスポート、インターネット、リンクの四層で説明されます。
- IPアドレスはIPネットワーク上の宛先を識別し、プレフィックスはネットワーク範囲の判断に使われます。
- MACアドレスは、同じリンク上の次の相手へフレームを届けるために使われます。
- ARPは、IPv4アドレスに対応するMACアドレスを調べます。
- DNSは、名前とIPアドレスなどの情報を対応付けます。
- DHCPは、IPアドレス、プレフィックス、ゲートウェイ、DNSなどを自動設定するために使われます。
- ルーティングは、宛先プレフィックスに基づいて次の転送先とインターフェースを選びます。
- 別ネットワーク宛てでは、最終宛先のIPアドレスを保ちながら、同じリンク上のゲートウェイのMACアドレスへフレームを送ります。
- 切り分けでは、リンク、IPアドレス、経路、ARP、名前解決、ポートの順に確認すると整理しやすくなります。
参考資料
- ISO/IEC 7498-1:1994:OSI Basic Reference Model
- RFC 1122:Requirements for Internet Hosts - Communication Layers
- ip(7) manual page
- ip(8) manual page
- ip-address(8) manual page
- ip-link(8) manual page
- RFC 1918:Address Allocation for Private Internets
- RFC 8200:Internet Protocol, Version 6 Specification
- RFC 826:Address Resolution Protocol
- ip-neighbour(8) manual page
- RFC 1034:Domain Names - Concepts and Facilities
- RFC 1035:Domain Names - Implementation and Specification
- RFC 2131:Dynamic Host Configuration Protocol
- ip-route(8) manual page