FrontPage > Network2 (Now)



はじめに

2年生時、秋学期、コンピュータネットワーク2の授業のメモ。

準備

TCP/IP 下位層は、「プリ、デブ、ネル」だ!

Lesson01

休みました

物理層

データリンク層前半

Lesson02

データリンク、ネットワーク層について

データリンク層 - 後半

役割

  1. 誤り検出
  2. 媒介アクセス制御

誤り検出

「ネットワーク層」に大して「未検出の伝送の誤りのない回線」と見えるような回線に変換する

媒介アクセス制御(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 を使用している

ループ検出するための技術

スパニングツリー
ルートブリッジを起点にブリッジ間でツリーを構築。
各ブリッジ間で、データのループを検出し、他のツリーに流さない。
ソースルーティング
送信元にデータが帰ってきたときに、経由ブリッジを把握し、効率よく送信を行う

ネットワーク層

目的

  1. 異種データリンク間の相互接続
  2. 拡張性の問題の解決

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 を持っていもいい仕組み

ルーティングテーブル

  1. 経路制御表を参照
  2. IP送信先ネットワーク決定
  3. 送信
  4. 次のネットワークへ

ルーティングテーブルの集約

よくわからない。
要は、サブネットマスクを1bitのばして、一括送信する。管理する

IPの分割処理と、再構築処理

異なるネットワークに属している場合、最大送信パケット長が異なる場合がある。
そういうときにルータにデータが届いた時点で、データを短くしたり、逆に、戻すときに復元したりする処理が必要になったりする。

経路MTU検索
IT Pro 記事

IP ヘッダ

IPv4とかIPv6の企画に従って、ヘッダが規定されている。

ARP

Address Resolution Protocol
送信先の MAC Address を取得する

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 - トランスポート層

役割

  1. ポート番号によるアプリケーションの識別
  2. 通信の処理
    クライアント/サーバモデル
    サーバプログラム:デーモン、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、否定確認応答
「え?なんだって?」

シーケンス番号

通信を開始してから、どんだけデータを送ったのか確認し、番号をつける

正常時のデータ通信 - シーケンス番号と確認応答

  1. A→B データ送信 シーケンス番号1〜10000
  2. B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001
  3. A→B データ送信 シーケンス番号100001〜20000
  4. B→A Bがデータを受け取ると、確認応答を出す シーケンス番号20001

異常時のデータ通信 - パケット喪失時

  1. A→B データ送信 シーケンス番号1〜10000
  2. 途中 データ喪失
  3. A→B 確認応答がないので、データ再送信 シーケンス番号1〜10000
  4. B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001

異常時のデータ通信 - 確認応答が喪失した場合

  1. A→B データ送信 シーケンス番号1〜10000
  2. B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001
  3. 途中 確認応答データ喪失
  4. A→B 確認応答がないので、データ再送信 シーケンス番号1〜10000
  5. B  Bがデータを受け取ると、シーケンス番号で再送信かどうか理解できる
  6. B→A Bがデータを受け取ると、確認応答を出す シーケンス番号10001

シーケンス番号、確認応答による制御

上の3つの機構を使用する事により、TCP/IPの「順序制御、再送制御」を行う

再送タイムアウトの設定

再生までどのくらい待てば良いのか
短距離の高速LAN:短時間、長距離通信:長時間とか?
RTT
Round Trip Time
毎回の通信毎に、このRTTとその「揺らぎ」を計測し、最適な再送タイムアウトを設定する

コネクション確立 - スリーウェイハンドシェイク

これによって、相互通信が可能となる。
通信機器同士にメモリが確保されて、あとは、好き勝手にできる。

  1. A→B SVN。コネクション確率要求
  2. B→A ACK、SVN。
  3. A→B ACK。

コネクション切断

これによって、相互通信が切断され、メモリを解放する。

  1. A→B FIN
  2. B→A ACK
  3. B→A FIN
  4. 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 入門編 - 著者 発行日 出版社:?
教科書。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Ads by Sitemix