第6章 TCPとUDP

第6章 TCPとUDP
情報通信ネットワーク
1
6.1. トランスポート層の役割
4407402 丹野 雅弘
情報通信ネットワーク
2
1. トランスポート層とは
• 次にどのアプリケーションにパケットを渡せばよ
いか識別する。
• 通信をする「プログラム」を指定する役割をする。
この役割を実現する手法:ポート番号という識別子
情報通信ネットワーク
3
2.1. 通信の処理(1)
クライアントがサーバにサービスなどを要求
サーバーが要求を処理してサービスを提供
この際に、サ-バープログラムが
起動されている必要がある。
情報通信ネットワーク
4
2.2. 通信の処理(2)
• サーバープログラム
・UNIX・・・デーモン(Demon)
HTTPでは、httpd(HTTPデーモン)
TELNETでは、telnetd(テルネットデーモン)
• さらに、この代表として、inetdというスーパー
デーモンも存在する。
情報通信ネットワーク
5
2.3. 通信の処理(3)
• 要求がどのパケットに向けられたものかは宛
先ポート番号で識別
ex)TCPの接続要求パケット受信
ポート番号が23番 → telnetd
80番 → httpd
• TCP、UDPのトランスポートプロトコルは、受
信したデータの宛先をポート番号で特定
情報通信ネットワーク
6
2.4. 通信の処理(4)
情報通信ネットワーク
7
3.1 2つのトランスポートプロトコル
(1)
• 代表的なトランスポートプロトコルには、
「TCP」と「UDP」が存在
TCPはTransmission Control Protocol
UDPはUser Datagram Protocol
の略
情報通信ネットワーク
8
3.2 2つのトランスポートプロトコル
(2)
• TCP
-コネクション志向で、信頼性のある
ストリーム(切れ目がないデータ構造)型
プロトコル
-送信した順に相手にデータが届く
だが、データの切れ目が不明
情報通信ネットワーク
9
3.3 2つのトランスポートプロトコル
(3)
• TCPでは、信頼性の提供
・順序制御
・再送制御
・フロー制御(流量制御)
・ふくそう回避制御
このほかに、ネットワークの利用効率を向
上させる仕組みなど、多機能
情報通信ネットワーク
10
3.4 2つのトランスポートプロトコル
(4)
• UDP
-信頼性のないデータ型プロトコル
-細かい処理は上位層のアプリケーションが決定
-データの大きさは保たれるが、パケットが到達
する保障はない
再送処理が必要な場合もある
情報通信ネットワーク
11
3.5 2つのトランスポートプロトコル
(5)
• ソケットは、TCPやUDPを利用する時に使われるAPI
(Application Programming Interface)の名称。
• アプリケーションはソケットを利用して、通信相手のIPア
ドレスやポート番号を設定したり、データの送受信の要
求をする。
情報通信ネットワーク
12
4. TCPとUDPの使い分け
• トランスポート層で信頼性のある通信を実
現する必要がある場合にはTCP
• 同報通信、高速性やリアルタイム性重視
の通信にはUDP
情報通信ネットワーク
13
6.2 ポート番号
4407402 丹野 雅弘
情報通信ネットワーク
14
1. ポート番号とは
• トランスポートプロトコルにおけるアドレ
ス
• 同一コンピュータ内で通信を行っている
複数のプログラムを識別する
情報通信ネットワーク
15
2. ポート番号によるアプリケーション
の識別
• トランスポートプロトコルは、ポート番号を使っ
て、通信しているプログラムを識別する。
情報通信ネットワーク
16
3.IPアドレスとポート番号と
プロトコル番号による通信の識別
• 宛先IPアドレス、送信元IPアドレス、宛先ポート番号、
送信元ポート番号、プロトコル番号の5つの数字を
組み合わせて通信を識別する。
情報通信ネットワーク
17
4.1. ポート番号の決め方(1)
• 静的な割り当て方法
アプリケーションごとに、ポート番号を固定的
に割り当てる方法。
ウェルノウンポート番号は0~1023までの番
号から割り当てられている。
ウェルノウンポート番号以外にも正式登録さ
れているポート番号1024~49151がある。
情報通信ネットワーク
18
4.2. ポート番号の決め方(2)
• 動的な割り当て方法
サービスを受ける側のアプリケーションが、自
分のポート番号を決定せずに、OSに割り当て
を任せる方法。
OSがアプリケーションごとに同じ値にならない
ように制御しながら番号を割り当てる。
ポート番号は49152~65535まで割り当てられ
ているが、これを無視して1024以上の使われ
ない番号が使用されていることがある。
情報通信ネットワーク
19
5. ポート番号とプロトコル
• ポート番号は使用されるトランスポートプロト
コルごとに決定。
• データがIP層に到着すると、IPヘッダ中のプロ
トコル番号がチェックされ、それぞれのプロト
コルのモジュールに渡される。
• ウェルノウンポート番号はプロトコルに関係な
く同じ番号は同じアプリケーションに割り当て
られる。
情報通信ネットワーク
20
6.3 UDP(User Datagram Protocol)
4407402 丹野 雅弘
情報通信ネットワーク
21
1.UDPの目的と特徴
• 複雑な制御を行わないコネクションレス的な
通信サービスを提供する。
• 通常通信では最初にコネクションを確立する
(送信元から送信先に通信許可の要請およ
び通信先から通信元への許可)が必要にな
るが、UDPは送りっぱなし。
• 輻輳を回避する動作は行わない。
• Userが全てを考慮して上位層のプロトコルを
考えたり、アプリケーションを作成しなければ
いけない。
情報通信ネットワーク
22
2.UDPのまとめ
• UDPの通信方法 ⇒ 一方的にデータを
送りっぱなしの通信
• ヘッダが8オクテッドしかない(TCPは20オク
テッド)
• 処理簡単 ⇒ 高速に動作する
• マルチキャストやブロードキャストに利用可
情報通信ネットワーク
23
3.UDPの使用例
• 総パケット数が少ない通信 (DNS,SNMPな
ど)
• 動画や音声などのマルチメディア通信
• LANなどの特定ネットワークに限定したアプリ
ケーションの通信
• 同報性が必要な通信 (ブロードキャスト、マ
ルチキャスト)
情報通信ネットワーク
24
6.4 TCP
4407036 榊原 悠
情報通信ネットワーク
25
TCP
(Transmission Control Protocol)
伝送、送信、通信を制御するプロトコル
 データを送信するときの制御機能が充実
 IPというコネクションレス型のネットワーク
で高い信頼性

情報通信ネットワーク
26
TCPの目的と特徴

信頼性のある通信
◦
◦
◦
◦
◦
◦
チェックサム
シーケンス番号
確認応答
再送制御
コネクション管理
ウインドウ制御
情報通信ネットワーク
27
シーケンス番号と確認応答
受信ホストが送信
ホストに到達した
ことを知らせる
 無事に届いたとき
のみ応答

A
時
間
一
定
時
間
情報通信ネットワーク
B
×
喪失
28
再送タイムアウト時間の決定
再送せずに確認応答を待つ時間のこと。
 パケットを送信するためにラウンドリップ時間と
その揺らぎを計測し順応。
 UNIXやWindowsは0.5秒単位で制御。

時
間
揺らぎが大きい場合
再送タイムアウト時間
RTT
情報通信ネットワーク
29
コネクション管理
TCPはコネクション
指向の通信を提供
 ヘッダの制御用の
フィールドを使用
ホストA
(クライアント)
ホストB
(サーバー)

コネクション確立要求
確認応答+コネクション切
断要求
確認応答
時間
コネクション
の確立完了
データを転送する
コネクション切断要求
確認応答
コネクション切断要求
確認応答
確認応答
情報通信ネットワーク
30
セグメント単位でデータを送信
コネクション確立時にデータ単位を決定。
 この最大データ長でデータが区切られて送
信される。

情報通信ネットワーク
31
ウインドウ制御で速度向上

1セグメントではなく大きな単位で転送す
ると転送時間が大幅に短縮される
情報通信ネットワーク
32
ウインドウ制御と再送制御


ウィンドウ制御を行わ
ない場合、確認応答
が失われるとデータ 時
間
は届いているにもか
データ
1~1000
かわらず再送しなけ
ればならない
1001~2000
次は1001
2001~3000
次は2001
3001~4000
次は3001
4001~5000
次は4001
5001~6000
次は5001
ウィンドウ制御を行う
と、ある程度の確認
応答が失われても再
送する必要がなくな
る
確認応答
次は6001
情報通信ネットワーク
33
高速再送制御

送信セグメントが失わ
れた場合、受信ホスト
が今までに受信した
データの確認応答を
返す。
3つの重複応
答を受け取ると
再送する

一度受け取った確認
応答が3回連続して受
け取った場合、その確
認応答が示している
データを再送する。こ
れを高速再送制御と
いう。
時
間
データ
確認応答
1~1000
1001~2000
2001~3000
3001~4000
4001~5000
次は1001
次は1001
次は1001
次は1001
次は1001
次は1001
次は7001
5001~6000
6001~7000
1001~2000
7001~8000
8001~9000
9001~10000
3つの重複
確認応答
次は8001
次は9001
高速再送制御の図
情報通信ネットワーク
34
フロー制御(流動制御)


受信ホストが送信ホ
ストに対して受信可 時
能なデータサイズ(ウ 間
ィンドウサイズ)を通
知するようにする。
データ
1~1000
確認応答
1001~2000
2001~3000
3001~4000
受信側のバッファが
溢れそうになるとウィ
ンドウの値を小さくし
て送信ホストの送信 ウィンドウ
量を抑制する。この ロープを定期
ような処理をフロー 的に送信する
制御という
次は1001
3000
次は2001
次は3001
次は4001
2000
1000
0
バッファが満
杯の状態
4001~5000
5001~6000
ウィンドウ更新通知が途切れ、通信不能
になるのを避けるためウィンドロープと
呼ばれる小さなデータを送信する。
ウィンドウ
次は4001
0
次は4001
3000
ウィンドウ更新通知
フロー制御の図
情報通信ネットワーク
35
ふくそう制御(ネットワークの混雑解消)


ネットワークに、
通信開始時か
ら大量のパケッ
トを送信すると
ネットワークが
パンクする可能
性がある
その危険性をな
くすため、スロ
ースタートと呼
ばれるアルゴリ
ズムに従い送
信する
ふくそう
ウィンドウ
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
スロースタートの図
情報通信ネットワーク
36
TCPのウインドウの変化

パケットが往復
するたびに、ふ
くそうウィンドウ
が1・2・4と指数
関数的に急激
に大きくなってし
まうのを防ぐた
めに、スロース
タート閾値を用
意する
ふくそうウィンドウ
の大きさ
タイムアウト
タイムアウト
重複確認応答
半分
1セグメント
ふくそうウィンドウ
ふくそう
ウィンドウ
半分
 1セグメント
3セグメント
時間
スロースタート閾値
指数関数的
にウィンドウ
が増加
情報通信ネットワーク
37
ネットワークの利用効率を高める仕組み

Nagleアルゴリズム
送信すべきデータがあっても、そのデータが少ない場
合には送信を遅らせる処理
・全ての送信済みデータが確認応答されている場合
・最大セグメント長(MSS)のデータを送信できる場合
以上の状態に当てはまる場合にTCPはデータを送信
する
情報通信ネットワーク
38
ネットワークの利用効率を高める仕組み

遅延確認応答
データを受信してもすぐに確認応答を行わないで遅ら
せる方法
・2×最大セグメント長のデータを受信するまで確認応答
をしない
・そうでない場合は確認応答を最大で0.5秒遅延させる
情報通信ネットワーク
39
ネットワークの利用効率を高める仕組み

ピギーバック
確認応答と返事のデータパケットを1つのパケットで送
り、送受信するパケット数を減らすことができる
アプリケーションがデータを処理して返事のデータを送
信するまで確認応答が遅延されなければピギーバック
は起こらない
情報通信ネットワーク
40
TCPを利用するアプリケーション
TCPの複雑な制御は時と場合により使い分けることが必要
 アプリケーションが細かい制御をしたほうがよい場合は、UDP
を用いたほうがよい
 データの転送量が比較的に多く,信頼性が必要としている
が、難しいことを考えたくない場合にはTCPを用いるのがよ
い

情報通信ネットワーク
41
6.5.その他のトランスポートプロトコル
4407010 榎本健太
情報通信ネットワーク
42
6.5.1.UDP-Lite (Lightweight User Datagram
Protocol)
UDPではチェックサムエラーが発生すると、パケット
全体が廃棄される
 映像や音声のデータフォーマットアプリケーションの
性能を低下させてしまう。
 UDPでチェックサムを無効にすると、UDPヘッダ中
のポート番号が壊れたパケットや、IPヘッダ中のIP
アドレスが壊れたパケットを受信してしまう恐れがあ
る。
情報通信ネットワーク
43
それらの問題を解決するため、UDP-Liteでは・・・
UDP-Liteでは、チェックサムを計算する範囲をアプ
リケーションが決めることができる。
 パケット全体、ヘッダ、疑似ファイル、データの先頭
から途中までのチェックサムを計算可能。
 エラーが発生してはいけない部分に関してのみ、
チェックサムで検査することができる。
情報通信ネットワーク
44
6.5.2.SCTP (Stream Contorol Transmission
Protocol)
TCPと同様。特徴は
 メッセージ単位の送受信
 マルチホーミングに対応
 複数のストリームの通信
 メッセージの生存時間を定義できる
情報通信ネットワーク
45
6.5.3.DCCP (Datagram Congestion Control
Protocol)
 UDPと同様に、データの到達性に関する信頼性
はない。
 コネクション指向で、コネクションの確立と切断処理
がある。コネクションの確立と切断の処理には信頼
性がある。
 ネットワークの混雑に合わせた輻輳制御を行うこと
ができる。DCCPを利用するアプリケーションの特
性により、「TCPライクな輻輳制御」と「TCPフレン
ドリーなレート制御」のどちらかの方法を選択できる。
 輻輳制御を行うため、パケットを受信した側は確
認応答(ACK)を返す。この確認応答を使って再
送をすることも可能。
情報通信ネットワーク
46
6.6.UDPヘッダのフォーマット
4407010 榎本健太
情報通信ネットワーク
47
6.6UDPヘッダのフォーマット
16bit
16bit
送信ポート番号
Source Port
宛先ポート番号
Destination Port
パケット長
Length
チェックサム
Checksum
UDP
ヘッダ
データ
data
情報通信ネットワーク
48
送信元ポート番号(Source Port)
16ビット長のフィールドで、ポート番号を示す。
指定しないことも可能(返事を必要としない通
信で利用)。
情報通信ネットワーク
49
宛先ポート番号( Destination Port )
 16ビット長のフィールドで、宛先のポート番号を示
す。
情報通信ネットワーク
50
パケット長( Length )
 UDPヘッダの長さとデータの長さの和が格納される。
 単位はオクテット長。
情報通信ネットワーク
51
チェックサム
 UDPのヘッダとデータに信頼性を提供するためのもの。
情報通信ネットワーク
52
チェックサムの計算方法
① UDP擬似ヘッダをUDPデータグラムの前に付ける。
② 全長が16ビットの倍数になるようにデータの最後
に”0”を追加する。
③ UDPヘッダのチェックサムフィールドを”0”にする。
④ 16ビット単位で1の補数の和を求める。
⑤ 求めた和の1の補数をチェックサムフィールドに入れる。
情報通信ネットワーク
53
チェックサムの計算に利用するUDP擬似ヘッダ
8bit
8bit
16bit
送信元IPアドレス
宛先IPアドレス
パディング
(詰め物)0
プロトコル番号
17
UDPパケット長
情報通信ネットワーク
54
6.7 TCPヘッダのフォーマット
4407402 丹野 雅弘
情報通信ネットワーク
55
1. TCPセグメントフォーマット
• TCPはパッケト長やデータ長を表わすフィール
ドは存在せず、IP層からパケット長を教えても
らいデータの長さを知る。
情報通信ネットワーク
56
2. 送信元ポート番号・宛先ポート番号
• 送信元ポート番号(Source Port)
・・・16ビット長のフィールドで、送信元
のポート番号を示す
• 宛先ポート番号(Destination Port)
・・・16ビット長のフィールドで、宛先の
ポート番号をしめす
情報通信ネットワーク
57
3. シーケンス番号(Sequence Number)
• 32ビット長のフィールドで、シーケンス番
号を示す
• シーケンス番号は送信したデータの位置
を意味する
• データを送信するたびに、送信したデータ
のオクテット数だけ値が加算される
• コネクションを確立する時に初期値が乱
数値で決定され、SYNパケットで受信ホス
トに伝えられる
情報通信ネットワーク
58
4. 確認応答番号
(Acknowledgement Number)
• 32ビット長のフィールドで、確認応答番号を
示す
• 確認応答番号は、次に受信すべきデータの
シーケンス番号になっている
• 送信側では、次に送るデータのシーケンス番
号と、返された確認応答番号が同じ場合には、
正常に通信が行われたことになる
情報通信ネットワーク
59
5. データオフセット・予約
•
データオフセット(Data Offset)
・・・4ビット長のフィールド、で単位は4バ
イト長である
• 予約(Reserved)
・・・将来の拡張のために容易されている
フィールドで6ビット長
“0”にしておく必要がある
情報通信ネットワーク
60
6.1.コントロールフラグ(Control flag)
8ビット長のフィールドで、各ビットは左からCWR、
ECE、URG、ACK、PSH、RST、SYN、FINと名づけられて
いて、制御ビットとも呼ばれる。
それぞれのビットに1が指定された場合の意味を以
下に示す。
情報通信ネットワーク
61
6.2.コントロールフラグ(Control flag)
• CWR・・・IPヘッダのECNフィールドとともに使
われるフラグで、ECEフラグが“1”のパケット
を受け取り、輻輳を小さくしたことを相手に伝
える。
• ECE・・・ECN-Echoを意味するフラグで、通信相
手に相手側からこちら側に向かうネットワーク
が輻輳していることを伝える。受け取ったパ
ケットのIPヘッダ中のECNビットが“1”のときに
TCPヘッダのECEフラグを“1”にする。
情報通信ネットワーク
62
6.3.コントロールフラグ(Control flag)
• URG・・・このビットが“1”の場合は、緊急に処
理すべきデータが含まれていることを意味す
る。
• ACK・・・このビットが“1”の場合は、確認応答
番号のフィールドが有効であることを意味す
る
情報通信ネットワーク
63
6.4.コントロールフラグ(Control flag)
• PSH・・・このビットが“1”の場合は、受信した
データをすぐに上位のアプリケーションに引き
渡す。 “0”の場合は、バッファリングが許され
る。
• RST・・・このビットが“1”の場合は、コネクショ
ンが強制的に切断される。
情報通信ネットワーク
64
6.5.コントロールフラグ(Control flag)
• SYN・・・このビットが“1”の場合は、コネクショ
ンの確立したい意思表示を表し、シーケンス
番号の初期化が行われる。
• FIN・・・このビットが“1”の場合は、今後送信
するデータがないことを意味し、コネクション
を切断したいと意思表示を意味する。
情報通信ネットワーク
65
7.ウィンドウサイズ(Window)
• 16ビット長のフィールドで、受信可能なデータ
のサイズを通知するのに使われる。
・・・データのサイズはオクテット
• ここに示されているデータ量を超えて送信す
ることは許されない(ただし、ウィンドウが0の
場合には、ウィンドウプローブを送信できる)。
情報通信ネットワーク
66
8.1.チェックサム(Checksum)
• TCP疑似ヘッダを使用し、全長が16ビットの倍
数になるようにデータの最後に“0”のパディ
ング(穴埋め)をする。
• チェックサムを含むすべてのデータを足した
結果が“16 ビットすべてが 1”になると正しい
値を取る。
情報通信ネットワーク
67
8.2.チェックサム(Checksum)
• チェックサムは、途中のルーターの
メモリの故障やプログラムのバグな
どによるデータの破壊がないことを
保障するためにあるのだと考えられ
ている。
情報通信ネットワーク
68
9. 緊急ポインタ(Urgent Pointer)
• 16ビット長のフィールドで、 コードビットの
URGが“1”の場合に有効となる。
• 緊急を要するデータの格納場所を示すポイン
タとして扱われる。
• 一般には、通信を途中で中断したり、処理を
中断する場合に使われる。
情報通信ネットワーク
69
10.1. オプション(Options)
• TCPによる通信の性能を向上させるために利
用される。
• データオフセットフィールド(ヘッダ長フィール
ド)による制限のため、最大で40オクテットま
でである。
• オプションフィールドは全体で32ビットの整数
倍になるように調整されている。
情報通信ネットワーク
70
10.2. オプション(Options)
情報通信ネットワーク
71
10.3. オプション(Options)
• タイプ2は、コネクションの確立時に最大セグ
メント長の決定で利用される
• タイプ3は、TCPのスループットを改善するた
めのオプションである
• タイプ8は、高速通信時のシーケンス番号の
管理に利用される
• タイプ4と5は、選択確認応答に利用される
情報通信ネットワーク
72