1.レイヤ4のプロトコル
1.レイヤ4のプロトコル
レイヤ4のプロトコルには2種類があります。厳密には他にもありますが、試験では問われません。
種類 | 特徴 | アプリケーション層のプロトコル例 |
---|---|---|
TCP | 信頼性の高い通信を実現するプロトコル | HTTP,SMTP,POP3,SSH,FTP,Telnet,DNS(ゾーン転送) |
UDP | 高速性を優先したプロトコル | SNMP,NTP,DNS(問合せ),DHCP,TFTP,ストリーム配信のプロトコル |
参考。TCP/UDPを使わない通信として、ICMP、GRE、ESPなどがあります。当然、ポート番号の概念はありません。ICMPなどは、レイヤ3のプロトコルです。
2.ポート番号
IPアドレスでは、端末(正確にはNICですが)を特定します。ポート番号は、端末におけるサービスやアプリケーションを指定するために利用するものです。たとえば、HTTPであれば80、メール送信であれば25などのポート番号を使って通信をします。
TCPやUDPの通信を行うには、ポート番号が必要です。
インターネットを見るHTTPは80番で、
メールを送るSMTPは25番として決まっていますよね。
そう。ただ、厳密に言うと、違うポート番号でHTTP通信をしたり、SMTPにてメールを送ることもできる。
でも、決まっていた方が分かりやすい。
クライアントは、そのポートめがけて通信をすればいいので。
インターネットを見たいときは、80番でアクセスする。サーバは80番で待ち受けている。
サーバ側でnetstatコマンドで確認すれば、その様子が分かるだろう。
(後日その画面を貼り付けます)
▼補足解説
・ポート番号は2バイト(16ビット)で表現されるので0~2の16乗(=65535)の値を持つ。
・利用範囲が決められている。
範囲 | 解説 |
---|---|
0~1023 | Well-Knownポート。telnet 23,smtp 25など |
1024~49151 | 登録されたポート。IPアドレスを管理しているIANA(Internet Assigned Number Authority)が管理し、許可をもらって利用する。たとえばMicrosoft社は3389をターミナルサービスとして登録している。メジャーな会社は申請することが多いだろう。 |
49152~65535 | アプリケーションが動的に割り当てたり、Privateポート番号として自由に使える。 |
また、ポート番号はクライアント側でも特定のものが割り当てられている。
サーバは、クライアントのポート番号に向けて、応答パケットを返します。
▼代表的なWell-Knownポート
TCP/UDP | ポート | プロトコル |
---|---|---|
TCP | 20、21 | FTP(File Transfer Protocol) |
TCP | 22 | SSH(Secure SHell) |
TCP | 23 | Telnet |
TCP | 25 | SMTP(Simple Mail Transfer Protocol) |
UDP/TCP | 53 | DNS(Domain Name System) |
UDP | 67、68 | DHCP(Dynamic Host Configuration Protocol) |
TCP | 80 | HTTP(HyperText Transfer Protocol) |
TCP | 110 | POP3(Post Office Protocol versison 3) |
UDP | 123 | NTP(Network Time Protocol) |
TCP | 143 | IMAP(Internet Message Access Protocol) |
TCP | 389 | LDAP(Lightweight Directory Access Protocol) |
TCP | 443 | HTTPS(HTTP over SSL/TLS) |
TCP | 465 | SMTPS |
UDP | 514 | SYSLOG |
TCP | 587 | サブミッションポート |
TCP | 993 | IMAPS(IMAP over SSL/TLS) |
TCP | 995 | POP3S(POP3 over SSL/TLS) |
2.UDP(User Datagram Protocol)
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) |
---|
問31 UDPのヘッダフィールドにはないが,TCPのヘッダフィールドには含まれる情報はどれか。 ア あて先ポート番号 イ シーケンス番号 ウ 送信元ポート番号 エ チェックサム |
↓
↓
↓
↓
↓
正解:イ
過去問(H29秋NW午前2 問10) |
---|
問10 UDPを使用するプロトコルはどれか。 ア DHCP イ FTP ウ HTTP エ SMTP |
↓
↓
↓
↓
↓
正解:ア
過去問(H29秋FE午前 問34) |
---|
問34 トランスポート層のプロトコルであり,信頼性よりもリアルタイム性が重視される場合に用いられるものはどれか。 ア HTTP イ IP ウ TCP エ UDP |
↓
↓
↓
↓
↓
正解:エ
過去問(H28春ES午前 問17) |
---|
問17 TCPヘッダとUDPヘッダの両方にあるフィールドはどれか。 ア 宛先IPアドレス イ コントロールフラグ(SYN,ACKなど) ウ シーケンス番号 エ チェックサム |
↓
↓
↓
↓
↓
正解:エ
ア:TCPヘッダではなくIPヘッダ
イ,ウ:TCPヘッダのみに存在
過去問(H26秋AP午前 問33) |
---|
問33 IPの上位階層のプロトコルとして,コネクションレスのデータグラム通信を実現し,信頼性のための確認応答や順序制御などの機能をもたないプロトコルはどれか。 ア ICMP イ PPP ウ TCP エ UDP |
↓
↓
↓
↓
↓
正解:エ
過去問(H23秋NW午前2 問14) |
---|
問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は、名前解決までに、コンマ何秒というレベルではあるが、時間がかかってしまう。利用者にとってはネットは早い方がいいよね