TCPとUDP

トランスポート層の役割

  • 計算機はマルチタスク
  • 同時に動いている複数のプログラム
  • どのプログラムが(相手ホストの)どのプログラムと話しているのか
  • => ポート番号

クライアント・サーバー

  • サーバー = 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

0123
0123456789 0123456789 0123456789 01
16 bit Source Port 16 bit Destination Port
16 bit Length 16 bit Cecksum

TCP Header

TCP の信頼性

  • シーケンス番号と確認応答

TCP の信頼性(2)

  • データパケットが喪失した場合

TCP コネクション確立

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

TCP コネクション終了

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

ウィンドウ制御

  • スライディングウィンドウ制御
    • ウィンドウサイズまでは, ACK を待たない.
  • 高速再送制御
    • ウィンドウ途中で取れなかったデータを明示的に要求する
  • ふくそう(輻輳)制御
    • ふくそうウィンドウ / スロースタート

ウィンドウなし

ウィンドウ制御

ふくそう制御

  • スロースタート (Slow Start)
  • 受信側 ウィンドウ (W) ... 送信側 ふくそうウィンドウ (Wc)
    • W > Wc
  • Wc を小さい値から増やしていく。
  • ACK が来ない = Wc 大きくし過ぎ -> 小さい値に戻す

次週予告

  • 2F 計算機実習室で実習を行います
  • 要アカウント (パスワード)

本日の問題

  • 次のアプリケーションに、UDP と TCP のどちらが適しているか
  1. テレビ電話
  2. ネットバンキング
  3. 画像(データ)のダウンロード