1.UDP(User Datagram Protocol)
・コネクションレス型のプロトコル
・TCPと比べて,1パケット毎に確認応答を行うことが無い,コネクションを確立するためのオーバヘッドが無い,再送制御をしない,順序の制御をしない,ヘッダがTCPに比べてシンプル,などの理由によって高速な通信を可能にしている。
・上記のことにより電話などのリアルタイム通信や動画,音声のストリーミングなどに適している。UDPはTCPと比べて信頼性が薄いが,ストリーミングにおいて,画面の一部が一瞬欠落してもそれほど問題にはならない。それよりも高速性が求められている。
・過去問(H26年秋高度午前1問10)では,UDPに関して,「IPの上位階層のプロトコルとして,コネクションレスのデータグラム通信を実現し,信頼性のための確認応答や順序制御などの機能をもたないプロトコル」と述べられています。
◆UDPのヘッダ情報
※テキスト類では32ビットで区切られた表になっている場合が多い。私はこの表の意味が理解できなかった。実データは01データなので横並びであるが,ページの関係や分かりやすさの面で,表にしているだけである。
1)送信元ポート番号(16ビット)
2)宛先ポート番号(16ビット)
3)セグメント長(16ビット)
4)チェックサム(16ビット)
たったこれだけで,合計8バイト。TCP(基本は20バイト)に比べてシンプルですよね。
ポイントの一つとして,TCPに存在したシーケンス番号が存在しない。よって,相手に届くパケットの順序制御ができない。
◆過去問にて
過去問では,TCPとUDPのヘッダの違いが問われている。単なる暗記問題と考えるのでははなく,なぜこのフィールドが無いかを理解するべきである。
【H19NW午前 問31】 UDPのヘッダフィールドにはないが,TCPのヘッダフィールドには含まれる情報はどれか。 ア あて先ポート番号 イ シーケンス番号 ウ 送信元ポート番号 エ チェックサム |
↓
↓
↓
↓
↓
正解:イ
【H29秋NW午前2 問10】 UDPを使用するプロトコルはどれか。 ア DHCP イ FTP ウ HTTP エ SMTP |
↓
↓
↓
↓
↓
正解:ア
【H29秋FE午前 問34】 トランスポート層のプロトコルであり,信頼性よりもリアルタイム性が重視される場合に用いられるものはどれか。 ア HTTP イ IP ウ TCP エ UDP |
↓
↓
↓
↓
↓
正解:エ
【H28春ES午前 問17】 TCPヘッダとUDPヘッダの両方にあるフィールドはどれか。 ア 宛先IPアドレス イ コントロールフラグ(SYN,ACKなど) ウ シーケンス番号 エ チェックサム |
↓
↓
↓
↓
↓
正解:エ
ア:TCPヘッダではなくIPヘッダ
イ,ウ:TCPヘッダのみに存在
【H26秋AP午前 問33】 IPの上位階層のプロトコルとして,コネクションレスのデータグラム通信を実現し,信頼性のための確認応答や順序制御などの機能をもたないプロトコルはどれか。 ア ICMP イ PPP ウ TCP エ UDP |
↓
↓
↓
↓
↓
正解:エ
【H23秋NW午前2 問14】 IPv4ネットワークにおいて,Pヘッダ,TCPヘッダ,UDPヘッダのチェックサムフィールドに関する記述のうち,適切なものはどれか。 ア IPヘッダのチェックサムの計算は必須であるが,TCPヘッダ及びUDPヘッダのチェックサムの計算はオプションであり,計算を省略して0を指定してもよい。 イ IPヘッダのチェックサムの対象はヘッダ部分だけであるが,TCPヘッダ及びUDPヘッダのチェックサムの対象はデータ部分も含む。 ウ TCPヘッダのチェックサムの計算は必須であるが,IPヘッダ及びUDPヘッダのチェックサムの計算はオプションであり,計算を省略して0を指定してもよい。 エ どのヘッダのチェックサムフィールドも,チェックサムの対象はヘッダ部分だけである。 |
↓
↓
↓
↓
↓
正解:イ
IPヘッダのチェックサムはIPヘッダのみで,TCPやUDPのチェックサムはデータも含む。
考え方としては,TCPやUDPでデータをチェックしてくれるから,IPヘッダではIPヘッダのみでOKと覚えればいいと思う。
ちなみに,UDPヘッダは0を指定してもよい。
2.DNS(UDP)のフレーム
UDPのフレーム構造を以下に示す。
www.ipa.co.jpにアクセスした際に、DNSサーバにDNS問い合わせが行われたフレームである。
TCPとの違いを中心に見てほしい。
DNSってUDPなんですね。
名前解決って信頼性が大事だと思うんですが
確かにそうだね。DNSキャッシュポイズニングなどDNSを詐称する攻撃もあるから。
でも、名前解決はスピードも必要なんだ。
たとえば、www.yahoo.co.jpのサイトを見ようと思うと、まずはDNSで名前解決をする。それから接続に行く。このとき、3wayハンドシェークなどをするTCPは、名前解決までに、コンマ何秒というレベルではあるが、時間がかかってしまう。利用者にとってはネットは早い方がいいよね