amarron2’s blog

linuxや資格関係の記事を書きます。基本自分用のメモです。

102-5. ネットワークの基礎

  1. インターネットプロトコルの基礎
    • TCP,IP,UDP,ICMP,などのプロトコルがある
    • TCP/IPでは、ネットワークに接続された機器を識別するのに「IPアドレス」を使う
    • 「/etc/services」ファイルにポートとサービスの対応が記述されている
    • ネットワークで利用できる基本的なコマンドに「telnet」「ftp」「dig」「whois」等がある
  2. 基本的なネットワーク構成
    • 「ifconfig」コマンドでネットワークの設定及び確認ができる(「ifconfig en0 down」や「ifdown en0」でen0のネットワークが無効化)
    • 「/etc/」配下にネットワーク関連のファイルがある(hostname, hosts, host.conf, nsswitch.conf, resolv.conf, sysconfig/network,sysconfig/network-scriptディレクトリ)
  3. 基本的なネットワークの問題解決
    • ネットワークの問題解決には管理コマンドを用いる(ping,traceroute,tracepath,host,hostname,netstat,route)
  4. クライアント側のDNS設定
    • DNSサーバやドメイン名の設定は、「/etc/resolv.conf」ファイル
    • 名前解決の問い合わせ順の設定は、「/etc/nsswitch.conf」ファイル
    • DNSサーバに対して問い合わせは、「dig」コマンド

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アドレスのクラス

  • IPアドレスにはクラスという概念がある
    • Aクラス:ネットワーク部:8ビット、ホスト部:24ビット(大規模ネットワークでの使用)
    • Bクラス:ネットワーク部:16ビット、ホスト部:16ビット(中規模ネットワークでの使用)
    • Cクラス:ネットワーク部:24ビット、ホスト部:8ビット(小規模ネットワークでの使用)
  • IPアドレスの先頭8ビットが0の場合デフォルトルートを表す
  • IPアドレスの先頭8ビットが127の場合自分自身を表す

f:id:Amarron:20150830164833g:plain ※. 画像は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」「ftp」「dig」「whois」等がある

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プロトコルで接続し、ファイルの転送を行う
  • 接続後はサブコマンドで対話的に利用する

ftp [ホスト]

サブコマンド 説明
get ファイル ファイルを受信
mget 複数のファイル 複数ファイルを受信
put ファイル ファイルを送信
mput 複数のファイル 複数ファイルを送信
ascii 転送モードをASCIIテキストに設定
binary 転送モードをバイナリに設定
quit FTPを終了

dig

  • DNSサーバーに登録されている情報を表示(指定したホスト名、ドメイン名に対応するDNSサーバーの設定を表示する)

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コマンド

  • DNSサーバを使ってホストやドメインに関する情報を表示する

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)

  • 国際標準化機構(ISO)によって策定された、コンピュータの持つべき通信機能を階層構造に分割したモデル
  • 通信機能(通信プロトコル)を7つの階層に分けて定義している
階層 名称 説明
上位層
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層

f:id:Amarron:20150926210459p:plain

ホスト名、ドメイン名、FQDN

  • ドメイン名とは、インターネット上のネットワークを特定するための文字列
  • ネットワーク上のコンピュータにつける識別用の文字列を「ホスト名」
  • FQDN(Fully Qualified Domain Name:完全修飾ドメイン名)とは、ホスト名とドメイン名を省略せずにつなげて記述した文字列

f:id:Amarron:20151003164123p:plain

f:id:Amarron:20151003164135p:plain

f:id:Amarron:20151003164144p:plain

f:id:Amarron:20151003164152p:plain

使用した教材

LPIC101,102