第6章 TCPとUDP

Download Report

Transcript 第6章 TCPとUDP

第6章 TCPとUDP
工学部第一部
経営工学科3年
4404008 池辺 博昭
1
6.1 トランスポート層の役割
2
トランスポート層とは・・・


次にどのアプリケーションにパケットを渡せ
ばよいか識別する
通信をする「プログラム」を指定する役
割
この役割を実現する手法
-ポート番号という識別子
3
宛先の判断
4
通信の処理(1)
クライアントがサーバにサービスなどを要求
サーバーが要求を処理してサービスを提供
この際に、サ-バープログラムが起動されて
いる必要がある
5
通信の処理(2)
サーバープログラム
・UNIX・・・デーモン(Demon)
HTTPでは、httpd(HTTPデーモン)
TELNETでは、telnetd(テルネットデーモ
ン)


さらに、この代表として、inetdというスー
パーデーモンも存在
6
通信の処理(3)


要求がどのパケットに向けられたものかは
宛先ポート番号で識別
ex)TCPの接続要求パケット受信
ポート番号が23番
telnetd
80番
httpd
TCP、UDPのトランスポートプロトコルは、
受信したデータの宛先をポート番号で特定
7
HTTPの接続要求
8
TCPとUDP(1)

代表的なトランスポートプロトコルには、
「TCP」と「UDP」が存在
TCPはTransmission Control Protocol
UDPはUser Datagram Protocol
の略
9
TCPとUDP(2)

TCP
-コネクション志向で、信頼性のある
ストリーム(切れ目がないデータ構造)型
プロトコル
-送信した順に相手にデータが届く
だが、データの切れ目が不明
10
TCPとUDP(3)

TCPでは、信頼性の提供
・順序制御
・再送制御
・フロー制御(流量制御)
・ふくそう回避制御
このほかに、ネットワークの利用効率を向
上させる仕組みなど、多機能
11
TCPとUDP(4)

UDP
-信頼性のないデータ型プロトコル
-細かい処理は上位層のアプリケーションが決
定
-データの大きさは保たれるが、パケットが到達
する保障はない
再送処理が必要な場合もある
12
ソケット(1)


TCPやUDPを利用する時に使われるAPI
(Application Programming Interface)の
名称。
アプリケーションはソケットを利用して、通
信相手のIPアドレスやポート番号を設定し
たり、データの送受信の要求をする。
13
ソケット(2)
14
TCPとUDPの使い分け


トランスポート層で信頼性のある通信を実
現する必要がある場合にはTCP
同報通信、高速性やリアルタイム性重視
の通信にはUDP
15
6.2 ポート番号
16
ポート番号とは


トランスポートプロトコルにおけるアド
レス
同一コンピュータ内で通信を行ってい
る複数のプログラムを識別する
17
ポート番号によるアプリケーショ
ンの識別

トランスポートプロトコルは、ポート番号を使って、
通信しているプログラムを識別する
ホストA 172.23.12.14
TELNET
FTP
SMTP
HTTP
FTP
HTTP
サーバー
サーバー
サーバー
サーバー
サーバー
サーバー
ポート番号
TCP21
ポート番号
TCP23
ポート番号
TCP25
ポート番号
TCP80
ポート番号
TCP2000
ポート番号
TCP2001
どの処理にデータを渡すのかな?
データ
& IP
宛先172.23.12.14
18
IPアドレスとポート番号とプロト
コル番号による通信の識別

宛先IPアドレス、送信元IPアドレス、
宛先ポート番号、送信元ポート番号、
プロトコル番号の5つの数字を組み
合わせて通信を識別
19
20
ポート番号の決め方


静的な割り当て方法
アプリケーションごとに、ポート番号を固定
的に割り当てる方法。(ウェルノウンポート番
号)
動的な割り当て方法
サービスを受ける側のアプリケーションが、
自分のポート番号を決定せずに、OSが割り
当てる方法。
21
ポート番号とプロトコル

ポート番号は使用されるトランスポートプロトコル
ごとに決定。
ex)TCPとUDPで同じポート番号を使用可能


データがIP層に到着すると、IPヘッダ中のプロト
コル番号がチェックされ、それぞれのプロトコル
のルーチンに渡される。
ウェルノウンポート番号はプロトコルに関係なく
同じ番号は同じアプリケーションに割り当てられ
る。
22
6.3 UDP
(User Datagram Protocol)
4404088
Y.M
23
6.3.1 UDPの目的と特徴 (1)
UDP
(User Datagram Protocol)
複雑な制御を行わない
コネクションレス的な通信サービスを提供する
24
6.3.1 UDPの目的と特徴 (2)
UDP
「アプリケーションを造ったユーザーの
言うがままのプロトコル」
Userがすべてを考慮して上位層のプロトコルを考
えたり、アプリケーションを作成しなければいけな
いことを意味する
25
6.3.1 UDPの目的と特徴 (3)
UDPの通信方法 ⇒ 一方的にデータを
送りっぱなしの通信
( データグラム型通信 or コネクションレス方通信 )
● 処理簡単 ⇒ 高速に動作する
● マルチキャストやブロードキャストに利用可
26
6.3.1 UDPの目的と特徴 (3)
図1 UDPの通信方法のイメージ
27
6.3.1 UDPの目的と特徴 (4)
UDPの用途
● 総パケット数が少ない通信 (DNS,SNMPなど)
● 動画や音声などのマルチメディア通信
● LANなどの特定ネットワークに限定した
アプリケーションの通信
● 同報性が必要な通信
(ブロードキャスト、マルチキャスト)
28
6.4 TCP
4404021
大上 進也
29
TCP(Transmission Control Protocol)

「伝送、送信、通信」を「制御」する「プロトコ
ル」
データを送信するときの制御機能が充実し
ている。
・ネットワークの途中でパケットが喪失した場
合の再送
・順序が入れ替わった場合の制御
・パケットの到達を確認する確認応答
などをTCPの中で行っている。
30
TCPの目的と特徴

ネットワークの問題点

データの破壊・重複・順序の入れ替わり
TCPを用いると・・・

信頼性の高い通信が出来る

UDPと違い、制御機能(確認応答・再送制御・
コネクション管理・ウィンドウ制御)が充実して
いる。
31
シーケンス番号と確認応答(1)

シーケンス番号



再送制御・重複制御などはシーケンス番号を
使って行われる。
コネクションの確立時に乱数で初期値を決め、
それ以降は送信データをオクテット単位で数
え、シーケンス番号に値を加算し、送信データ
に付加して送信する。
確認応答には、次に受信すべきシーケンス番
号を付加して返送する。
32
シーケンス番号と確認応答(2)

受信したデータが
受信ホスト(B)に到
着したとき、送信ホ
スト(A)にデータが
到着したことを知ら
せる。確認応答
(ACK)
A
コネクション
B
時
間
33
シーケンス番号と確認応答(3)

データが喪失し、確 時
認応答が返ってこ 間
ない場合、一定時
間後にデータを再
送する。
A
一
定
時
間
コネクション
B
×
喪失
34
シーケンス番号と確認応答(4)

確認応答が喪失し、時
返ってこない場合も 間
データを再送する。
A
一
定
時
間
コネクション
B
×
喪失
35
再送タイムアウトの決定(1)




再送タイムアウト時間を経過しても確認応答が到着しな
かった場合データを再送する。
再送タイムアウト時間
再送せずに確認応答の到着を待つ時間
どのくらいの時間が適切か?
パケットを送信するたびにラウンドトリップ時間と、
その揺らぎの時間を計測する。
合計時間よりも少し大きな値を再送タイムアウト時間とす
る。
36
再送タイムアウトの決定(2)
時
間
揺らぎが小さい場合
A
再送タイムアウト時間
RTT
経過時間(データ量)
時
間
揺らぎが大きい場合
再送タイムアウト時間
時
間
コネクション
B
R
T
T
R
T
T
R
T
T
RTT
37
コネクション管理


TCPはコネクション指向の通信を提供する。
通信に先立って通信相手との間に通信を
始める準備をしてから通信を行うこと。
38
ホストA
(クライアント)
ホストB
(サーバー)
コネクション確立要求
時間
確認応答+コネクション切
断要求
確認応答
コネクション
確立の
データ転送を行
う
コネクション切断要求
TCPのコネクションの確立と切断
コネクションを管理するために、
TCPヘッダの制御ようのフィール
ドを利用する。
また、コネクションの確立と切断
には最低でも7つ以上のパケット
のやり取りが必要。
確認応答
コネクション切断要求
確認応答
確認応答
39
TCPはセグメント単位でデータを
送信

コネクションの確立時に、通信を行うデータ単
位を決定
これを最大セグメント長と呼ぶ
(Maximum Segment Size)
大量のデータを送信するときには、このMSS
の値ごとにデータが区切られて送信される。
再送処理も基本的にはMSS単位で行われる40
ウィンドウ制御で速度向上(1)
1セグメントごとに
確認応答を待つ場
合、ラウンドトリッ
プ時間が長いと通
信性能が悪くなる。
時
間
データ
1~1000
確認応答
次は1001
1001~2000
次は2001
2001~3000
次は3001
3001~4000
次は4001
4001~5000
TCPの1セグメントごとに確認応答を行った場合
41
ウインドウの概念
送信したセグメントに対す
る確認応答を待たずに、複
数のセグメントを送信する
ことで通信性能を改善
ウィンドウ
サイズ
時
間
データ
1~1000
1001~2000
2001~3000
3001~4000
4001~5000
5001~6000
6001~7000
7001~8000
確認応答
次は1001
次は2001
次は3001
次は4001
次は5001
次は6001
次は7001
次は8001
8001~9000
スライディングウィンドウ方式で並列処理を行った場合
42
ホストA(送信ホスト)
0
1000
2000
3000
4000
5000
6000
7000
ウィンドウ(4セグメント)
ホストA
ホストB
シーケンス番号2001のデータを
要求する確認応答が、
ホストAに到達
ホストA(送信ホスト)
0
1000
2000
3000
4000
5000
6000
7000
ウィンドウ(4セグメント)
2000までのデータを
破棄して右へ移動する
•スライディングウィンドウ方式の図
43
ウィンドウ制御と再送制御
ウィンドウ制御を行わない
場合、確認応答が失われ
るとデータは届いているに
もかかわらず再送しなけ
ればならない
ウィンドウ制御を行うと、
ある程度の確認応答が
失われても再送する必要
がなくなる
時
間
データ
1~1000
確認応答
1001~2000
次は1001
2001~3000
次は2001
3001~4000
次は3001
4001~5000
次は4001
5001~6000
次は5001
次は6001
44
高速再送制御
•送信セグメントが失
われた場合、受信ホス
トが今までに受信した
データの確認応答を
返す。
3つの重複応
答を受け取る
と再送する
時
間
データ
1~1000
1001~2000
2001~3000
3001~4000
4001~5000
次は1001
次は1001
次は1001
次は1001
次は1001
次は1001
次は7001
5001~6000
6001~7000
1001~2000
•一度受け取った確認
応答が3回連続して
7001~8000
8001~9000
受け取った場合、そ
の確認応答が示して 9001~10000
いるデータを再送する。
これを高速再送制御
という。
確認応答
3つの重複
確認応答
次は8001
次は9001
高速再送制御の図
45
フロー制御(流動制御)
•受信ホストが送信ホ
ストに対して受信可
能なデータサイズ
(ウィンドウサイズ)を
通知するようにする。
時
間
データ
1~1000
確認応答
1001~2000
2001~3000
3001~4000
•受信側のバッファが
溢れそうになるとウィ ウィンドウ
ンドウの値を小さくし ロープを定期
的に送信する
て送信ホストの送信
量を抑制する。このよ
4001~5000
うな処理をフロー制
5001~6000
御という。
ウィンドウ更新通知が途切れ、通信不能
になるのを避けるためウィンドロープと
呼ばれる小さなデータを送信する。
ウィンドウ
次は1001
3000
次は2001
次は3001
次は4001
2000
1000
0
バッファが満
杯の状態
次は4001
0
次は4001
3000
ウィンドウ更新通知
フロー制御の図
46
ふくそう制御(ネットワークの混
雑解消)
*ネットワークに、通
信開始時から大量の
パケットを送信すると
ネットワークがパンク
する可能性がある
*その危険性をな
くすため、スロース
タートと呼ばれるア
ルゴリズムに従い
送信する
ふくそう
ウィンドウ
1000
データ
1~1000
2000
2000
1001~2000
3000
4000
4000
4000
3001~4000
4001~5000
5001~6000
6001~7000
確認応答
次は1001
2001~3000
次は2001
次は3001
次は4001
次は5001
次は6001
次は7001
スロースタートの図
47
TCPのウィンドウの変化
ふくそうウィンドウ
の大きさ
タイムアウト
パケットが往復するたび
に、ふくそうウィンドウが
1・2・4と指数関数的に
急激に大きくなってしま
うのを防ぐために、ス
ロースタート閾値を用意
する
タイムアウト
重複確認応答
半分
ふくそう
ウィンドウ
半分
3セグメント
時間
スロースタート閾値
1セグメント
指数関数的
にウィンドウ
が増加
ふくそうウィンドウ
 1セグメント
48
ネットワークの利用効率を高める
仕組み(1)

Nagleアルゴリズム
送信すべきデータがあっても、そのデータが少な
い場合には送信を遅らせる処理
・全ての送信済みデータが確認応答されている場合
・最大セグメント長(MSS)のデータを送信できる場合
以上の状態に当てはまる場合にTCPはデータを
送信する
49
ネットワークの利用効率を高め
る仕組み(2)

遅延確認応答
データを受信してもすぐに確認応答を行わ
ないで遅らせる方法
・2×最大セグメント長のデータを受信するま
で確認応答をしない
・そうでない場合は確認応答を最大で0.5秒
遅延させる
50
ネットワークの利用効率を高め
る仕組み(3)

ピギーバック
確認応答と返事のデータパケットを1つの
パケットで送り、送受信するパケット数を減
らすことができる
アプリケーションがデータを処理して返事
のデータを送信するまで確認応答が遅延
されなければピギーバックは起こらない
51
TCPを利用するアプリケーション
TCPの複雑な制御は時と場合により使い分
けることが必要
・ アプリケーションが細かい制御をしたほう
がよい場合は、UDPを用いたほうがよい
・ データの転送量が比較的に多く,信頼性が
必要としているが、難しいことを考えたくない
場合にはTCPを用いるのがよい
・
52
6.5 リアルタイム通信とRTP
53
リアルタイム通信とは



いつまでに相手にデータを届けるかを保証
することのできる通信
分散制御やマルチメディア伝送において非
常に重要な通信技術
ハードリアルタイム通信とソフトリアルタイ
ム通信がある
54
時間制約における
リアルタイム通信の違い(1)

ハードリアルタイム通信



必ず時間制約を守らなければならない通信
主に制御コマンドや同期信号等に使用される
サイズは小さいがレイテンシ(遅延時間)に厳
しいという特徴がある
55
時間制約における
リアルタイム通信の違い(2)

ソフトリアルタイム通信



時間制約を多少破ることを許容する通信
主にマルチメディア系のデータ通信に使用さ
れる
データ量が大きく(ストリーミング等)、レイテン
シよりもスループット(単位時間当りの通信量)
を重視するという特徴がある
56
リアルタイム通信の分類の例

リアルタイムの双方向通信
→会話(電話)、対戦型ゲーム

リアルタイムの片方向通信
→ライブ中継(コンサート)

リアルタイムでないデータ転送
→ホームページの閲覧
57
RTPとRTCP(1)
RTPとは…
 Real-time Transport Protocol
 音声や動画などのデータストリームをリア
ルタイムに配送するためのデータ転送プロ
トコル
 パケットロス対策や伝送時間保証などは
行われていないUDPタイプのプロトコル
 RTCPによる通信状態レポートとセットで用
58
いられる
RTPとRTCP(2)
RTCPとは…
 RTP Control Protocol
 RTPと組み合わせて使う、データのフロー
(送受信)制御および送信者と受信者の情
報を記述するための仕様
 データストリームの受信者がRTCPパケット
を定期的に送信することで、送信者の伝送
レート等の調整を行なう
 IPマルチキャストを用いた音声や動画通信
を行なう様々なアプリケーションに実装さ
59
れている
6.6 UDPヘッダフォーマット
60
UDPデータグラムのフォーマット
0
15
16
31 (ビット)
送信元ポート番号
宛先ポート番号
パケット長
チェックサム
UDP
ヘッダ
データ
61
送信元ポート番号(Source
Port)


16ビット長のフィールドでポート番号を示す
指定しないことも可能
 返事を必要としない通信で利用
62
宛先ポート番号( Destination
Port )

16ビット長のフィールドであり、あて先
のポート番号を示す。
63
パケット長( Length )


UDPヘッダの長さとデータの長さの和が格
納
単位はオクテット長
64
チェックサム(Checksum)


UDPのヘッダとデータの信頼性を提供
データを送受信するときの誤り検出法
 チェックサムを計算
 データとともに送信
 受信側チェックサムを再計算
 送信側との一致を検査
65
チェックサムの計算方法





UDP擬似ヘッダをUDPデータグラムの
前につける
全長が16ビットの倍数になるように
0を追加
チェックサムフィールドを0にする
16ビット単位で1の補数の和を求める
和の1の補数をチェックサムフィールドに入
れる
66
UDP擬似ヘッダ
0
15
16
31 (ビット)
送信元IPアドレス
宛先IPアドレス
パディング(詰め物) プロトコル番号
0
17
UDPパケット長
67
チェックサムの再計算




UDPデータグラムを受信
IPヘッダからIPアドレスの情報を取得
擬似ヘッダを作成
チェックサムを再計算
チェックサムを含むすべてのデータを足した結果が
0になると正しい
68
チェックサムの利用


使用しない場合、データの転送速度の向
上するが、UDPヘッダのポート番号の値が
壊れると、他の通信に悪影響を及ぼす
そのため、インターネットではこれの利用を
推奨している
69
6.7 TCPヘッダフォーマット
70
TCPのセグメントフォーマット
0
31ビット
伝 送 元 ポ ー ト番 号
宛 先 ポ ー ト番 号
シー ケ ンス番 号
確認応答番号
Dat
a
Of
f
set
予約
コントロー
ル フラグ
チェックサ ム
ウ ィンドウ サ イズ
TCPヘ ッダ
緊 急 ポ インタ
オ プション
パ デ ィング
データ
TCP
ペ イロー ド
71
送信元ポート番号・宛先ポート番号


送信元ポート番号(Source Port)
・・・16ビット長のフィールドで、送信元
のポート番号を示す
宛先ポート番号(Destination Port)
・・・16ビット長のフィールドで、宛先の
ポート番号をしめす
72
シーケンス番号(Sequence
Number)




32ビット長のフィールドで、シーケンス番
号を示す
シーケンス番号は送信したデータの位置
を意味する
データを送信するたびに、送信したデータ
のオクテット数だけ値が加算される
コネクションを確立する時に初期値が乱
数値で決定され、SYNパケットで受信ホス
トに伝えられる
73
確認応答番号
(Acknowledgement Number)



32ビット長のフィールドで、確認応答番号を
示す
確認応答番号は、次に受信すべきデータの
シーケンス番号になっている
送信側では、次に送るデータのシーケンス番
号と、返された確認応答番号が同じ場合には、
正常に通信が行われたことになる
74
データオフセット・予約


データオフセット(Data Offset)
・・・4ビット長のフィールド、で単位は4バ
イト長である
予約(Reserved)
・・・●将来の拡張のために容易されて
いるフィールドで6ビット長
●“0”にしておく必要がある
75
コントロールフラグ(Control flag)
(1)



6ビット長のフィールドで、各ビットは左からURG、
ACK、PSH、RST、SYN、FINと名づけられている。
それぞれの意味を以下に示す。
URG・・・このビットが“1”の場合は、緊急に処
理すべきデータが含まれていることを意味する。
ACK・・・このビットが“1”の場合は、確認応答番
号のフィールドが有効であることを意味する。
76
コントロールフラグ(Control flag)
(2)


PSH・・・このビットが“1”の場合は、受信した
データをすぐに上位のアプリケーションに引き
渡す。 “0”の場合は、バッファリングが許され
る。
RST・・・このビットが“1”の場合は、コネクショ
ンが強制的に切断される。
77
コントロールフラグ(Control flag)
(3)


SYN・・・このビットが“1”の場合は、コネクショ
ンの確立したい意思表示を表し、シーケンス
番号の初期化が行われる。
FIN・・・このビットが“1”の場合は、今後送信
するデータがないことを意味し、コネクション
を切断したいと意思表示を意味する。
78
ウィンドウサイズ(Window)


16ビット長のフィールドで、受信可能なデータ
のサイズを通知するのに使われる
・・・データのサイズはオクテット
ここに示されているデータ量を超えて送信す
ることは許されない
79
チェックサム(Checksum)


途中のルーターのメモリの故障やプログラ
ムのバグなどによるデータの破壊がないこ
とを保障するためのもの
チェックサムを含むすべてのデータを足し
た結果が0になると正しい値となる
80
緊急ポインタ(Urgent Pointer)



16ビット長のフィールドで、 “1”の場合に有
効となる
緊急を要するデータの格納場所を示すポイン
タとして扱われる
一般には、通信を途中で中断したり、処理を
中断する場合に使われる
81
オプション(Options)(1)


TCPによる通信の性能を向上させるために
利用される
データオフセットフィールドによる制限のた
め、最大で40オクテットまで
82
オプション(Options)(2)
83
オプション(Options)(3)




タイプ2は、コネクションの確立時に最大セ
グメント長の決定で利用される
タイプ3は、TCPのスループットを改善する
ためのオプションである
タイプ8は、高速通信時のシーケンス番号
の管理に利用される
タイプ4と5は、選択確認応答に利用され
る
84