#acl Known:read,write,delete,revert,admin Room:read All:read = 講習会に向けたメモ = ネットワーク講習会でなにやるか。MMA,ひいてはサークル棟のネットワーク管理者になれるレベルの知識をつけることを目標とする。 まだ妄想段階。順番結構テキトー。書いてみたけど実現できる気がしない。でも全部使ってるよなあ・・・。必要だよなあ・・・。 <> = 基礎知識 = 基本的な用語とか概念とかの解説。 == コンピュータネットワークとは == 相互に通信可能な複数のコンピュータと関連する機器からなる系。これの実現方法と応用について解説する予定です。 == パケット通信とは == 通信の形態は2つあります。一つは回線交換、もう一つはパケット通信です。 回線交換はデータの伝送路(これを回線という)を占有して通信を行います。電話はこの方式をとっています。 パケット通信ではデータを細分化して(この細分化されたデータをパケットという)送ります。伝送路上の中継器まで送れる時に送ります。中継器も同じようにしてパケットを送ります。こうして目的の端末までパケットを送ります。 これから扱うコンピュータネットワークはすべてパケット通信で成り立っています。 == ノードとは == ネットワーク上のコンピュータや専用機器など,データを送受信したり中継したりする機器をノードといいます。コンピュータと言ってしまうと専用のルーターなどの機器が入るのか入らないのか微妙なためここではノードという用語を使います。 == トポロジーとは == ネットワークの形態のこと。Wikipediaの記事が分かりやすい。http://ja.wikipedia.org/wiki/ネットワーク・トポロジー == プロトコルとは == 通信時の取り決め。使う周波数はこの辺ねーとか使う文字コードはこれねーとかこの信号送ったら処理能力の限界まできてるからしばらく待ってねーとか。 手旗信号とかモールス符号とか考えると分かりやすいかな。 == OSI Reference Model(OSI参照モデル) == 例えばテキストファイルを送るプロトコルを作るとして、そのために電気信号やらエラーが起きたときの処理やら使用する文字コードやらを単一のプロトコルで決めてるといろいろと不都合が起きます。通信に使用する物理媒体が変わった(今まで有線でやってたけど今度から無線でやることに)とか、そもそも1からプロトコル全部作るの面倒くさくてやっとれんとか。 そんなわけで通信に必要な機能をいくつかのプロトコルに分けて決定することを考えるわけです。 ISO(International Organization for Standardization、国際標準化機構)とITU-Tが作った標準がOSI(Open Systems Interconnection)です。この標準が普及することはなかったのですが、モデルとしてよくできているのでコンピュータネットワークの解説でよく使われます。 OSI Reference Model(長いので以下OSI)では通信を7つのLayer(層)に分けて考えます。 * Application Layer * Session Layer * Presentation Layer * Transport Layer * Network Layer * Data Link Layer * Physical Layer(物理層) 下から順に第1層,第2層・・・ということもあります。 各層役割が分けられています。実際にはOSIは普及せず、TCP/IPというプロトコル群が普及しました。そんなわけで各層の機能については細かく覚えなくても構いません。ただネットワーク機器の名前に使われていたり日常会話でたまに使ったりするので大体何をするのかは知らないと困ることがあります。 == TCP/IP == 現在のインターネット(the Internet)で使用されているプロトコル群(プロトコルの集合)です。IETF(Internet Engineering Task Force)がRFC(Request for Comments)という形で標準化しています。OSIのように明確な階層モデルをとりません。 この講習の前半はTCP/IPについての講習です。 == 物理層の規格 == TCP/IPはネットワークの物理的実装(OSIの物理層・データリンク層に位置する部分)に依存しないよう設計されています。そんなわけで物理的実装には別の規格がいくつかあります。その内Ethernet(IEEE802.3)とWi-Fi(IEEE802.11)についても解説します。 = Ethernet = 有線LANに使われているのは大体これです。 IEEE802.3で標準化されています。 ネットワークの管理に最低限必要な部分以外は解説しません。wikipediaに十分詳しい記事があります。http://ja.wikipedia.org/wiki/イーサネット == MACアドレス == 各ネットワークインターフェースにはMACアドレスという全世界で一意なアドレスが割り当てられていることになってます。このアドレスをもとに通信が行われます。 インターフェースのMACアドレスを調べるにはifconfigコマンドを使用します。 {{{#!wiki solid ifconfig ''interface'' }}} 出力のetherで始まっている部分がMACアドレスです。izの端末のEthernetインターフェースでは04:20:9a:40:a8:6bでした。 すべてのインターフェースについて調べることもできます。 {{{#!wiki solid ifconfig -a }}} === ブロードキャストアドレス === ネットワークに接続しているインターフェースすべてを指す特殊なアドレスです。ff:ff:ff:ff:ff:ffがそれです。 ネットワーク全体にデータを送信するときや相手のMACアドレスが分からないときに使用します。後述するARP、DHCPなどで使われます。 == Ethernet Frame == Ethernetではデータをframeという単位でやりとりします。frameには同期信号(送られてくるデータのどこからどこまでが1frameか認識するための信号)、宛先MACアドレス、送信元MACアドレス、転送するデータ、エラー検知のためのデータが含まれています。 詳しくは http://ascii.jp/elem/000/000/427/427324 で解説されています。 == Ethernetの各規格について == Ethernetというのは複数個ある規格の総称です。基本的な機能は同じですが、速度、通信形態(半二重通信か全二重通信か)などが異なります。適切な規格のものを選びましょう。詳しくはwikipedia見てください。 == 機器 == Ethernetに関する機器で覚えておくべきこと === LANケーブル === 複数個規格があることに留意してください。お使い頼まれたときに用途に合わないケーブル持ってったりしたら時と場合によっちゃ怒られます。 また、コンピュータ同士を接続するときはクロスケーブルという特殊なケーブルを使用します。 === ハブ === 見れば分かるとおりLANケーブルは2つの機器を接続するものです。1本のケーブルに5台も10台もつなげません。 ハブは複数のLANポートを持ち、ハブにつながっている機器のデータリンク層の通信を中継します。 中継といいましたがこいつがやることは接続している機器のどれかからデータが来たら、接続している機器すべてにデータを渡します。接続している機器はデータが来たらあて先のMACアドレスを見て、それが自分のものであれば受理し、そうでなければ無視します。 データが来るたびに接続している機器すべてにデータを渡すのでかなり効率が悪いです。これを改善するためにスイッチングハブが作られました。 === スイッチングハブ === = IP(Internet Protocol) = IPの機能はデータを特定のホストに届けることです。送信先ホストが別のネットワーク上にあるものでも送信可能です。これをEnd-to-Endの通信といいます。 OSIのネットワーク層に位置するプロトコルです。データの転送にはデータリンク層・物理層のEthernetやWiFiを使用します。 == Routing == End-to-Endの通信では相手が同一ネットワークにいるとは限らないため,相手まで通信を中継してもらう必要があります。ネットワークを越えてデータを中継するノードをGatewayとかRouterと呼びます。中継するノードを選択する作業をRoutingと呼びます。 == End-to-End Principle == TCP/IPを設計するに当たって採用された原則です。要約するとネットワーク上の中継器は単に中継するだけで,通信エラーの検知やトラッフィク制御といった機能はすべて通信しているノードが行うというものです。 この原則に従い,IPではネットワークの制御やデータが届いたかどうか,届いたデータにエラーがないかの検知は'''行いません'''。こういった機能はTCPが備えています。 == IPアドレス == IPではノードを特定するためにIPアドレスという32bitのアドレスを使用します。例えばsunのアドレスは {{{#!wiki solid 10000010100110011100010001101 }}} 読みにくいので普通は8bitずつ区切って10進に直したものをドットでつなげて表示します。 {{{#!wiki solid 130.153.24.141 }}} IPアドレスはホストではなくインターフェースに割り当てられます。 == Default Gateway == 同一ネットワーク上にないホストとは直接通信ができません。別のネットワーク上にいるホストと通信したいときはGatewayに中継してもらいます。使用するGatewayが特に指定されなかった時に使用するGatewayをDefault Gatewayといいます。 == サブネットマスク == === ネットワーク部とホスト部 === インターネットというのは全世界規模のネットワークです。考えられるIPアドレスは2の32乗(4,294,967,296)あるわけで、こんなもんを1つのネットワークとして1団体で管理するなんてことは当然できないわけです。そこで複数のネットワークに分けておのおの勝手に管理してもらうようになってます。で、どうやってわけてるかというとまずIPアドレスは最初の何ビットかをネットワーク部、残りをホスト部というふうに分けられています。ネットワーク部が各団体に割り振られ、ホスト部をどうするかは各団体にまかされています。 === サブネットマスク === 各団体に必要なIPアドレスの数は当然異なりますので、ネットワーク部の長さを適当に変える必要があります。このときどこからどこまでがネットワーク部なのか判別するためにサブネットマスクというものがあります。 サブネットマスクもIPアドレスと同様32ビットのデータで、IPアドレスとの論理積がネットワークアドレスになるように設定されます。IPアドレス同様、8ビットずつ10進に直し、ドットで区切って表示します。 例えばネットワーク部か最初16ビットならば、そのサブネットマスクは11111111111111110000000000000000(255.255.0.0)です。 サブネットマスクはルーティング時に相手ホストが同一ネットワークにいるかどうかの判定に使用します。つまりこれが適切に設定されていないとケーブルが直接ぶっ刺さってようが電波がわんわん飛んでようが同一ネットワーク上に居ない(=ゲートウェイを通さず直接データを渡すことができない)と判断され、正常に通信できません。 === CIDR === ネットワーク部は最初何ビットというふうに決めるので、人間様としてはサブネットマスクなんてものがなくても何ビット目までがネットワーク部かさえ分かればいいわけです。そんな表記法があります。IPアドレスの後にスラッシュ(/)を入れ、その後に何ビット目までがネットワーク部かを書きます。 例えばIPアドレスが192.168.0.10でサブネットマスクが255.255.255.0のとき、 {{{#!wiki solid 192.168.0.10/24 }}} この表記法をCIDR(サイダーと発音)といいます。 == IPアドレスの割り当て方 == IPアドレスを割り当てるにもifconfigコマンドを使用します。 {{{#!wiki solid ifconfig ''interface'' ''ip_address'' netmask ''subnetmask'' }}} 例えばインターフェースeth0に130.153.24.141/16を割り当てるには次のようにします {{{#!wiki solid ifconfig eth0 130.153.24.141 netmask 255.255.0.0 }}} さてこのアドレスはsunのアドレスでした。というか130.153.0.0 〜 130.153.255.255は電通大が所有しています。ところがこのIPアドレスで正常に設定できてしまいます(やってみましょう)。この設定をしたとき何が起こるか考えてみましょう。 まずインターネットに接続するにはインターネットに接続できるゲートウェイ(ルーター)が同一ネットワーク上に必要です。IPアドレスのネットワーク部が130.153であるゲートウェイを設置し、このゲートウェイを使用するよう設定しなければいけません。この設定がなされていないときインターネットに継いでくれるゲートウェイが見つからず、インターネットにはつなげません。 ではゲートウェイのアドレスを130.153.0.1としてこのゲートウェイを使用する、などと設定すればどうなるでしょうか。実はこの設定もできてしまいます。ただし我々は電通大のネットワーク管理者ではないため、他のどのゲートウェイも130.153.0.0 〜 130.153.255.255へと継いでくれるゲートウェイが我々の管理下にあるゲートウェイだとは認識してくれません。おそらくはインターネットに投げるデータすべてがガン無視されるか電通大のゲートウェイから中継されたと思われて電通大のゲートウェイに返答がいくかでしょう。 == ARP(Address Resolution Protocol) == == IPv6 == = ICMP = = TCP(Transmission Control Protocol) = == Port == == Handshake == == フロー制御 == == 輻輳制御 == == TCP Segment == = UDP(User Datagram Protocol) = == UDP Packet == = 参考書籍 = . [[http://www.amazon.co.jp/gp/product/B0043EWVH4/|TCP/IP Network Administration]] . [[http://www.amazon.co.jp/コンピュータネットワーク第4版-A・S・タネンバウム/dp/4822221067/|コンピュータネットワーク第4版]] . [[http://www.amazon.co.jp/gp/product/B0043EWUNE/|Running Linux]] . [[http://www.amazon.co.jp/dp/4822283119/|ネットワークはなぜつながるのか 第2版]] . [[http://www.amazon.co.jp/dp/4774153745/|プロのための〔図解〕ネットワーク機器入門]]