Ethernet(イーサネット)
レイヤー 2 / リンク層
Ethernet フレーム
- IP パケット + Ethernet ヘッダー
同一ネットワーク内のネットワーク機器まで渡されたデータを届ける
- MAC アドレスを使って最初の宛先に送る
ARP テーブル(MAC テーブル)
- 同一リンク内のノードに関して IP アドレスに対応する MAC アドレスの対応表を保持
MTU(Maximum Transfer Unit)
- リンク層で送信できる最大データサイズ
- 多くのイーサネットでは 1500 byte
経路 MTU 探索
- ネットワークの途中で分割処理を行うのは非効率
- => 途中のルータで負荷が高くなり、全体のスループットが低下
- 事前に通信するホスト側の最小 MTU を調べて、あらかじめそのサイズ以下に IP パケットを分割してから送る
- 仕組み
- IP ヘッダの分割禁止フラグを設定し、途中のルータで分割処理をしないように設定
- 分割処理をしないと転送できない大きなサイズの IP パケットを受け取ったルータは、その IP パケットを破棄し、送信ホストに対して次の MTU 値を通知
- 通知を受けたホストは、次から通知されたサイズで送る
- ネットワークの途中で分割処理を行うのは非効率
フレームフォーマット
パケットが流れる向き ===>
--------------------------------------------------------------------- | FCS | ペイロード | タイプ | 始点 MAC アドレス | 終点 MAC アドレス | ---------------------------------------------------------------------
- ペイロード
- データ部
- 46 〜 1500 バイト
- 46 バイトより小さい場合には
パディング
と呼ばれるものでつめる
- FCS(Frame Check Sequence)
- Ethernet ヘッダ、ペイロードが壊れてないことを保証するためのチェックディジット
- ペイロード
- データの符号化
マンチェスタ
- データが 0 のときには電圧が高いところから低いところへと変化させ、1 のときには低いところから高いところへと変化させる方式
内部処理
イーサネットフレーム受信側
- NIC
- データの受信
- ※ 現在はこの時点で MAC アドレスを検査し、破棄するかどうかを確認する
- => CPU への割り込みが発生しない
プロミスキャスモード
- NIC ではフレームを破棄せずにすべて受け取り、CPU がそのフレームを受信するか破棄するかを判断するようになる
- NIC => CPU
- 割り込みシグナルを送る
- CPU
- 現在実行している処理を中断
- パケット受信処理を開始
- => ドライバへ処理が移る
- ドライバ
- イーサネットフレームの終点 MAC アドレスを検査し、自分が受け取るべきかどうかを検査
- 受け取る
- タイプを検査して、自分が受け取るべきプロトコルかどうかを検査
- 自分が受け取るプロトコル
- メインメモリにフレームのデータ長文のメモリバッファを用意し、NIC のデータを、データバスを通してメインメモリに転送
- 上位層のプロトコルに処理が移る
ケーブル
UTP(Unshielded Twisted Pair)
- ケーブルの品質によってカテゴリ分けされる
STP(Shielded Twisted Pair)