102-5. ネットワークの基礎
- インターネットプロトコルの基礎
- 基本的なネットワーク構成
- 「ifconfig」コマンドでネットワークの設定及び確認ができる(「ifconfig en0 down」や「ifdown en0」でen0のネットワークが無効化)
- 「/etc/」配下にネットワーク関連のファイルがある(hostname, hosts, host.conf, nsswitch.conf, resolv.conf, sysconfig/network,sysconfig/network-scriptディレクトリ)
- 基本的なネットワークの問題解決
- クライアント側のDNS設定
1. インターネットプロトコルの基礎
TCP/IPプロトコル
OSI参照モデル | TCP/IP参照モデル |
---|---|
アプリケーション層 プレゼンテーション層 セッション層 |
アプリケーション層(HTTP,SMTP,TELNET等) |
トランスポート層 | トランスポート層(TCP,UDP等) |
ネットワーク層 | インターネット層(IP,ICMP等) |
データリンク層物理層 | ネットワークインターフェース層 |
TCP(Transmission Control Protocol)
- 信頼性の高い通信を実現するためのコネクション型プロトコル
- 相手に通信データが正しく届いていることを確認しながら通信を行うので信頼性が高い
- 代表的な機能は次の通り
- 途中で消失やエラーが発生したパッケとの再送
- パケットの伝送準備を整列
IP(Internet Protocol)
- データ転送(ルーティング)をつかさどるコネクションレス型プロトコル
- 相手に通信データが正しく届いているか確認しないため信頼性は低いが伝送速度は早くなる
- 代表的な機能は次の通り
- IPアドレスの規定
- データグラム(伝送単位)の規定
- データグラムが伝送されるネットワーク経路の制御
UDP(User Datagram Protocol)
ICMP(Internet Control Message Protocol)
IPアドレス(IPv4)
- TCP/IPでは、ネットワークに接続された機器を識別するのに「IPアドレス」を使う
- IPアドレスは、32ビットで構成され8ビットごとに「.」で区切って10進数で表記する
- IPアドレスは、ネットワーク部とホスト部に分けられる
- サブネットマスク(255.255.255.0)を使うとネットワーク部とホスト部の境界を求められる
- ブロードキャストアドレスとは、ホスト部のビットを全て1にしたアドレス(192.168.1.255等)
- ブロードキャストアドレスは同じネットワークの全てに送信する特別なアドレス
| ネットワーク部 |ホスト部| 2進数表記: 11000000.10101000.00000001.00000010 10進数表記: 192. 168. 1. 2
IPアドレスのクラス
※. 画像はITmediaより抜粋
プライベートアドレス
- IPアドレスはインターネット内で重複しないように一意に割り当てる必要がある
- ローカルネットワーク内で自由に使うことのできるアドレスを「プライベートアドレス」と呼びクラスごとに範囲が異なる
- Aクラス: 10. 0.0.0 ~ 10.255.255.255
- Bクラス:172. 16.0.0 ~ 172. 31.255.255
- Cクラス:192.168.0.0 ~ 192.168.255.255
IPアドレス(IPv6)
- IPv4が32ビットに対して、IPv6は128ビット
- IPv6は16ビットずつ8ブロクで区切られ16進数で表する
- 各ブロックの先頭の「0」は省略出来る
- 各ブロックが連続して「0」の場合「::」と省略出来る
ポート
- 送信元のアプリケーションや送信先のアプリケーションを識別するために「ポート番号」が使われる(ポート番号はTCP/UDPのエンドポイント(OSIモデルのアプリケーション層のプロトコルとの組合せにも使われる))
- 「/etc/services」ファイルにポートとサービスの対応が記述されている
番号 | プロトコル | サービス/プロトコル | 説明 |
---|---|---|---|
20,21 | TCP | FTP | FTPのデータ転送 |
22 | TCP | SSH | SSH接続(安全なリモート接続) |
23 | TCP | TELNET | TELNET接続(リモート接続) |
25 | TCP/UDP | SMTP | 電子メール(送信) |
53 | TCP/UDP | DNS | DNS |
80 | TCP | HTTP | Web |
110 | TCP | POP3 | 電子メール(受信) |
443 | TCP | HTTPS | Web(SSL) |
ネットワークコマンド
telnet
- 指定したホスト、ポート番号にTelneプロトコルで接続
- ポート番号が省略されると23版ポートで接続
- ホスト指定がない場合対話モードになる
telnet [ホスト [ポート番号]]
[vagrant@localhost ~]$ telnet example.com 80 Trying 93.184.216.119... Connected to example.com. Escape character is '^]'. GET /index.html HTTP/1.1 HOST: example.com HTTP/1.1 200 OK ・・・ <html> ・・・</html> [vagrant@localhost ~]$
ftp
ftp [ホスト]
サブコマンド | 説明 |
---|---|
get ファイル | ファイルを受信 |
mget 複数のファイル | 複数ファイルを受信 |
put ファイル | ファイルを送信 |
mput 複数のファイル | 複数ファイルを送信 |
ascii | 転送モードをASCIIテキストに設定 |
binary | 転送モードをバイナリに設定 |
quit | FTPを終了 |
dig
dig [オプション] [@DNSサーバ名] ホストまたはドメイン名 [検索タイプ]
オプション | 説明 |
---|---|
-x | IPアドレスからホスト名を検索する |
検索タイプ | 説明 |
---|---|
a | IPアドレス |
any | すべての情報 |
mx | メールサーバの情報 |
ns | ネームサーバの情報 |
whois
whois ターゲット [@whoisサーバ名]
2. 基本的なネットワーク構成
ネットワークの基本設定
- ネットワークを設定するには、コマンドで設定する方法と設定ファイルを変更する方法がある
- コマンド:「ifconfig」コマンド等で設定(システムやネットワーク機能を再起動すると失われる)
- 設定ファイル:「/etc」以下のファイルを変更(永続的に変更される)
設定ファイル
ファイル | 説明 |
---|---|
/etc/hostname | ホスト名を記述 |
/etc/hosts | ホスト名とIPアドレスの対応を記述(ホスト名を設定するファイルではない) |
/etc/host.conf | 名前解決の参照先優先順位を記述 |
/etc/nsswitch.conf | 名前解決時の問い合わせ順を記述(IPアドレスからホスト名を検索したり、サービス名からポート番号を検索したりする) |
/etc/resolv.conf | DNSサーバやドメイン名の設定を記述 |
/etc/sysconfig/network | ネットワーク機能設定(使用可否、ホスト名等) |
/etc/sysconfig/network-scriptディレクトリ | 様々なネットワークインターフェースの設定ファイルが格納(IPアドレスを固定で割り当てたい場合このファイルに設定) |
3. 基本的なネットワークの問題解決
主なネットワーク設定・管理コマンド
- ネットワーク設定確認・変更・状況の表示等
pingコマンド
- 指定したホストにICMPパケットを送りその反応を表示する
- Webサーバがダウンしているのか、ホスト自身がダウンしているか判断できる
ping [オプション] ホストまたはIPアドレス
オプション | 説明 |
---|---|
-c 回数 | ICMPパケットの送信回数 |
-i 間隔 | ICMPパケットの送信間隔 |
tracerouteコマンド
- 指定されたホストまでのパケット経路を表示する
- 「ping」コマンドで宛先が見つからなかった場合、ホスト自身に問題があるのかネットワーク経路に問題があるのか判断できる
traceroute ホスト名またはIPアドレス
tracepathコマンド
- 「traceroute」コマンドと同様で経路を表示する
tracepath ホスト名またはIPアドレス[/ポート番号]
hostコマンド
host [オプション] ホスト名またはIPアドレス [DNSサーバ]
オプション | 説明 |
---|---|
-v | 詳細な情報を表示 |
$ host example.com example.com has address 93.184.216.119 $ host 93.184.216.119 119.216.184.93.in-addr.arpa domain name pointer example.com.
hostnameコマンド
- ホスト名の表示、変更が出来る
- 引数にホスト名を指定すると変更され、引数を指定しないと現在のホスト名が表示される
hostname [ホスト名]
netstatコマンド
- ネットワーク機能に関する様々情報を表示する
- 開いているポートの確認でよく利用される
netstat [オプション]
オプション | 説明 |
---|---|
-a | すべてのソケット情報を表示 |
-c | 状況を1秒毎に表示 |
-i | ネットワークインターフェースの状態を表示 |
-n | アドレスやポートを数字で表示 |
-p | PIDとプロセス名も表示 |
-r | ルーティングテーブル※を表示 |
-t | TCPポートだけを表示 |
-u | UDPポートだけを表示 |
※.ルーティングテーブルとは、ルータや端末が保持するパケットの配送先に関する経路情報
[vagrant@localhost ~]$ netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:ssh *:* LISTEN 10.0.2.2:49365 ESTABLISHED t ・・・ # State欄がLISTENは接続待ち受け中、ESTABLISHEDは接続中
// ルーティングテーブルを表示する例 [vagrant@localhost ~]$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.0.2.0 * 255.255.255.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 0 0 0 eth0 default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0 [vagrant@localhost ~]$
項目 | 説明 |
---|---|
Destination | 宛先ネットワーク、または宛先ホスト |
Gateway | ゲートウェイのIPアドレス |
Genmask | 宛先のサブネットマスク。デフォルトゲートウェイの場合、0.0.0.0 と表示される |
Flags | 経路の状態 ( U:経路が有効、H:宛先はホスト、G:ゲートウェイを使用、!:経路は無効 ) |
MSS | TCP接続の最大セグメント数 |
Window | TCP接続のウインドウ・サイズ |
irtt | 初期ラウンドトリップ時間 |
Iface | このルーティングのネットワーク・インタフェース名 |
routeコマンド
- ルーティングテーブルの表示や操作が出来る
- ルーティングとは複数のネットワーク間でデータが正しく届くよう経路(ルート)を制御すること
// 表示 route [オプション] // 追加 route add [パラメータ] // 削除 route del [パラメータ]
オプション | 説明 |
---|---|
-F | カーネル上のルーティングテーブルを表示 |
-C | カーネル上のルーティングキャッシュを表示 |
デフォルトゲートウェイ※を192.168.0.254に設定する例) # route add default gw 192.168.0.254
※. ゲートウェイとは、通信手順(プロトコル)が異なる二者間やネットワーク間の通信を中継する機器やソフトウェア、システムの一種で、最上位層のプロトコルの違いに対応できるもの
ネットワークインターフェースの設定
- 「ifconfig」コマンドでネットワークインターフェースの設定や有効・無効を切り替えられる
ifconfig [ネットワークインターフェース名] [パラメータ]
パラメータ | 説明 |
---|---|
IPアドレス | IPアドレスを設定 |
netmask サブネットマスク | サブネットマスクを設定 |
up | ネットワークインターフェースを有効化 |
down | ネットワークインターフェースを無効化 |
# en0のネットワークが無効化する $sudo ifconfig en0 down
- 「ifup」「ifdown」コマンドでネットワークインターフェースを有効・無効に切り替えられる(ifconfigのupとdownと同様)
ifup [ネットワークインターフェース名]
ifdown [ネットワークインターフェース名]
4. クライアント側のDNS設定
- DNSサーバやドメイン名の設定は、「/etc/resolv.conf」ファイル
- 名前解決の問い合わせ順の設定は、「/etc/nsswitch.conf」ファイル
- DNSサーバに対して問い合わせは、「dig」コマンド
おまけ
階層モデル
OSI参照モデル(OSI reference model)
階層 | 名称 | 説明 | 例 |
---|---|---|---|
上位層 | |||
7 | アプリケーション層 | 具体的な通信サービス(例えばファイル・メールの転送、遠隔データベースアクセスなど)を提供 | HTTP,TELNE,FTP,POP,SMTP,DNS |
6 | プレゼンテーション層 | データの表現方法(例えばEBCDICコードのテキストファイルをASCIIコードのファイルへ変換する) | SSL |
5 | セッション層 | アプリケーション間で通信(セッション)を開始と終了を管理 | RPC |
下位層 | |||
4 | トランスポート層 | ネットワークの端から端までの通信管理(エラー訂正、再送制御等) | TCP,UDP |
3 | ネットワーク層 | ネットワークにおける通信経路の選択(ルーティング)、データ中継 | IP, ICMP,IPSec |
2 | データリンク層 | 直接的(隣接的)に接続されている通信機器間の信号の受け渡し | PPP,Ethernet,ARP |
1 | 物理層 | 物理的な接続(コネクタのピンの数、コネクタ形状の規定、銅線-光ファイバ間の電気信号の変換等) | ISDN,ハブ,無線通信 |
TCP/IP参照モデル(Internet protocol suite)
- 米国防総省(DoD)が作成したモデル
- 実際のネットワークでは実装が容易ということで、OSI参照モデルではなくTCP/IPモデルの方が浸透している
- 通信機能(通信プロトコル)を4つの階層に分けて定義している
- コンピューター同士をつないだネットワークでは、ほとんどTCP/IPプロトコルを使ってデータのやりとりをしている
階層 | 名称 | 説明 | OSI |
---|---|---|---|
4 | アプリケーション層 | 人間との情報のやりとりを担う | 7〜5層 |
3 | トランスポート層 | 信頼性または効率性を提供 | 4層 |
2 | インターネット層 | 宛先ネットワークを判別 | 3層 |
1 | ネットワークアクセス層 | ケーブルなどによる物理的な接続を担当 | 2〜1層 |
- OSI 参照モデル(http://www.cisco.com/)がそれぞれの役割をflashで分かりやすく書いてありました
ホスト名、ドメイン名、FQDN
- ドメイン名とは、インターネット上のネットワークを特定するための文字列
- ネットワーク上のコンピュータにつける識別用の文字列を「ホスト名」
- FQDN(Fully Qualified Domain Name:完全修飾ドメイン名)とは、ホスト名とドメイン名を省略せずにつなげて記述した文字列