コンテンツにスキップ

ネットワーク基礎

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

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

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

OSI.png

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

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

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

  • ネットワーク上の伝送路の選択やパケットの変換などを行う通信の規約を定めたレイヤーです。 ::パケット
    :::ネットワークを流れるデータは、大きくみてパケットと呼ばれる単位で流れます。
    :::パケットには、プロトコルの種別を表すビット列、送信先アドレスや送信元アドレスを示すビット列やデータ本体などがシーケンスに格納されており、受信側やルータなどの機器はそれらを判別して自分へ送られたデータかどうかなどを判断して通信を行います。

::IP

:::InternetProtocolの略。ネットワーク間で通信を行うために使うプロトコルで、IPアドレスをベースにしてLANを越えて通信することができます。
::IPアドレス
:::LANの外に出るために使われる32bitのアドレスです。WANにおける通信を行うには、各コンピュータが固有の一意なIPアドレスを持っていなければなりません。そして、IPアドレスはネットワークアドレス(NetID)とホストアドレス(HostID)に分けられて使われます。また、IPアドレスの振り分け等は各国の組織に一任されており、この組織によって割り当てられるのはネットワークアドレスだけです。ネットワークアドレス以下のホストアドレスは各サイトで自由に振り分けていいことになっています。
:::ちなみに法政大学を示すIPアドレスは、133.25.*.*です。
::ネットワークアドレス(NetID)
:::IPアドレス(32bit)の一部で、世界中のネットワークを識別する部分です。ネットワークアドレスはIPアドレスの先頭bitによって判別できるクラス分けと、ネットワークbitを記述するCIDR表記があります。

  • クラス分類

    Class先頭bitNetID実際の範囲(/の位置までがNetID)割り当てられるホスト(コンピュータ)数
    Class A0先頭8bit0~127/..._16777216
    Class B10先頭16bit128~191./.._65536
    Class C110先頭24bit192~223../._256
    Class D1110-224~239..._-
    Class E1111-240~255...*-
    • Class D: multicastとして使われる。Class E: 未使用。
  • CIDR Classless Inter-Domain Routingの略。現在では、クラスでネットワークアドレスを分ける以外に、ネットワークアドレスをIPアドレスの最後に/を付けネットワークアドレスのbit部分を表記する、というCIDR表記が多く使われています。この表記では、上記のクラス分けよりもっと細かくネットワークアドレスを区切ることができます。この表記が使われる場合、上記のクラス分けは適用されません。

    • 例 上記のクラスBならば、133.25../16という表記になります。

::ホストアドレス
:::上記の*部分のことで、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
  • これらのアドレスについては、WAN側ではルーティングしないことになっていますが、WAN側へこのアドレスを持つパケットを送出することも禁止されています。しかしこれらのアドレスについては、LAN内であれば誰に断わることなく自由に割り当てて使うことができます。

::ループバックアドレス
:::127.0.0.1というIPアドレスで、使っているコンピュータ自身を指す特別なIPアドレスです。

::ブロードキャストアドレス
:::ホストアドレス以下をすべて1にすることによって、そのネットワーク内のコンピュータすべてにデータを送信することができる特別なアドレスです。特例で、255.255.255.255はそのコンピュータが所属するネットワークのすべてのコンピュータにデータを送信するアドレスとなります。このアドレスはコンピュータのアドレスとして使用することはできません。

::MASK

:::そのコンピュータの所属しているネットワークを判別するためのものです。32bitで構成され、IPアドレスとのbitごとのANDをとることにより、ネットワークアドレスを算出することができるようになっています。また、ホストアドレスを区分けしサブネットを構築した時のMASKは特にサブネットマスクと呼び、その時のネットワークアドレスをサブネットアドレスと呼びます。

  • 例 IPアドレスが192.168.1.122でサブネットマスクが255.255.255.0であるならば、ネットワークアドレスは192.168.1までで24bit。CIDR表記、192.168.1.122/24。

::Default Gate Way
:::ある1つのLAN内から外のネットワークのコンピュータへアクセスする際にデータを経由させる機器を指します。外のネットワークにデータを送るためには、出入り口を担っているルータやコンピュータにデータを送り経由させる必要があります。送られたデータはそのコンピュータが知っている別のネットワークへデータを転送し、そのLAN内のルータもしくはコンピュータにより、正しい送信先に転送されます。

::ICMP

:::Internet Control Message Protocolの略。IPを補助するためのプロトコルです。IPは転送中に発生したエラーなどの処理を処理しないため、エラーの通知や動作の確認などはICMPによって行われています。具体的には、pingなどのコマンドで使われるプロトコルがICMPです。

  • データ転送の信頼性を確保するための規約を定めたレイヤーです。 ::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番です。

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

Section titled “セッション層、プレゼンテーション層、アプリケーション層(アプリケーション層)”
  • 通信においてのプログラムとユーザが一番接する部分のレイヤーです。 ::DHCP :::Dynamic Host Configuration Protocolの略。LAN上のコンピュータに動的にIPアドレスを割り当てる方法です。コンピュータがネットワークにログインすると、コンピュータはDHCPサーバーにメッセージを送り、サーバーはそれに応答して空いているIPアドレスをそのコンピュータに振り当てます。

::DNS

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

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

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

ネットワークインタフェースを設定するコマンドです。引数を付けずに実行すると現在環境を確認することができます。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です。
HWaddrMACアドレスNIC(Network Interface Card)に固有に設定されているMACアドレスという情報を表しています。
inet addrIPアドレス手動で設定された、またはDHCPによって割り振られたIPアドレスを表しています。
Bcastブロードキャストアドレス所属するネットワークのブロードキャストアドレスを表しています。個別に設定することも可能です。
MASKネットマスク設定されたネットマスクを表しています。
UPNICの起動状態UPは正しく起動していることを示します。
BROADCASTブロードキャストブロードキャストが使用可能な時に表示されます。
RUNNINGNICの準備状態ドライバが正常にロードされ、メモリへのリソースが割り当てられている状態を表します。この状態が起動準備が整った状態です。
MULTICASTマルチキャストマルチキャストが使用可能な時に表示されます。
MTUMaximum Transfer Unitインターネットとの通信で一度に送ることのできるIPパケットのデータサイズの最大値を表しています。単位はバイト。
Metricメトリック値通常は1。IPパケットにおけるTTL(Time To Live)値を引くための値です。
RX packets…受信パケット統計値順に送受信パケット数、エラーパケット数、破棄パケット数、オーバーランパケット(処理が間に合わなかったパケット)数を表しています。
TX packets…送信パケット統計値上記と同様。
collisions衝突検知回数統計におけるパケットの衝突を検知した回数を表しています。
txqueuelenパケットの送信サイズ統計におけるパケット送信サイズを表しています。
Interrupt割り込みNICが使用する割り込み番号です。
Base addressI/OアドレスNICの開始I/Oアドレスを表しています。
  • eth0はNICのインターフェースとしての名前で、loはループバックアドレスです。
  • 上記はNICの設定が正常に行われている例であり、正常に動作していない部分については表示されません。例えば、IPなどが取得もしくは設定されていない場合は表示されません。
  • 最初の5項目くらいが重要な項目です。

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

netconfig.png

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

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

個々のネットワークインタフェースに関する設定が保存されています。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マシン起動時にこのインタフェースを起動するかを指定します。
BOOTPROTODHCPを使用する場合はdhcp、しない場合はstaticまたはnoneが指定します。
IPADDRIPアドレスを指定します。
NETMASKネットマスクを指定します。
GATEWAYデフォルトゲートウェイを指定します。

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

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

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
  • 127.0.0.1は、自分自身を示すループバックアドレスです。DNSでは提供されない自分自身の名前をスペースかタブで区切って指定します。
  • 同様にDNSを参照しに行く前に解決させたいIPアドレスとホスト名を指定します。

名前解決に利用する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