Upload
ruo-ando
View
547
Download
3
Embed Size (px)
Citation preview
1
コンピュータネットワーク
第12回授業 データグラム(UDP)と
ストリーム(TCP)の処理
WEB公開版のため、
内容は大幅に抜粋・修正してあります。
WEB公開版
2
法政大学情報科学部 2012年度コンピュータネットワーク
2012年4月10日~2012年7月19日
第1回
イントロダクション第2回
デジタル伝送技術
第3回
誤り訂正と通信の信頼性第4回
イーサネットとデータリンクの仮想化
第5回
LANの拡張と無線技術
第6回
遠距離通信とインターネットへの接続第7回
後半授業の準備
第8回
通信の種類とフロー制御の基本第9回
大規模ネットワークの構築と運用
第10回
4種類のルーティング第11回
制御パケットとセッション層のネットワーク
第12回
データグラムとストリームの処理第13回
インターネットのインフラストラクチャ
第14回
ネットワークのモニタリングとチューニング
WEB公開版
3
通信の種類は3つ1対1
1対多
多対多
TCPは1対1UDPは1対多
が定石!
WEB公開版
4
OSI参照モデル別概要
(トランスポートまで)
多対多
1対多
1対1
ARPパケットそれぞれのマシン
が不特定多数に送信できる!
IPパケット多数のマシンがルー
タと通信するが、
ルータはブロード
キャストしない。
TCPパケット
終端点が接続さ
れた後で使う。
WEB公開版
5
なぜポート番号が必要なのか? 1つのOSで複数のアプリが通信するため
WEB公開版
6
ポート番号とマルチプレクサ
TCP UCP
IP
マルチプレクサのA,Bにあたるモノが
ポート番号!
APPLICATION1
APPLICATION2
APPLICATION3
WEB公開版
7
ポート番号とデマルチプレクサ
TCP UCP
IP
ポート番号にA,Bの組み合わせを
入力して割り振る。
APPLICATION1
APPLICATION2
APPLICATION3
WEB公開版
8
TCPとUDPWEB公開版
9
ストリームとデータグラム
TCPが処理するのは
ストリーム過去の系列が現在の系列に影響する。
UDPが処理するのは
データグラム時系列同士は影響しない。
ヘッダ(パリティ)などが
付加されている。
WEB公開版
10
ステートマシン(畳み込み符号) vs 代数系演算(ブロック符号)
ブロック暗号の代数系演算に使うシフトレジスタ
畳み込み符号の生
成にはこのようなス
テートマシンを使う。
WEB公開版
11
ブロック符号と
畳み込み(ストリーム)符号
WEB公開版
12
ブロック暗号とストリーム暗号
鍵を使ってブロックごとに暗号化。
RSA, SSH, SSL
擬似乱数を使って1ビットずつ暗号化。
RC4, CDMA
WEB公開版
鍵1
鍵2
生成器
13
データグラム(ブロック)の復号と
代数演算
復号に必要な乗算、除算はハードウェア
(シフトレジスタ)を用い
て行う!
WEB公開版
14
ストリームの復号と系列推定
S S+E
ループ演算、繰り返し復号(ソフトウェアで処理する場合が
多い)を用いてS+EからSを復元する!
WEB公開版
15
コネクション型と ARQ(自動再送要求制御)
TCP
WEB公開版
16
誤り訂正方式の種類
ARQ(Automatic Repeat reQuest)-自動再送要求
特徴– パケットが損失した場合、自動的に再送される
再送処理のオーバヘッドがあるため、リアルタイム伝送には向かない
FEC(Forward Error Correction)-前方誤り訂正
特徴– パケット数個ごとに冗長パケットを生成,送信– パケットが損失しても、冗長パケットから復元できる。
再送処理がないためリアルタイムの伝送処理に適している。
TCPでは、ARQを用いて
実装コストを下げている!
WEB公開版
17
TCPの基本機能
①信頼性のある通信3ウェイハンドシェイクシーケンス番号を使った確認応答
③再送処理再送要求とタイムアウト時間の調整
④動的なフロー制御スライディングウインドウ輻輳制御
WEB公開版
18
TCPと言えば・・・
TCP
確認応答 ウィンドウサイズ
再送処理 輻輳制御
WEB公開版
19
TCPパケット
送信元ポート番号 あて先ポート番号
シーケンス番号
確認応答番号
ヘッダ長 ウィンドウサイズ制御
チェックサム 緊急ポインタ
高信頼性の
ある通信再送処理(第10回)
誤り検出(2回~4回)
3ウェイハンドシェイク
フロー制御輻輳制御
WEB公開版
20
TCP:3-way ハンドシェイク
SYN: synchronizeACK: acknowledge
フラグの種類SYN, ACK, PSH, RST, URG, FIN
WEB公開版
21
TCP:確認応答
確かめながら送る。
送信したシーケンス番号2001
のパケットの確認応答がでない
場合、再送する。
返信側の確認応答番号は次に送ってほしいデータの先頭番号(シーケンス番号)
WEB公開版
22
シーケンス番号の付け方(送信側)
データは、MSS (Maximum Segment Size)に分割する。
この場合はMSS=1000
TCP/IPではデータを
分割して送信できる!
WEB公開版
23
TCP再送:受信側が要求するケース
想定されたシーケン
ス番号と異なるパケッ
トが来た場合再送する。
シーケンス番号は2001では?
( `∀´)b
WEB公開版
24
TCP再送:送信側が再送するケース
しばらく待って
も確認応答3
001のパケッ
トが来ないの
で再送。
( `∀´)b
WEB公開版
25
コネクションレス型と FEC(前方誤り訂正)型制御
UDP
WEB公開版
26
誤り訂正方式の種類
ARQ(Automatic Repeat reQuest)-自動再送要求
特徴– パケットが損失した場合、自動的に再送される
再送処理のオーバヘッドがあるため、リアルタイム伝送には向かない
FEC(Forward Error Correction)-前方誤り訂正
特徴– パケット数個ごとに冗長パケットを生成,送信– パケットが損失しても、冗長パケットから復元できる。
再送処理がないためリアルタイムの伝送処理に適している。
携帯電話やアプリケーションレイヤでの誤り訂正ではFECを使うことが多い!
WEB公開版
27
シャノン限界と誤り訂正符号
ターボ符号(゚Д゚#)
LDPC、Raptor符号(゚Д゚#)
WEB公開版
28
2つの誤り訂正符号
①ブロック符号
ガロア体上での除算、乗算を使う。
ハミング符号、BCH符号、リードソロモン符号
最新の符号→LDPC
②畳み込み符号
擬似乱数(M系列)等を使った系列相関を使う。
CDMA、ビタビ符号、ターボ符号
最新の符号→ターボ符号
WEB公開版
29
ステートマシン(畳み込み符号) vs 代数系演算(ブロック符号)
ブロック暗号の代数系演算に使うシフトレジスタ
畳み込み符号の生
成にはこのようなス
テートマシンを使う。
WEB公開版
O1
O0
O2
X2X1
O0
O1
O1 O2
O2 G(x)
F(x)
30
畳み込み符号はステートマシンを 使って生成する。
X=(a1,a0)内部状態
i/Y i:入力
Y:(O1,O2):出力
①入力する①内部状態
a0とa1が変わる。③V,Uが出力され
る。
O1
O2
WEB公開版
31
ブロック符号とは
①GF(2^m)上の演算により生成される符号。
②G(x)*H(x)=0となるように生成される。
G(x)は原始多項式:G(x)=X^4+X+1など
③H(x)の生成方法:G(x)をフィードバック付き
シフトレジスタであらわし、出力をH(x)とする!
WEB公開版
32
ブロック符号とシフトレジスタ
0 0 1 10 1 0 21 0 0 40 1 1 31 1 0 61 1 1 71 0 1 50 0 1 1
周期7(2^3-1)の擬似乱数が生成される。
0 0 0 0 0 0 00 0 1 1 1 0 10 1 1 1 0 1 01 1 1 0 1 0 01 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1
もう少し大きな符
号を生成すると後半3ビットが誤り
訂正に使える符号が
生成できる!
X^2
O1
O1 O2
X^3
X^0
O0
G(x)
F(x)
O2
O2
始めに0を入
力すると出力
は決定論的
に決まる!
WEB公開版
33
多項式
• 既約多項式:その式より次数の低い多項式 で割り切れない多項式
• 原始多項式:既約でさらに周期が最大の多項 式
• 生成多項式:符号生成時の除算時に使う多 項式
WEB公開版
34
有限体:ガロア体 GF(2)
①ガロア体とは整数を素数で除算した余りの集合であり、要素 が有限で四則演算が閉じている集合である。 - WikiPedia
②つまりA とB という整数があり、任意の素数X で演算結果を 割ることで、通常の演算とは違う空間にA+B を写像する。
• (0 + 0) / 2 = 0• (1 + 0) / 2 = 1• (0 + 1) / 2 = 1• (1 + 1) / 2 = 0
WEB公開版
35
有限体GF(2^4)G(X)=X^4+X+1上の演算(4次の多項式)
GF(2)の1=-1が成立する。
①X^4 = -(X+1) = X+1なので
X^4は(0011)を割り当ることができる。
②X^5 = X*X4 = X(X+1) = X^2 + XX^5は(0110)を割り当てることができる。
G(X)=X^4+X+1上で四則演算ができる集合を体という。
WEB公開版
36
有限体(GF)の演算は シフトレジスタ回路と相性が良い
このシフトレジスタで、GF(2^3):G(X)=x^3+ x + 1の演算ができる!
係数の有無がフィードバックの位
置に対応している。
X^2
O1
O1 O2
X^3
X^1X^0
O0
O0
G(x)
F(x)
O2
O2
WEB公開版
37
2種類の誤り訂正方式
ARQ(Automatic Repeat reQuest)-自動再送要求
特徴– 損失したパケットを自動的に再送する方法
• 再送処理のオーバヘッドのためリアルタイム伝送に向かない•
FEC(Forward Error Correction)-前方誤り訂正
特徴– パケット数個ごとに冗長パケットを生成,送信– パケット損失が発生すれば,冗長パケットから復元
• 再送処理がないためリアルタイム伝送に向く
携帯電話やアプリケーションレイヤでの誤り訂正ではFECを使う。
FECでは
有限体の演算
を用いる!
パリティやチェック
サムなどTCPが使う!
WEB公開版
38
2つのFEC型誤り訂正符号
①ブロック符号
ガロア体上での除算、乗算を使う。
ハミング符号、BCH符号、リードソロモン符号
最新の符号→LDPC
②畳み込み符号
擬似乱数(M系列)等を使った系列相関を使う。
CDMA、ビタビ符号、ターボ符号
最新の符号→ターボ符号
WEB公開版
39
ブロック符号では代数的演算で 復号を行う。
GS=0となるようにSを生成
GS=0
送信の過程
でE(エラー)
が混入
送受信でGを
共有しておく。
EGをエラー
シンドロームという。WEB公開版
WEB公開版
40
たたみ符号では系列推定で
復号を行う。
S S+E
伝送路中でE(エラーやノイズ)が混じったS+Eから、
Sを推定する。(またはEを除去する)。
Sを原因S+Eを結果と
考える!
S+Eの原因は
なんだったの
かを推定する
ためにベイジ
アンネットワー
クなどを使う。
WEB公開版
41
巡回冗長符号
CDMA方式と同じく、受信側と送信側であらか
じめ、同じ符号G(x)を持っている。
送信側は、符号G(x)を用いて、符号H(x)を生成
して送信。このとき、G(x)*H(x)=0となるようにデータを
生成する。
受信側は、受信した符号H(x)を符号G(x)を用
いて検査する。
H(x) / G(x) = 0 なら誤りなし。
H(x) / G(x) > 0 なら誤りあり。(位置も特定できる)
WEB公開版
42
1001を生成多項式G(x)=X^3+X+1
を使って1001001に変換 送られてきたH(x)
をG(x)で割って
余りをチェック
WEB公開版
43
FECなブロック符号の例2 ハミング符号:エラーシンドローム:EG
GS=0となるようにSを生成
GS=0
送信の過程
でE(エラー)
が混入
送受信でGを
共有しておく。
EGをエラー
シンドロームという。
WEB公開版
44
ブロック符号: シフトレジスタによる生成
0 0 1 10 1 0 21 0 0 40 1 1 31 1 0 61 1 1 71 0 1 50 0 1 1
周期7(2^3-1)の擬似乱数が生成される。
0 0 0 0 0 0 00 0 1 1 1 0 10 1 1 1 0 1 01 1 1 0 1 0 01 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1
もう少し大きな符
号を生成すると後半3ビットが誤り
訂正に使える符号が
生成できる!
X^2
O1
O1 O2
X^3
X^1X^0
O0
O0
F(x)
O2
O2
WEB公開版始めに0を入
力すると出力
は決定論的
に決まる!
45
積・商と原始多項式演算
① 【積】GF(2^4)上での計算:G(X)=X^4+X+1G(a)=a^4+a+1=0 a^3*a = a^4 = a+1→(1,0,0,0) * (0,0,1,0) = (0,0,1,1)② 【商】2^m -1 = 2^4 -1 = 15 -> a^15=1a / a^5 = a^16 / a^5 = a^11a^11 = a^3 + a^2 + a(0,0,1,0) / (0,1,1,0) = (1,1,1,0)
WEB公開版
46
積・商はシフトレジスタで計算できる
a*a = (0,0,1,0) * (0,0,1,0) = (0,1,0,0) = a^2a^2 * a = (0,1,0,0) * (0,0,1,0) = (1,0,0,0) = a^3a^3 * a = (1,0,0,0) * (0,0,1,0) = (0,0,1,1) = a^4
+
+
WEB公開版
47
2つのFEC型誤り訂正符号
①ブロック符号
ガロア体上での除算、乗算を使う。
ハミング符号、BCH符号、リードソロモン符号
最新の符号→LDPC
②畳み込み符号
擬似乱数(M系列)等を使った系列相関を使う。
CDMA、ビタビ符号、ターボ符号
最新の符号→ターボ符号
WEB公開版
48
畳み込み符号はステートマシンを 使って生成する。
X=(a1,a0)内部状態
i/Y i:入力
Y:(O1,O2):出力
①入力する①内部状態
a0とa1が変わる。③V,Uが出力され
る。
O1
O2
WEB公開版
49
系列推定とは?
S S+E
伝送路中でE(エラーやノイズ)が混じったS+Eから、
Sを推定する。(またはEを除去する)。
Sを原因S+Eを結果と
考える!
S+Eの原因は
なんだったの
かを推定する
ためにベイジ
アンネットワー
クなどを使う。
WEB公開版
50
付録:
組み合わせ回路から
ステートマシン
WEB公開版
51
ステートマシンとは
入力と時間によって状態が変化する。
入力とクロックに
より内部状態と出
力が変わる。シンプルな
ステートマシンでは内部状態=出力。
「一定時間経過する」「外部電源を落とす」などは割り込みやタイ
マー入力が対応。
WEB公開版
52
記憶の原型:フリップフロップ
入力 出力
S R Q
0 0 保持
0 1 0
1 0 1
1 1 不定
論理演算子(∧、¬など)は通常、入出力を持つが状態はない。
RとSの一瞬の状態を保持することができる。
WEB公開版
53
クロックを扱うDフリップフロップ
D C次のステー
トのQ
0 ↑ 0
1 ↑ 1
× ↓ そのまま
クロックの立ち上がりの時
のDの値が次の状態
(出力)を決める。
WEB公開版
54
クロックには4状態ある。
誤り検出訂正や符号理論はここ11/00を見る。
ステートマシンや状態遷移図の設計はここ
01/10 も見る!
WEB公開版
55
Dフリップフロップ
D C次のステート
のQ
0 ↑ 0
1 ↑ 1
× ↓ そのまま
クロックの立
ち上がりの値
を保持する。
WEB公開版
56
Tフリップフロップ
D C次のステート
のQ
0 ↑ 0
1 ↑ 1
× ↓ そのまま
クロックの立
ち上がりの値
を保持する。
WEB公開版
57
割り込み:一定時間経つと….
D CLK1 CLK2 Q1 Q2
0 ↑ ↓ 0 1
1 ↑ ↓ 1 0
× ↓ ↓ 保 保
0 ↑ ↑ 1 1
1 ↑ ↑ 1 1
D,CLKの値に関わらず割り込
みがかかるとQ1=1
Q2=1になる!
WEB公開版