トランスポート層の役割
- 計算機はマルチタスク
- 同時に動いている複数のプログラム
- どのプログラムが(相手ホストの)どのプログラムと話しているのか
- => ポート番号
クライアント・サーバー
- サーバー = UNIX Daemon
- HTTP サーバー / httpd / port 80
- TELNET / telnetd / port 23
- SSH / sshd / port 22
- * / inetd / 複数のport
- fork/exec ... オペレーティングシステム論(?)
TCP と UDP
- TCP ... Transmission Control Protocol
- 信頼性を提供
- http, smtp, pop3
- ssh, https, smtps, pop3s
- UDP ... User Datagram Protocol
- 信頼性無し(代わりに処理が早い etc)
- ntp, domain(DNS)
- 音声/ビデオ
- ネットワークファイルシステム (NFS -> TCPへ移行)
ポート番号
- トランスポート層におけるアドレス
- サーバーはポート番号固定 Well-Known
- クライアントはポート番号は不定(短命)Ephemeral
通信の識別
- 相手(IP/Port) <-> 自分(IP/Port) +プロトコル で識別
- 同じHTTPサーバの別のページを開く
- ターミナルを 2つ開いて、同じホストに同時ログインする
- netstat で ESTABLISHED と出る
Well-Known Ports
- IANA に登録
- /etc/services
- ssh=22 / smtp=25 / domain=53 / http=80 / pop3=110 / ntp=123 / ldap=389 / https=443 / pop3s=995
UDP Header
0 | 1 | 2 | 3 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 1 |
16 bit Source Port |
16 bit Destination Port |
16 bit Length |
16 bit Cecksum |
TCP の信頼性
- シーケンス番号と確認応答

TCP の信頼性(2)
- データパケットが喪失した場合

TCP コネクション確立
- 3 way handshake
- SYN = コネクション確立要求 (シーケンス番号の Synchronize)
- Server LISETEN -> ESTABLISHED

TCP コネクション終了
- TCP は、全2重通信 (Full Duplex)
- 送信/受信の両方について別々に切断処理を行う
- FIN = コネクション切断要求 (Final 最後)

ウィンドウ制御
- スライディングウィンドウ制御
- 高速再送制御
- ウィンドウ途中で取れなかったデータを明示的に要求する
- ふくそう(輻輳)制御
ふくそう制御
- スロースタート (Slow Start)
- 受信側 ウィンドウ (W) ... 送信側 ふくそうウィンドウ (Wc)
- Wc を小さい値から増やしていく。
- ACK が来ない = Wc 大きくし過ぎ -> 小さい値に戻す
次週予告
- 2F 計算機実習室で実習を行います
- 要アカウント (パスワード)
本日の問題
- 次のアプリケーションに、UDP と TCP のどちらが適しているか
- テレビ電話
- ネットバンキング
- 画像(データ)のダウンロード