Upgrade to Pro — share decks privately, control downloads, hide ads and more …

詳解TCP/IP 勉強会 11章 UDP ユーザ・データグラム・プロトコル

on
March 20, 2017
160

詳解TCP/IP 勉強会 11章 UDP ユーザ・データグラム・プロトコル

on

March 20, 2017
Tweet

Transcript

  1. 目次 • 11.1 イントロダクション • 11.2 UDPヘッダ • 11.3 UDPチェックサム

    • 11.4 単純な例 • 11.5 IPフラグメンンテーション • 11.6 ICMP到達不可エラー(フラブメンテーション要求) • 11.7 Tracerouteを用いてパスMTUを決定する • 11.8 UDPによるパスMTUディスカバリ • 11.9 UDPとARPの間のやり取り • 11.10 UDPデータグラム・サイズの最大値 • 11.11 ICMP発信元抑制エラー • 11.12 UDPサーバーの設計 • 11.13 まとめ 2
  2. 11.2 UDPヘッダ 4 • ポート番号:送り手、受け手のプロセスを示す • デマルチプレクス後参照されるため、ポート番号はTCPとUDPで独立 • UDPデータ長:UDPヘッダ+UDPデータの長さ •

    最小値は8バイト(データがないこともある) • IPヘッダに全体のデータ長、IPヘッダ長が記載済み →全体のデータ長ーIPヘッダ長=UDPデータグラムのデータ長
  3. 11.3 UDPチェックサム • 対象:UDPヘッダとUDPデータ • チェックサムはUDPではオプション、TCPでは必須 • 計算:基本16ビット・ワードの1の補数計算 • 相違点

    ①UDPデータグラムが奇数バイトのとき最後に0をくっつける(パット・バイト) ②12バイトの擬似ヘッダを使用 5
  4. 11.3 UDPチェックサム • 擬似ヘッダ • IPヘッダを簡略化 • 正しい宛先に到着したことを再 確認 •

    エラー検出 • 破棄 • エラー・メッセージなし • チェックサムをオフにもできる • 推奨されない 6
  5. 11.5 IPフラグメンテーション • MTUとデータグラムのサイズを比較→必要なら断片化 • IPヘッダ • フラグ • フラグ・フィールドの一部がオン→「自分は最後のフラグメントではない」ことを示す

    • フラグメント・オフセット • 自分がオリジナルのデータグラムのどの位置にあたるか示す • 全データ長 • フラグメントされると変更される • フラグ・フィールドの1つのビットがオン • フラグメント化してはいけない→ICMPエラーを送り返す 11
  6. 11.10 UDPデータグラム・サイズの最大値 • 理論的には65535-20-8=65507バイト しかし殆どの場合これより小さい • 原因 • アプリケーション・プログラムがプログラム・インターフェースに制限される •

    TCP/IPのカーネルの実装 • UDPプログラム・インターフェースは、アプリケーションが戻ってくる データグラムの最大値を毎回指定できるようにしている 28
  7. 11.12 UDPサーバーの設計 • クライアントのIPアドレスとポート番号 • UDPデータグラムには • 発信元と宛先のIPアドレス • 発信元と宛先のポート番号

    • 応答は要求してきたクライアントに返すことができる • 宛先IPアドレス • いくつかのアプリケーションは宛先IPアドレスを知る必要がある • OSが受信したUDPデータグラムから宛先IPアドレスをパスすることを要求して いるが、全ての実装がこの機能を提供しているわけではない 33