差分

移動先: 案内検索

デバイススペシャルファイル

277 バイト追加, 2015年7月27日 (月) 16:24
/* ネットワークデバイス */
== ネットワークデバイス ==
1981年当時4.1BSDを改造しTCP/IPのスタックを搭載したのがUNIXのTCP/IPの始まりです。IPの始まりです<ref>私の個人的経験でいわせてもらうと4.2BSDリリース時に入っていたTCP/IPはどう贔屓目に見ても、安定して利用するというには程遠く、プログラム中で引数をちょっと間違えるとシステム全体がいとも簡単にダウンしました。安定して使えたという実感は4IPはどう贔屓目に見ても、安定して利用するというには程遠く、プログラム中で引数をちょっと間違えるとシステム全体がいとも簡単にダウンしました。安定して使えたという実感は4.3BSDになってからです。</ref>当時のLANも多くの場合イーサーネット(Ethernet)で構築されていました。NIC (Network Interface Card) とか、あるいは LANポート と呼ぶネットワークインタフェースのためのデバイスがあり、そのデバイスファイルとして /dev/eth0 が作成されました。
当時、我々がLANと呼ぶものはイーサーネット(Ethernet)で構築されていました。NIC (Network Interface Card)とか、あるいはLANポートとか呼ぶものも、使っているのはイーサーネットでした。そのため/dev/eth0といった名前でネットワークのデバイスファイルが作成されました。むかしのLinuxもイーサーネットのデバイスは、もちろんUnix流に/dev/の下にあるデバイススペシャルファイルで、デバイスは/dev/eth0と見えていました。;補足: eth0は最初に認識しているイーサネットのネットワークインタフェースのデバイスで、複数のネットワークポートやNICが存在していた場合、 eth1、 eth2... となります。
;補足: eth0は最初に認識しているイーサネットのネットワークデバイスで、複数のネットワークポートやNICが存在していた場合、eth1、eth2むかしのLinuxもイーサーネットのデバイスは、もちろんUnix流に /dev/ の下にあるデバイススペシャルファイルで、デバイスは /dev/eth0 と見えていました。ところが今日のLinuxはネットワークデバイスに対してはスペシャルファイルとして用意していません。イーサーネットデバイスのはずである/dev/eth?というのはLinux 2...となります。2以降なくなりました。理由は単純に1つのイーサーネットのデバイスが、1つのIPアドレスを持つというわけではなくなったからです。現在はハードウェアに1つのイーサーネットのポートしかなくても、オペレーティングシステムとして、その1つのポートに複数のIPアドレスを割り当てることができます。
ところが今のLinuxはネットワークデバイスに対してはスペシャルファイルとして用意していません。イーサーネットデバイスのはずである/dev/eth?というのはLinux 2.2以降なくなりました。理由は単純に1つのイーサーネットデバイスが、1つのIPアドレスを持つというわけではなくなったからです。ハードウェアに1つのイーサーネットのポートしかなくても、オペレーティングシステム的にはその1つのポートに複数のIPアドレスを割り当てることができます。ネットワークインタフェースの設定にはifconfigを使いますが、通常はシステムの設定ファイルに指定のフォーマットで登録しておけば、システムのブート時に設定スクリプトが動き、自動的に割り当ててくれます。Debian系のディストリビューションだと/etc/network/interfacesに、RedHat interfaces に、RedHat 系だと/etc/sysconfig/network-scripts/ifcfg-eth0に記述します。eth0 に記述します。
ネットワークインタフェースの設定状況を見るネットワークインタフェースの設定状況を見るのには次のようにします。  <pre class="bash">
$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:C0:26:28:12:C5
inet addr:127.0.0.1 Mask:255.0.0.0
....
</pre> ;補足: loはループバックloはループバックのための仮想デバイスです。127.0.0.1は特別なIPアドレスで、これは自分自身を指します。 
ifconfigを使う以外にも/proc/net/dev/を見ることで現在のネットワークインタフェースのデバイスの状況を確認することができます。
ifconfigを使う以外にも/proc/net/dev/を見ることで現在のネットワークインタフェースを確認することができる。
<pre class="bash">
$ cat /proc/net/dev
Inter-| Receive ....
wlan0: 0 0 0 0 0 0 ...
eth0: 1087299 17929 0 0 0 0 ...
</pre>
== udev hald ==