【ネットワーク】お勉強15

【第25回】Layer7 DHCP
自分のIPアドレスを動的に取得する場合に必要
DHCP概論
DHCP割り当てるIPアドレスを管理し,実際に割り当て作業を行うサーバー割り当ててもらうクライアントから成り立つ.
DHCPを行うサーバーをDHCPサーバーという.DHCPサーバーソフトを実行しているホストのこと.
クライアントはDHCPクライアントという.

DHCP 承前
DHCPサーバーでは管理者が事前に割り当てるアドレスの範囲を決めておく必要がある.
管理者が決めた範囲のことをIPアドレスのプールという.
管理者はIPアドレスを貸出という形で割り当てることができる.
この割当期間をリース期間という.

DHCP Message
3 Minutes Networking No.25Layer7のカプセル化される前のデータであるDHCPメッセージ
重要なところはクライアントIPアドレス, 割当IPアドレス, オプション

DHCP 割当動作
IPアドレス(ホスト部)がまだ割り当てられていないDHCPクライアントもIPアドレスを割り当てられるようなプロトコルを使うが眠いので頭に入ってこない.
省略.

【ネットワーク】お勉強14

【第23回】Layer3 サブネットマスク
プライベートアドレス
インターネットでのIPアドレスICANNNICがネットワーク番号を割り振っている.
裏を返せば,インターネットへの接続を考えないネットワークならばICANNのクラスフルアドレッシングに従う必要はない.
しかしネットワーキングデバイスはクラスフルアドレッシングに対応して設計されているので結局必要.
内部LANではプライベートIPアドレスを使う.
プライベートIPアドレスはクラスAの10.0.0.0,クラスBの172.16.0.0-172.31.0.0,クラスCの192.1680.0-192.168.255.0はプライベート用に用意されているのでNICは割り当てない.
内部LANではこれらのアドレスを使う.
これらのプライベートIPアドレスはインターネットに接続しない環境で使われるアドレスで万が一インターネットと接続できる状況になってもルータがインターネットに流さないように止める.
なぜプライベートIPアドレスも通常のIPアドレスと同じような理論で扱うのかというと,もしプライベートIPアドレスのホストがインターネットにつながった場合に元からあったIPアドレスと重複するという事態を防ぐため.

小さなネットワーク
例えばクラスAはホスト番号部が3オクテット=24bits,2^24-2台のホストを管理できる.
これを先頭から順に番号をふるのは管理上良くない.
論理アドレスが階層型であるという性質を利用して小さなネットワークをいくつか作ることを目指す.
この小さなネットワークをサブネットワークという.

サブネットワーク
3 Minutes Networking No.23Figure23-01のようにホスト番号の一部をサブネット番号の領域にする.
ex:
クラスBのネットワークの172.16.0.0というIPアドレス,これをサブネット番号6bits,ホスト番号10bitsに分割する.
この状態でのサブネットワーク1番の1番ホストは
10101100 | 00010000 | 000001 | 0000000001
となり172.16.4.1となる.オクテット単位で考えているので十進数表記でサブネットワーク1番は4になることに注意.
10101100 | 00010000 | 00000100 | 00000001
サブネット番号部に割り当てるbit数は任意だがホストの無いサブネットは無意味なのでホスト部に2bitsは割り当てる.
この場合,ホスト番号が全て0をネットワークアドレス,ホスト番号が全て1なのをブロードキャストアドレスでホストは1bit分の2台登録できる.

サブネットマスク
どのネットワークに属しているかという問題は経路選択の際に重要となる.
サブネットワークは管理者が任意で決めるので経路探索の際にルータが決めるのに障害となる.そこでサブネットを使用する際にはサブネットマスクIPアドレスと同時に表記する.
サブネットマスクとはどこまでがサブネット番号かを示すもの.
10101100 | 00010000 | 00000100 | 00000001 IP addr
11111111 11111111 11111100 00000000 サブネットマスク
3オクテット目の6bits目までがサブネット番号だとわかる.
3 Minutes Networking No.23Figure23-03


【第24回】Layer3 4つのアドレス
データ転送に必要なもの
データ送信には送信元,宛先のMACアドレス,IPアドレスの4つのアドレスが必要

送信元MACアドレス
MACアドレスNICをつけた段階で決定される.
Ubuntuでは$ifconfigで「ハードウェアアドレス」として見ることができる.

送信元IPアドレスの静的な決定
IPアドレスは管理者から渡されたものを使う.
こちらが変更しない限り変わらないので静的という.
IPアドレスを静的な割り振りで決める場合の欠点としてはまず人為的なミスが起こりうるということだ.
人為的なミスとは管理者に割り当てられたアドレスを間違って入力した場合である.
またデバイスの移動の際にIPアドレスをその都度入力し直すとう問題が発生する.

送信元IPアドレスの動的な決定
ある程度の台数を管理するようなLANやデバイスの移動が多いLANでは動的なIPアドレスの割当が一般的.
ネットワークに接続された時点で自動的にIPアドレスを取得する形になる.
IPアドレスを管理しているサーバーに対して「IPアドレスをください」と言ってもらう.
この際, 送信元のIPアドレスがない状態なのに通信できるのはDHCPというプロトコルのため.

【ネットワーク】お勉強13

【第20回】レイヤ3 Internet Protocol
TCP/IP
TCP/IPという現在標準で使われているプロトコルではレイヤ3はIPが受け持つ.

Layer3 Protocol
TCP/IP以外でよく用いられているプロトコルはIPX/SPXやAppleTalk.
レイヤ3プロトコルがパケットの転送を受け持つ.
まず論理アドレスを決定する.
論理アドレスが決まったら経路を決定する(ルーティング).
転送はベストエフォートである.ベストエフォートとは「保証しない」という送信方式である.
「送りますよ?」「はいわかりました」という連絡もなしに送るコネクションレス型通信である.

IPヘッダ
IPヘッダはセグメントの先頭に20-60バイトのIPヘッダをつける.
3 Minutes Networking No.20Table20-21
※フレームでは前後にヘッダとトレーラをつけたがIPパケットはヘッダのみ.
IPパケットには色々な情報があるが最も重要なのは宛先IPアドレスと送信元IPアドレスがあるということ.


【第21回】レイヤ3 IP Addressing
論理アドレス
物理アドレスはユニークなビット列に過ぎないが論理アドレスはそのアドレス自体に意味がある.
論理アドレスはネットワークの管理者がつける.
MACアドレスIEEEがつけたベンダコードとベンダーがつけた割当コードからなる.使用する側は変更不可能.
論理アドレスは管理者が必要に応じて自由につけることができる.
論理アドレスNICではなく各デバイスのネットワークとの接続点ごとにつける.(NICが故障して違うNICに変えても同じ論理アドレスを持つ.)
論理アドレス所属するネットワークの番号+ホストの番号という形になっている.
ネットワークの番号は接続されている全てのネットワークでユニークでなければならない.(孤立したネットワーク内であれば右のネットワークと同じ論理アドレスを持っていてもよい.)
ホストの番号は所属するネットワーク内でユニークでなければならない.

IPアドレス
32bits
32bitsの8bits=1byteごとに区切って十進数表記ができる.
3 Minutes Networking No.21
この1バイトごとの区切りをIPアドレスではオクテットという.
IPアドレスのうち先頭16bitsがネットワーク番号,残り16bitsがホスト番号


【第22回】レイヤ3 クラスフルアドレッシング
インターネットの管理者
IPアドレスは32bitsで4つのオクテットに分かれている.
ネットワーク番号は接続されている全てのネットワークでユニークでなければならない.
インターネットを管理する団体ICANNIPアドレスを管理するのにクラスという概念を用いている.

クラスフルアドレッシング
クラスとはネットワーク番号とホスト番号の比によってIPアドレスを分類した集合である.
3 Minutes Networking No.22Table22-01
IPアドレスの先頭の何ビットかでそのIPアドレスのクラスがどこに属しているのかを判断できる.
3 Minutes Networking No.22Table22-02
電話番号で東京と大阪の市外局番が2桁なのはネットワーク番号の大きさを減らして,ホストの大きさを確保するため.
このように国家に割り当てられるIPアドレスはホストが多いのでネットワーク番号が小さくホスト番号の多いクラスAのものが与えられ, 中小企業はクラスCのものが割り当てられたりする.
このようにクラスに分けてIPアドレスを割り振る方式をクラスフルアドレッシングという.
NIC(Network Informatino Center)が割り当てるのはネットワーク番号までで各ホストのIPアドレスはそのネットワークの管理者が割り当てる.

予約済みアドレス
特別な意味を持つためホスト番号として使ってはいけないアドレス
ホスト番号のビットが全て0か1になるアドレス
ホスト番号が全て0のアドレスをネットワークアドレス
ホスト番号が全て1のアドレスをブロードキャストアドレス
という.
ネットワークアドレスはそのネットワーク自体を表す.
ブロードキャストアドレスはそのネットワーク内の全員が受け取るアドレス.
よって各ネットワークで保有できるホスト数はホスト番号がnビットだとすると2^n-2個

【ネットワーク】お勉強12

【第19回】レイヤ3 Network層
Network層での「ネットワーク」という意味は計算機やデバイスが相互に接続した論理的なグループ, つまり所属している場所という意味.
レイヤ2Datalink層での通信は「そのネットワーク内での相互通信」,レイヤ3Network層では「ネットワーク間の相互通信」を学ぶ.

インターネットワーク
ネットワークの思想:より小さいネットワークを構築していく.理由はトラフィック制御のため.小さい単位で外に出さなくても良いデータは外に出さないようにする.
その小さなネットワーク同士を結ぶ働きをするのがレイヤ3Network層である.

論理アドレス
MACアドレスの欠点はアドレスとその機器の場所が無関係であること.
レイヤ3の論理アドレスMACアドレスの欠点を階層型アドレッシングでカバーしている.
MACアドレスはベンダ番号と製造番号だけなので「誰?」はわかるけど「どこ?」の情報がない.論理アドレスは「どこのネットワーク?」という情報が入っている.
論理アドレスはより細かく分けることが可能で例えば電話番号で0123-456-789という電話番号ならば「市街局番0123の456の789というデバイス」というように探索できる.

ルータ
ルータは宛先への最適な経路を選択する.
宛先への距離,使用するメディアの転送速度,トラフィック量,信頼性などを考慮してより良いルートを探しだす.
経路を探すことをルーティングという.
スイッチがMACアドレスに基づいて行うのに対してルータはレイヤ3の論理アドレスに基づいてルーティングを行う.
ネットワークとネットワークを繋ぐにはルータが必要,もしハブで繋いだとしたらトラフィックの問題が出て,回線が混雑してしまう.
もし,スイッチで接続したらMACアドレスに基づいているので探索に時間がかかってしまう.
よって第3層のルータで繋ぐことに意味がある.

【ネットワーク】お勉強11

【第18回】Datalink層 スイッチ
スイッチ
レイヤ2に属するスイッチを一般的にスイッチングハブという.
※ブリッジの機能はMACアドレスでフィルタリングする.
 ブリッジを通過するフレームか通過させないフレームかを判断する.
スイッチもブリッジと同様にMACアドレスによるフィルタリングを行う.
ブリッジと異なる点はマルチポートという点.
スイッチはどのポートに送るかまで判別する.
スイッチは複数のポートがあり各デバイス(MACアドレス)とそれが接続されているポートとの対応表を持っていて同時に複数のポートから受信した場合も動作する.
3 Minutes Networking No.18Figure18-02
ブリッジと同じくアドレステーブルを持つ.最初はまったく白紙の状態でフレームを受信したらその宛先とポートを覚えておく.
3 Minutes Networking No.18Figure18-03

ストアアンドフォアード
スイッチはバッファメモリを持っている.
スイッチに届いたフレームを一旦バッファに入れて接続が確認できたら通信を始める.
3 Minutes Networking No.18Figure18-04
このようにバッファリングを行う方式をストアアンドフォワード方式という.
store(貯める)してforward(送る)するという方式
現在のイーサネットでは100Mbpsと10Mbps間の通信の中継になる場合などボトルネックを防ぐために,一時的にバッファに入れておく必要がある.よってスイッチを使うことが多い.
フレームを一時記憶するための遅延時間が欠点でもある.

前二重イーサネット
前二重方式とは送信しながら受信もできる.

スイッチの利点
衝突が発生しない.
衝突ドメインを区切ることができる.
スイッチを使えばCSMA/CD(衝突を前提としたアクセス方式)を無視できる.
ストアアンドフォワード方式なので複数のデバイスが同意時に送信可能.

【ネットワーク】お勉強10

【第16回】IEEE802.5とFDDI
ethernetの意味
ethernetのetherとは「エーテル」と言う意味 
エーテルとは古い物理学でひかり熱などの媒体とされた伝説上の物質
信号が全体に伝わっていく様がエーテルのようなのでEthernetというらしい.

トークンパッシング
IEEE802.5はリング型トポロジ
トークンと呼ばれるフレームが巡回している.
トークンが来た時のみ送信する権利がある.
運びたいものがある人はトークンにデータを渡す.データを受け取ったトークンは各人にデータを渡し受領印をもらう.
衝突が発生しないのがメリット
相手が受領したのかも確実にわかることもメリット

IEEE802.5とFDDIのようなトークンパッシングよりもイーサネットCSMA/CDのほうが制御が簡単なせいで機器が安くつくので普及した.
またCSMA/CDのほうがスピードも速い.
FDDI
FDDIは二重リング型トポロジで光ファイバを使う.



【第17回】Data-Link層 ブリッジ
ソースルートとトランスペアレント
ブリッジの由来:2つのLANの架け橋
※ハブの場合, 制御なしに来た信号を流してしまうのでひとつのLANと見られる.
衝突ドメインのようなネットワークの区切りをセグメントというが2つのセグメントをつなげるのがブリッジ
ソースルートブリッジはIEEE802.5のトークンリング同士をつなげるブリッジ
トランスペアレントブリッジは同じアクセス制御方式のセグメントをつなぐ
例えばEthernetFDDIなど
Ethernetのアクセス制御方式はCSMA/CD
エンキャプスレーションブリッジは2つの制御方式のセグメントを間にWANなどを通して中継するためのブリッジ


MACアドレス フィルタリング
ブリッジは受け取ったフレーム(Datalink層で付与されるもの)を解析してそれをもとに制御する.
まずMACアドレスを読み取る.
3 Minutes Networking No.17の図Figure17-03が分かりやすい!
Ethernetで計算機Aから同じセグメントにある計算機B宛のときはブロードキャストなのでセグメントαとセグメントβを結ぶブリッジにも届くが計算機Bは同じセグメントなのでブリッジは破棄する.
計算機Aからセグメントβにある計算機Cにおくるにはブリッジはセグメントβ上の計算機にフレームを送る.
ブリッジを通過できるかはMACアドレスで判断される.
宛先が同じセグメントの場合は通過できない.
このようにフレームを通過させる,させないという制御をフィルタリングという.
ブリッジが計算機のMACアドレスを覚えるのはアドレステーブルを持つからである.
3 Minutes Networking No.17これのFigure17-04
一度ブリッジを通過したMACアドレスをセグメントのどちらにあるのかを記録していく.
ブリッジの利点は同一セグメント内のデータのやりとりが他セグメントに出ないことである.
よって余計なデータがあまり入り込まない.
ネットワークのトラフィックが減る.衝突の可能性が減る.
ブリッジの欠点はフレームを読み取る時間がネットワーク全体に遅延を発生させるということ.
また,欠点としてブロードキャストを止めることができないという限界がある.

【TeX】jlisting, listingsを入れる

ラボのPCにTeX環境を引き継ぐにあたってしたこと
1.texmakerのインストール

$sudo apt-get install texmaker

これでlatexの環境はほぼ構築できる.

2.listings, jlistingsを入れる
コードをのせるときに役立つやつ

$sudo cp /usr/share/texlive/texmf-dist/tex/latex/listings/ jlisting.sty
$sudo cd /usr/share/texlive/texmf-dist/tex/latex/listings/
$sudo mktexlsr

listingsディレクトリがある場所は環境によって異なる模様.
自分の環境はUbunutu 16.04 LTS

【Python】関数の返り値について

PythonではNone,False,0,"",[]などがFalseに評価されるので関数の返り値としてNoneを返すのはバグを起こしやすい.
Noneを返すよりは例外処理するほうが良い,さらに呼び出しの部分で例外処理の結果を明らかにしておくことが望ましい.

def divide(a,b):
    try:
        return a/b
    except ZeroDivisionError as e:
        raise ValueError('Invalid inputs')#raise文で特定の例外を発生

x,y = 4.,3.
try:
    result = divide(x,y)
except ValueError:
    print("Invalid inputs")
else:
    print("Result is %.3f"%result)

【ネットワーク】お勉強9

【第15回】Datalink層 イーサネットの拡張
イーサネットのおさらい
つながっているすべてのノードへフレームを送りつけるブロードキャスト型
CSMA/CDでアクセス制御をしている.
イーサネットでは衝突が起こる.

半二重,全二重
イーサネットでは誰かが送信中は自分は送信できない,自分が送信中は誰かが送信できない半二重通信方式である.
これは同軸ケーブルを使用するイーサネットでは仕方ないが効率が悪い.

同軸ケーブルでなくてツイストペアケーブルであれば衝突は発生しない.
これは全二重通信方式という.

しかしPhysical層のリピータ・ハブを使うと結局一本になってしまうので衝突が生じる.
スイッチならば内部で衝突が起きない仕組みを持っているので全二重通信が可能になる.

Fast Ethernet/Gigabit Ethernet
イーサネットの下位互換(そのまま使える)のファーストイーサネット,ギガビットイーサネットが登場

3 Minutes Networking No.15

【ネットワーク】お勉強8

【第14回】イーサネット/IEEE802.3
イーサネットのフレーム構造
イーサネットはLANの規格として同軸ケーブル(10Mbps),CSMA/CDアクセス制御方式,バス,スター型物理トポロジを使用する.

レイヤ2でレイヤ3から来たパケットに加える情報は

8バイト 6バイト 6バイト 2バイト 46-1500バイト 4バイト
プリアンブル 宛先MACアドレス 送信元MACアドレス フレームタイプ パケット FCS

MACアドレスの流れは
3 Minutes Networking No.13
の図がわかりやすい.


イーサネットの特徴
イーサネットでは送信されたフレームはメディアを通りすべてのノードに到達する.
このような型をブロードキャスト型という.


CSMA/CD
誰かが送っている最中では他の人は送信出来ない.
同軸ケーブルだから衝突が発生するのが理由.

  • キャリア検知(CS)  他の人が話していないか確認する.
  • 多重アクセス(MA)  誰かが話し終わったら誰でも次に発言して良い.
  • 衝突検知(CD)  衝突(ラグの影響で上2つが守れていても起こりうる)してしまった場合は一旦話すのをやめる.

実際のプロトコル
1.送信準備
イーサネットフレームを作成
衝突カウンタを0にする
2.CSMA
キャリア信号を検知する
なければ一定時間待ったあと送信開始
3.CD
送信中に衝突したか検知
衝突していなければ送信完了
衝突していた場合はフレームの送信を一時停止しJAM信号を送信
4.バックオフ
衝突カウンタを+1
衝突カウンタ==16ならば作成したフレームを破棄し送信中止
16未満ならランダムな時間待機後2に戻る
3 Minutes Networking No.14
の図がわかりやすい.


受信側の対応
イーサネットはフレームが全員に届く.
自分が読む必要のないデータかを確認する必要がある.
宛先MACアドレスと自分のMACアドレスを比較する.
自分宛てでない場合はその場で破棄する.
受け取った場合はエラーチェックを行い正しいデータであることを確かめる.
エラーだったら破棄し,エラーでなければレイヤ3に引き渡す.

ベストエフォート型配送
イーサネットCSMA/CDというシンプルなアクセス制御を行うので制御に特別な機器が必要なく安価にネットワークが構築できる.
欠点はエラーフレームは問答無用で破棄してしまうところ.
送信した側はそれが破棄されたかわからない.
このような通信方式はベストエフォート型配送という.

3 Minutes Networking No.14

【ネットワーク】お勉強7

【第13回】Datalink層 レイヤ2アドレッシング
アドレスには論理アドレス物理アドレスがある.
論理アドレスはレイヤ3物理アドレスはレイヤ2の役割を持つ.

物理アドレスはメディアに直接接続されている誰に届けるのかを識別するために使う.
論理アドレスはどのネットワークの誰に届けるのかを識別するために使う.(違うLAN上にある相手との通信)

直接渡す相手の住所が物理アドレスで最終的な届け先が論理アドレス


MACアドレス
MACアドレスとはNICにつけられたアドレス
48bits
先頭の24bitsはベンダコードといい,NICを作った製品メーカーの番号
残りの24bitsはベンダ割当コード,各ベンダが任意につけたコード



MACアドレスの欠点
アドレスと実際の機器の場所が無関係な点
MACアドレスはただの製造番号だから.




windows7MACアドレスを確認する方法は

ipconfig/all

物理アドレスを見る.
16進数で表示されているので先頭24bits=6桁がベンダコード
MACアドレス、ベンダーコード一覧
から調べると確かにDELL Incのベンダコードだった.