インターネットプロトコル階層とOSI

TCP/UDP



プロセス間の通信のためのプロトコル
TCP:信頼性高、処理時間大
UDP:信頼性低、処理時間小
プロセス
ポート
ftp
1100
SMTP
HTTP
TCP/UDP
1230
1300
ftp
20
SMTP
23
HTTP
80
port
IP
Host A
Host B
SMTP : Simple Mail Transfer Protocol
POP : Post Office Protocol
1
ポート番号
発信元ポートと宛先ポートの二つのアプ
リケーションのエンド・エンドで通信を
するのがトランスポート層
このポートの先にマルチタスクOSのプロ
セスが対応し,そのプロセス種別をイン
ターネットサービスアプリケーションと
して16ビットの数値で標準化して示す
ポート番号23なら「TELNET」,20・21な
ら「FTP」,25なら「SMTP」,79なら
「FINGER」,80なら「HTTP」 など
2
UDPの特徴
プロセス間通信のためのプロトコル
実際は何も仕事をしない
信頼性を保証しない
コネクションレス
人が感覚で補える音声や画像通信に利用される
利点
TCPに比べて処理時間が小
欠点
メッセージの損失、重複、順序誤りが起こりうる
3
TCPの特徴
コネクションの開設
 論理リンクを通した通信
信頼性ある通信
 順序番号、チェックサム、応答確認
データの流量制御
 ウィンドウコントロール
4
TCPフォーマット
5
コネクションの開設

エンドポイントの組でコネクションを開設
 (Host A, Port X): (Host B, Port P)
Host A
process
Port X
Host C
Host B
TCPコネクション
process
process
process
Port P
Port Y
Port Z
IP
ネットワーク
Connection
6
コネクション開設
任意の初期値
仮にSeq=10
任意の初期値
仮にSeq=100
Node2に期待された
Seq=11を表示
かつNode1から2に
次は101番の期待を
示す
Ackは,次にNode1
からは11番を期待
することを示す
 FlagフィールドにSynやSyn+Ackを表示これでNode1と2
の特定ポート間にTCPコネクションができる
7
信頼性の保証



順序番号(sequence number):順序管理
チェックサム(checksum):データの破損を検知
応答確認(Ack:Acknowledgement):損失データの再送
Sender
send
packet 1
send
packet 2
send
packet 3
通信エラー時
正常時
Receiver
send ACK
for packet 1
send ACK
for packet 2
send ACK
for packet 3
Sender
send
packet 1
resend
packet 1
Receiver
loss
time out
send ACK
for packet 1
8
TCPのシーケンス番号管理
 前ページの続きで,Dは送っているデータ量(バイト数)を示す.
 Seq(シーケンス番号)は送ったバイト数分進められる
 Ackにより相手から期待する次のデータの開始バイト番号(Seq)を
示す
9
ウィンドウ制御
ひとつずつAckを返していると効率がよく
ないため,いくつかまとめて送り,まと
めて確認する.
確認無しにまとめて送れるデータ量(こ
れをウィンドウサイズと呼ぶ)は,相手
(受信側)の受信バッファの大きさに依
存するため,受信側が発信側にウィンド
ウサイズを通知しておく
10
データの流量(フロー)制御
Ackの応答によりバッファから送出する
データ量(ウィンドウサイズ)を調整
 混雑(輻輳)に応じたエンド・エンドでの流量制御

送出済み
確認はまだ
時間が長くなる、オーバーフローすると、
ウィンドサイズを小さくする、
うまく行けば大きくなる
Window(size=6)
1 2 3 4 5 6 7 8 9 10 11…
send
パケット3の受信確認
to be sent
ここまで送出
未使用
利用可能
パケット9まで送出可能
1 2 3 4 5 6 7 8 9 10 11...
11
コネクションの開放
 上位アプリケーションからコネクションを開放する要求が着たら,TCP層
で残っている送るべきデータが全て送れたらFINを送る
 相手も同様に全てデータを送信処理したらFINを送る
12
輻輳制御
 TCPは端末同士でネットワークの状況を推察して混
雑を避けるように転送速度(ウィンドウサイズ)を
調整
Slow start
順番にウィンドウサイズを1,2,4,8,と増やし
ていく
輻輳検知
パケットロスなどで輻輳を検知するとそのときのウィ
ンドウサイズの半分の値(A)を記憶してからウィンド
ウを1に戻し,ふたたびslow startのフェーズに入る
Aに達したら,線形に1ずつウィンドウを増やしてい
く
13
輻輳制御
TCPは端末同士でネットワークの状況を推察して混雑を
避けるように転送速度(ウィンドウサイズ)を調整
50
Windows Size (packets)
45
Segment Loss Occurs
Congestion Avoidance Phase
40
35
30
25
20
15
10
5
0
Slow Start
Phase
1600
1800
2000
Time (msec)
2200
2400
輻輳検知時のウィンドウの半分の値=A
14