TCPとUDP

by 菊地時夫 last modified 2009-07-09 11:12

トランスポート層

トランスポート層の役割

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

クライアント・サーバー

  • サーバー = UNIX Daemon
  • HTTP サーバー / httpd / port 80
  • TELNET / telnetd / port 23
  • SSH / sshd / port 22
  • * / inetd / 複数のport
  • fork/exec ... オペレーティングシステム論(?)

TCP と UDP

  • TCP 信頼性を提供
  • UDP 信頼性無し(代わりに処理が早い etc)
    • 音声/ビデオ
    • マルチキャスト
    • ネットワークファイルシステム

ポート番号

  • トランスポート層におけるアドレス
  • サーバーはポート番号固定 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

  • User Datagram Protocol
  • 0123
    0123456789 0123456789 0123456789 01
    16 bit Source Port 16 bit Destination Port
    16 bit Length 16 bit Cecksum

TCP Header

  • Transmission Control Protocol
  • 0123
    0123456789 0123456789 0123456789 01
    16 bit Source Port 16 bit Destination Port
    32 bit Sequence Number
    32 bit Acknowledgment Number
    4 bit
    Data
    Offset
    Reserved
    (6bit)
    U
    R
    G
    A
    C
    K
    P
    S
    H
    R
    S
    T
    S
    Y
    N
    F
    I
    N
    16 bit Window Size
    16 bit TCP Checksum 16 bit Urgent Pointer
    Option (if any)
    :
    Data
    :

TCP の信頼性

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

TCP の信頼性(2)

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

TCP のコネクション管理

ウィンドウ制御

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

次週予告

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

本日の問題

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

解答

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

    (3 で、UDP と間違えて答えた人が多かった。画像のようにまとまった(大きな)データの転送では、途中でエラーが生じる恐れがあるため、信頼性のある TCP の方が適している)