FrontPage > Network2 (Now)
はじめに †
2年生時、秋学期、コンピュータネットワーク2の授業のメモ。
準備 †
TCP/IP 下位層は、「プリ、デブ、ネル」だ!
Lesson01 †
休みました
物理層 †
データリンク層前半 †
Lesson02 †
データリンク、ネットワーク層について
データリンク層 - 後半 †
役割 †
- 誤り検出
- 媒介アクセス制御
誤り検出 †
「ネットワーク層」に大して「未検出の伝送の誤りのない回線」と見えるような回線に変換する
媒介アクセス制御(MAC : Media Access Control) †
多元接続の機能を提供する
Ethernetフレームフォーマット †
大事なのは、宛先MACアドレス、送信元MACアドレスの2つがあること。
MACアドレス †
ベンダ識別子(OUI:Organiztionally Unique Identifier) + ベンダ内での識別子
媒介共有型ネットワーク †
CD/CSMA †
Collision Detection/Carrier Sense Muitiple Access | 超重要な概念。
ネットワークを監視し、もし通信の衝突が起こったら、そのことをネットワーク全体に報告(Jam Signal)し、ランダム時間待機して、再送信を行う。
媒体非共有型ネットワーク †
スイッチング技術 †
- スイッチングハブ
- それぞれのポートがブリッジになっているハブ
無線LAN †
- CSMA/CA
- Carrer Cense Multiple Access を使用している
ループ検出するための技術 †
- スパニングツリー
- ルートブリッジを起点にブリッジ間でツリーを構築。
各ブリッジ間で、データのループを検出し、他のツリーに流さない。
- ソースルーティング
- 送信元にデータが帰ってきたときに、経由ブリッジを把握し、効率よく送信を行う
ネットワーク層 †
目的 †
- 異種データリンク間の相互接続
- 拡張性の問題の解決
IP †
- Internet Protocol
- Networl Layer の勘所。
EndToEnd? の通信を実現するもの。
- IP Address
- Internet に接続されるホストは、IP Address がつけられる。
これを元に IP Paket が送られる
- ルーティング
- 経路制御のこと。これも IP を用いる。
コネクション型通信 †
通信開始時に、一度ネットワークを構築してから、通信を行う。
早さがなく、複雑になりやすいが、信頼性のある通信に用いる。
コネクションレス型通信 †
- ポップバイポップルーティング
- 各ホップごとに、最短のルートへ通信を行い、その後のことは気にしない。
早く、簡単に通信を行う。
データの信頼性はあまりない。
IP Address †
- IP Address
- 32bit長のデータ。
ネットワーク部 + ホスト部で構築される。
- Sub Net Mask
- IP Address におけるネットワーク部のこと
- クラス
- A ~ D までのクラスがある。
ネットワーク部の長さによって分けられた IP Address の分類。
ちなみに、クラスDはブロードキャストアドレス。
- ネットワークアドレス
- そのネットワークのみに対してデータ送信を行うアドレス
- ブロードキャストアドレス
- すべてのネットワークに対してデータ送信を行うアドレス
- プライベートアドレス
- 決して接続することのない端末同士が、同じ IP Address を持っていもいい仕組み
ルーティングテーブル †
- 経路制御表を参照
- IP送信先ネットワーク決定
- 送信
- 次のネットワークへ
ルーティングテーブルの集約 †
よくわからない。
要は、サブネットマスクを1bitのばして、一括送信する。管理する
IPの分割処理と、再構築処理 †
異なるネットワークに属している場合、最大送信パケット長が異なる場合がある。
そういうときにルータにデータが届いた時点で、データを短くしたり、逆に、戻すときに復元したりする処理が必要になったりする。
- 経路MTU検索
- IT Pro 記事
IP ヘッダ †
IPv4とかIPv6の企画に従って、ヘッダが規定されている。
ARP †
- Address Resolution Protocol
- 送信先の MAC Address を取得する
- MAC Address の必要性
知らないホスト間をネットワークでつなぐ際、MAC Address だけで構築されたネットワークだと、接続されたネットワークに対してすべてのパケットを送信しないといけない。
すると、システムへの付加が大きい。
なので、IPAddress によって構築されたネットワーク単位で解決することで、全体的な付加を軽減する。
ICMP †
- Internet Control Message Protocol
- IPの補助的使用
到達可能メッセージなど、いろいろなメッセージがある
NAT †
- Network Address Translator
- ローカルネットワークでは、プライベートIPアドレスに設定
インターネットワークでは、グローバルIPアドレスに変換
NAPT †
- Network Address Ports Translator
- TCPやUDPのポートも変換する
一つのグローバルIPアドレスで、複数のホスト間での通信が可能
DHCP †
- Dynamic Host Configuration Protocol
- ホストのネットワーク接続時の設定を自動化
実は、ここから後期の範囲
Lesson 3 - トランスポート層 †
役割 †
- ポート番号によるアプリケーションの識別
- 通信の処理
クライアント/サーバモデル
サーバプログラム:デーモン、fork
ポート番号 †
- 5つの数字による通信の識別
- IPヘッダ部(送信元IPAddress, 宛先IPAddress, TCP)と、TCPヘッダ(送信元ポート番号, 宛先ポート番号)
- Well-known Port Number
- 0 ~ 1023
- ほげほげなんばー?
- 1024 ~ 49151
- ダイナミックなポート番号
- 49152 ~ 65535
UDP と TCP †
- User Datagram Protocol
- 単純。IPを用いてコネクションレス。
プログラマの思うがまま。リアルタイム性、多くのホスト間通信。
- Transmission Control Protocol
- 複雑。コネクション、信頼性の高い通信。
順序制御、再送制御、ウィンドウ制御、フロー制御、輻輳制御。
TCPにおけるコネクションとは †
アプリケーション間の仮想回線(バーチャルサーキット)
作成するのは、ソケットAPIとか、socket()を使う。
TCPは、通信の交通監視官みたいな。
パケットロスについての復習 †
- どうして起こるのか
- 回線ノイズによるビット誤り、ルータ・ホストの過負荷によるパケットロス。
確認応答 †
- ACK
- Positive Acknowledgement、肯定確認応答
「うんうん、そうだね」
- NACK
- Negative Acknowledgement、否定確認応答
「え?なんだって?」
シーケンス番号 †
通信を開始してから、どんだけデータを送ったのか確認し、番号をつける
正常時のデータ通信 - シーケンス番号と確認応答 †
- A→B データ送信 シーケンス番号1〜10000
- B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001
- A→B データ送信 シーケンス番号100001〜20000
- B→A Bがデータを受け取ると、確認応答を出す シーケンス番号20001
異常時のデータ通信 - パケット喪失時 †
- A→B データ送信 シーケンス番号1〜10000
- 途中 データ喪失
- A→B 確認応答がないので、データ再送信 シーケンス番号1〜10000
- B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001
異常時のデータ通信 - 確認応答が喪失した場合 †
- A→B データ送信 シーケンス番号1〜10000
- B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001
- 途中 確認応答データ喪失
- A→B 確認応答がないので、データ再送信 シーケンス番号1〜10000
- B Bがデータを受け取ると、シーケンス番号で再送信かどうか理解できる
- B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001
シーケンス番号、確認応答による制御 †
上の3つの機構を使用する事により、TCP/IPの「順序制御、再送制御」を行う
再送タイムアウトの設定 †
- 再生までどのくらい待てば良いのか
- 短距離の高速LAN:短時間、長距離通信:長時間とか?
- RTT
- Round Trip Time
毎回の通信毎に、このRTTとその「揺らぎ」を計測し、最適な再送タイムアウトを設定する
コネクション確立 - スリーウェイハンドシェイク †
これによって、相互通信が可能となる。
通信機器同士にメモリが確保されて、あとは、好き勝手にできる。
- A→B SVN。コネクション確率要求
- B→A ACK、SVN。
- A→B ACK。
コネクション切断 †
これによって、相互通信が切断され、メモリを解放する。
- A→B FIN
- B→A ACK
- B→A FIN
- A→B ACK
TCP/IPは、セグメント単位でのデータ通信 †
Path MTU Discovery 機能は、TCPで擬似的に実装されているため、あまり使われない。
ウィンドウ制御で速度向上 †
1パケット、1フレームごとに確認応答すると...色々無駄が生まれます
- スライディングウィンドウ方式
- 確認応答を待つ間やRTT間隔の間に送信できるデータ量を、並列送信する
セグメント単位ではなく、ウィンドウ単位でデータの送受信を行う
参考プログラム †
- Sock - Richard Stevens' sock Program
- 授業で解説があったプログラム
参考資料 †
- TCP/IP入門
- @IT の連載記事
- 復習を始める、その前に。TCP/IPまるわかり
- ASCII.jp の連載記事
- 仮想ネットワークの実装で学ぶTCP/IP
- CodeAine? の連載記事
参考文献 †
- マスタリングTCP/IP 入門編 - 著者 発行日 出版社:?
- 教科書。