ネットワーク基礎

増田

はじめに

ネットワークの基礎的な事柄について解説します。すべて理解することが望ましいですが、「Linuxにおけるネットワーク関連コマンド」以降さえきちんと押さえられていれば前半部分は目を通す程度でもかまいません。

OSI参照モデル

ネットワークにおける相互接続に関する規約をまとめたOSI(Open System Interconnection)のモデルで、それぞれの機能と共に7つに分けられています。下記の図参照。

TCP/IP

TCP/IPとは、ネットワーク層プロトコルはIPでトランスポート層プロトコルはTCPとUDPの2つをもつ形態である。それぞれOSI参照モデルと対応しており、プロトコルの観点から見た区分けとしても考えられます。

今回はsshdに必要なネットワーク層より上位の説明に重点を置きます。

ネットワークの形態

WAN

Wide Area Networkの略。異なる地域にあるコンピュータ同士を電話回線などの公衆回線を使って通信することです。

LAN

Local Area Networkの略。企業内や学校内での限られた場所でのコンピュータ同士の通信のことです。

規格とプロトコル

ネットワーク層(IP)

パケット
ネットワークを流れるデータは、大きくみてパケットと呼ばれる単位で流れます。パケットには、プロトコルの種別を表すビット列、送信先アドレスや送信元アドレスを示すビット列やデータ本体などがシーケンスに格納されており、受信側やルータなどの機器はそれらを判別して自分へ送られたデータかどうかなどを判断して通信を行います。
IP
InternetProtocolの略。ネットワーク間で通信を行うために使うプロトコルで、IPアドレスをベースにしてLANを越えて通信することができます。
IPアドレス
LANの外に出るために使われる32bitのアドレスです。WANにおける通信を行うには、各コンピュータが固有の一意なIPアドレスを持っていなければなりません。そして、IPアドレスはネットワークアドレス(NetID)とホストアドレス(HostID)に分けられて使われます。また、IPアドレスの振り分け等は各国の組織に一任されており、この組織によって割り当てられるのはネットワークアドレスだけです。ネットワークアドレス以下のホストアドレスは各サイトで自由に振り分けていいことになっています。ちなみに法政大学を示すIPアドレスは、133.25.*.*です。
ネットワークアドレス(NetID)
IPアドレス(32bit)の一部で、世界中のネットワークを識別する部分です。ネットワークアドレスはIPアドレスの先頭bitによって判別できるクラス分けと、ネットワークbitを記述するCIDR表記があります。
Class 先頭bit NetID 実際の範囲(/の位置までがNetID) 割り当てられるホスト(コンピュータ)数
Class A 0 先頭8bit 0~127/.*.*.* 16777216
Class B 10先頭16bit 128~191.*/.*.* 65536
Class C 110先頭24bit 192~223.*.*/.* 256
Class D 1110 - 224~239.*.*.* -
Class E 1111 - 240~255.*.*.* -

Classless Inter-Domain Routingの略。現在では、クラスでネットワークアドレスを分ける以外に、ネットワークアドレスをIPアドレスの最後に/を付けネットワークアドレスのbit部分を表記する、というCIDR表記が多く使われています。この表記では、上記のクラス分けよりもっと細かくネットワークアドレスを区切ることができます。この表記が使われる場合、上記のクラス分けは適用されません。

ホストアドレス
上記の*部分のことで、IPアドレスのうちネットワークの識別に使われない部分のことです。
グローバルIPアドレス
上記のIPアドレスのことです。下記のプライベートIPアドレスと対比して使われる言葉です。
プライベートIPアドレス
現在使われているIPアドレスはIPv4という規格であり、現在のこの規格ではIPアドレスが不足し始めてしまっています。それを防ぐために考えられた、LAN内でのみ指定できるIPアドレスです。LAN内ではプライベートIPアドレスを使い通信し、WANと通信する時はルータなどの機器を通してプライベートIPアドレスとグローバルIPアドレスの変換を行い通信する、という方法が一般的です。プライベートIPアドレスとしては以下のものが使用できます。
Class範囲
Class A ×110.0.0.0 ~ 10.255.255.255
Class B ×16172.16.0.0 ~ 172.31.255.255
Class C ×256192.168.0.0 ~ 192.168.255.255
ループバックアドレス
127.0.0.1というIPアドレスで、使っているコンピュータ自身を指す特別なIPアドレスです。
ブロードキャストアドレス
ホストアドレス以下をすべて1にすることによって、そのネットワーク内のコンピュータすべてにデータを送信することができる特別なアドレスです。特例で、255.255.255.255はそのコンピュータが所属するネットワークのすべてのコンピュータにデータを送信するアドレスとなります。このアドレスはコンピュータのアドレスとして使用することはできません。
MASK
そのコンピュータの所属しているネットワークを判別するためのものです。32bitで構成され、IPアドレスとのbitごとのANDをとることにより、ネットワークアドレスを算出することができるようになっています。また、ホストアドレスを区分けしサブネットを構築した時のMASKは特にサブネットマスクと呼び、その時のネットワークアドレスをサブネットアドレスと呼びます。
Default Gate Way
ある1つのLAN内から外のネットワークのコンピュータへアクセスする際にデータを経由させる機器を指します。外のネットワークにデータを送るためには、出入り口を担っているルータやコンピュータにデータを送り経由させる必要があります。送られたデータはそのコンピュータが知っている別のネットワークへデータを転送し、そのLAN内のルータもしくはコンピュータにより、正しい送信先に転送されます。
ICMP
Internet Control Message Protocolの略。IPを補助するためのプロトコルです。IPは転送中に発生したエラーなどの処理を処理しないため、エラーの通知や動作の確認などはICMPによって行われています。具体的には、pingなどのコマンドで使われるプロトコルがICMPです。

トランスポート層(TCP)

TCP
Transmission Control Protocolの略。2つのノード上のプロセス(アプリケーション)間で、信頼性のあるセッション指向の通信を行ないます。TCPを使って送受信されるデータの各バイトにはシーケンス番号という一連の番号が付けられており、これを使ってデータの抜けや重複がないかどうかを検査します。データを受け取った側では、どのシーケンス番号のデータまでを受け取ったかを送信元へ返し(アクノレッジを返す)、これにより送信側ではデータが正しく相手に届いたことが確認できます。もしある程度の時間を待ってもアクノレッジが返ってこなければ、途中でデータが消失したか相手がパケットを取りこぼしたと判断し、再度パケットを送信します。再送を開始するまでの待ち時間は固定ではなく、通信路の遅延特性や、アクノレッジが返ってくるまでの時間、再送回数など、さまざまな条件によって動的に変更され、効率よく通信が行なえるように高度に制御されています。
UDP
User Datagram Protocolの略。2つのノード上のプロセス(アプリケーション)間で、信頼性は保証されないベストエフォート型のデータグラム指向の通信を行ないます。UDPはその下位層にあるIPパケットをほとんどそのままアプリケーションから使えるようにしただけのプロトコルです。そのためパケットが相手に確実に届くという保証はないし、再送や受信確認応答、フロー制御、大きなデータの分割や再合成(フラグメント化)などはすべてアプリケーション側で自分で制御する必要があります。ただしこれらのオーバーヘッドがないので、処理は簡単であり高速という特徴があります。
PORT
コンピュータ間での通信に必要なものはIPアドレスであり、アプリケーションの通信に必要なものの1つがポート番号です。同じホストの中で提供されている様々なサービスを区別するために使われます。ポートの指定には0から65535までの数字が使用できます。
Well-knownポート
ポートの中でよく使われるアプリケーションにはポート番号が指定されており、それら1023番以下に分布しているポート番号のことです。日本語では特権ポートと呼び、rootのプロセスでしか利用できないという制限があります。有名なものは、HTTPの80番。FTPの20番と21番。また、SSHのポートは22番です。

セッション層、プレゼンテーション層、アプリケーション層(アプリケーション層)

DHCP
Dynamic Host Configuration Protocolの略。LAN上のコンピュータに動的にIPアドレスを割り当てる方法です。コンピュータがネットワークにログインすると、コンピュータはDHCPサーバーにメッセージを送り、サーバーはそれに応答して空いているIPアドレスをそのコンピュータに振り当てます。
DNS
Domain Name Systemの略。インターネット上の数字の羅列で表されているIPアドレスを、人が覚えやすいようにドメイン名と呼ばれる名前に置き換え、ホスト名からIPアドレスを割り出すサービスを提供するシステムです。コンピュータはWebブラウザなどでそのホストにアクセスする時、まず始めにDNSサーバに問い合わせを行い、ドット毎に区切られるドメイン名をすべてIPアドレスに変換することによりその目的のWebサイトにアクセスすることができます。

Linuxにおけるネットワーク関連コマンド

ifconfig

ネットワークインタフェースを設定するコマンドです。引数を付けずに実行すると現在環境を確認することができます。Windowsでいうipconfigと似ています。設定の変更はrootでしか行うことはできません。

ifconfig  	起動しているインターフェイスごとのネットワーク設定を表示する

-a 存在するインターフェイスごとのネットワーク設定を表示する

[root@localhost root]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:D0:B7:2A:4D:CF
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2710298 errors:265 dropped:0 overruns:0 frame:265
          TX packets:1744247 errors:0 dropped:0 overruns:0 carrier:0
          collisions:37089 txqueuelen:1000
          RX bytes:714096076 (681.0 Mb)  TX bytes:272072076 (259.4 Mb)
          Interrupt:10 Base address:0x1400 Memory:f0101000-f0101038

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:189852 errors:0 dropped:0 overruns:0 frame:0
          TX packets:189852 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:23705457 (22.6 Mb)  TX bytes:23705457 (22.6 Mb)
項目 意味 説明
Link encap リンクメディアの種類 EthernetやToken Ringなどのネットワークの形態を指します。ほとんどはEthernetです。
HWaddr MACアドレス NIC(Network Interface Card)に固有に設定されているMACアドレスという情報を表しています。
inet addr IPアドレス 手動で設定された、またはDHCPによって割り振られたIPアドレスを表しています。
Bcast ブロードキャストアドレス 所属するネットワークのブロードキャストアドレスを表しています。個別に設定することも可能です。
MASK ネットマスク 設定されたネットマスクを表しています。
UP NICの起動状態 UPは正しく起動していることを示します。
BROADCAST ブロードキャスト ブロードキャストが使用可能な時に表示されます。
RUNNING NICの準備状態 ドライバが正常にロードされ、メモリへのリソースが割り当てられている状態を表します。この状態が起動準備が整った状態です。
MULTICAST マルチキャスト マルチキャストが使用可能な時に表示されます。
MTU Maximum Transfer Unit インターネットとの通信で一度に送ることのできるIPパケットのデータサイズの最大値を表しています。単位はバイト。
Metric メトリック値 通常は1。IPパケットにおけるTTL(Time To Live)値を引くための値です。
RX packets… 受信パケット統計値 順に送受信パケット数、エラーパケット数、破棄パケット数、オーバーランパケット(処理が間に合わなかったパケット)数を表しています。
TX packets… 送信パケット統計値 上記と同様。
collisions 衝突検知回数 統計におけるパケットの衝突を検知した回数を表しています。
txqueuelen パケットの送信サイズ 統計におけるパケット送信サイズを表しています。
Interrupt 割り込み NICが使用する割り込み番号です。
Base address I/Oアドレス NICの開始I/Oアドレスを表しています。

netconfig

Red Hat系ディストリビューションに用意されているネットワークの設定を簡単に変更できるツールです。IPアドレス、サブネットマスク、デフォルトゲートウェイなどを設定できます。このコマンドはrootでしか実行できません。このコマンドで設定を変更すると後述する各種設定ファイルが更新されます。

netstat

Windowsにもあるネットワークステータスを表示するコマンドです。オプションがWindowsとは異なるので注意が必要です。よく使うオプションは次の通りです。

利用例: netstat -a
        netstat -an | grep LISTEN
オプション内容
なし 現在の有効な接続(ESTABLISHED)のみを表示する。
-a 現在のすべての接続を表示する
-n 出力をIPアドレスなど数値のみに抑制する
-t TCPのみ表示する
-u UDPのみ表示する
-w ICMPのみ表示する
-l LISTEN状態の接続のみ表示する

設定ファイル

/etc/sysconfig/network-scripts/ifcfg-eth0

個々のネットワークインタフェースに関する設定が保存されています。ifcfg-eth0の場合、eth0に割り当てられたネットワークインタフェース用の設定ファイルです。

[user1@localhost user1]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
項目 意味
DEVICE 該当デバイスのインターフェース名を指定します。
ONBOOT マシン起動時にこのインタフェースを起動するかを指定します。
BOOTPROTO DHCPを使用する場合はdhcp、しない場合はstaticまたはnoneが指定します。
IPADDR IPアドレスを指定します。
NETMASK ネットマスクを指定します。
GATEWAY デフォルトゲートウェイを指定します。

/etc/sysconfig/network

ネットワークに関する全体の設定が保存されています。

[user1@localhost user1]$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
項目 意味
NETWORKING ネットワークを使用するかを指定します。
HOSTNAME ホスト名を指定します。

/etc/hosts

IPアドレスとホスト名の対応リストが保存されています。通常名前解決に利用するDNSを参照する前にこのファイルが参照されます。

[user1@localhost user1]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost

/etc/resolv.conf

名前解決に利用するDNSサーバに関する設定が保存されています。

[user1@localhost user1]$ cat /etc/resolv.conf
nameserver 192.168.1.1
domain localhost.localdomain
search localhost.localdomain
項目 意味
nameserver 名前解決に利用するDNSサーバを指定します。複数列記述することもできます。
domain 自身を表すドメイン名を指定します。
search 不完全なFQDN(rat)でアクセスを行おうとする場合に、ドメイン名を補って名前解決を行うようにするためのドメイン名を指定する。スペースかタブで区切って複数指定することができます。
FQDN
Fully Qualified Domain Nameの略。ホスト名もしくはサブドメイン名を含む完全修飾ドメイン名のこと。例: rat.cis.k.hosei.ac.jp