新人IT担当者のためのネットワーク機器入門【第6回】
即時性か信頼性か、レイヤー4のプロトコル「TCP」と「UDP」
ネットワークと関連機器に関する「今更聞けない」基礎知識をこっそりおさらいしようというこの連載。今回はレイヤー4の技術である「TCP」と「UDP」について学びます。
連載第5回の「『ルータ』を理解するツボ、ルーティングテーブルの作り方とルールについて」では、レイヤー3(ネットワーク層)で動作するネットワーク機器「ルータ」について説明しました。ルータはルーティングテーブルを使用して、パケットの転送先を切り替える「ルーティング」をしています。今回は、レイヤーを1つ上げて、レイヤー4(トランスポート層)に関連する代表的なプロトコル「TCP」と「UDP」を説明します。レイヤー4は「コネクションの制御」と「アプリケーション識別」という、2つの大きな役割を担っています。それぞれの役割について説明します。
連載:新人IT担当者のためのネットワーク機器入門
コネクションの制御
レイヤー3の仕事はアプリケーションから渡されたデータを目的のノード(イーサネットに接続された各機器)に送り届けるところまでで、それ以上のことはしてくれません。ルータはどんなアプリケーションのデータを送っているかも知りませんし、そのアプリケーションがどんな通信制御を要求しているかも気にしません。レイヤー4は、そんなレイヤー3の不器用さをアプリケーションに近い側面からカバーしているレイヤーです。ネットワークとアプリケーションの架け橋になって、通信の柔軟性を確保しています。
通信にどんな制御が必要なのか。レイヤー4ではその要求を「即時性(リアルタイム性)」と「信頼性」に大別し、それぞれ別のプロトコルを使用するようにしています。即時性を求めるアプリケーションには「UDP(User Datagram Protocol)」を使用します。対して、信頼性を求めるアプリケーションには「TCP(Transmission Control Protocol)」を使用します。どちらのプロトコルを使用しているかはIPヘッダの「プロトコル番号」フィールドで定義されています(IPヘッダのフィールドについては「これだけ押さえておけば十分 レイヤー3のパケット転送を担う『IP』のこと」を参照)。それぞれについて説明しましょう。
UDP
UDPは音声通話(VoIP、Voice over IP)やマルチキャストの動画配信、名前解決、DHCPなど、即時性を求めるアプリケーションで使用します。パケットは送ったら送りっぱなしなので、信頼性はありませんが、余計な手順を省いているため、即時性が高まります。
即時性を重視するUDPは、パケットフォーマットもシンプルに構成されています。データ量は8バイト(64ビット)しかありません。クライアントはUDPでセグメントを作り、どんどん送るだけです。サーバのことは気にしません。データを受け取ったサーバは、UDPヘッダに含まれるヘッダ長とチェックサムを利用して、データが壊れていないかどうかをチェックします。チェックに成功したら、データを受け入れます。
この中でポイントとなるフィールドが「送信元/宛先ポート番号」です。ポート番号はアプリケーションの識別に使用するフィールドです。次節で詳しく説明します。
TCP
TCPはメールやファイル転送、Webブラウザなど、信頼性を求めたいアプリケーションで使用します。データを送る前に「コネクション」と呼ばれる仮想的な通信路を作り、その中でデータをやりとりします。送信側と受信側が「送ります」「届きました」と確認し合いながらデータを送るため、信頼性が高まります。
TCPは信頼性を求めるため、パケットフォーマットも少々複雑です。データ量は20バイト(160ビット)もあります。たくさんの種類のヘッダを使用して、どの「送ります」に対する「届きました」なのかを確認したり、効率的にデータを送受信できるようにしたりしています。
この中でポイントとなるフィールドが「送信元/宛先ポート番号」と「コントロールビット」です。ポート番号は、UDPと同じくアプリケーションの識別に使用するフィールドです。次節で詳しく説明します。コントロールビットは、コネクションの状態を制御するフィールドです。6ビットのフラグで構成されて、それぞれ以下のような意味を表しています。
TCPは、データを送るときに、このフラグを「1」にしたり「0」にしたりすることで、コネクションがどういう状態にあるのかを伝え合っています。具体的にどう伝え合っているのか、ここでは「接続開始時」「接続時」「接続終了時」、3つのフェーズに分けて説明します。
- 1. 接続開始時
TCPコネクションは必ず「3ウェイハンドシェイク」から始まります。3ウェイハンドシェイクはアプリケーションデータを送る前のあいさつのようなものです。「SYN」 → 「SYN/ACK」 → 「ACK」という順番でフラグを交換し、コネクションを作ります。3ウェイハンドシェイクが終わったら、お互いにアプリケーションデータを送受信できる状態「ESTABLISHED状態」になります。
- 2. 接続時
3ウェイハンドシェイクによって、コネクションができたら、この上でアプリケーションデータを送受信します。TCPは通信の信頼性と速度を両立させるために、たくさんの転送制御を行っています。代表的な転送制御は以下の3つです。
接続時は、複数の転送制御が複雑に入り混じって、アプリケーションデータを転送しています。それら全てを理解するのは簡単ではありません。ここでは、受信側からの応答は受信したことを表す「ACK」が必ず立っている(ACKフラグが「1」になっている)というところだけ押さえておきましょう。
- 3. 接続終了時
コネクションの終了にはFINフラグを使用します。FINフラグは「もう送るデータはありません」ということを表すフラグで、上位アプリケーションによって付与されます。FINはどちらのノードからと決まっているわけではなく、どちらからでも送出されるもので、その後は「FIN/ACK」→「ACK」→「FIN/ACK」→「ACK」というフラグのやりとりをします。フラグをやりとりしたあとは、最初にFINを送出したノードだけが「TIME-WAIT状態」となって、コネクションを一定時間保持します。一定時間が経過したら、コネクションを終了します。
アプリケーションの識別
レイヤー4にはもう1つ大きな役割があります。「アプリケーションの識別」です。連載第4回「これだけ押さえておけば十分 レイヤー3のパケット転送を担う『IP』のこと」で説明した通り、レイヤー3さえあれば、データは宛先ノードに届きます。しかし、データを受け取ったノードはそのデータをどう処理すればよいか分かりません。そこで、TCP/UDPヘッダ内の「ポート番号」を使用します。ポート番号はアプリケーションにひも付いていて、宛先ポート番号を見れば、どのアプリケーションのデータなのかが分かります。その数字を見て、どのアプリケーションに渡すかを判断します。
ポート番号
ポート番号は、「0~65535」(16ビット分)までの数字です。割り当て範囲と使用用途によって「System Ports」「User Ports」「Dynamic and/or Private Ports」の3種類に分類されています。
- 1. System Ports
「0~1023」はSystem Portsです。一般的には「Well-known Ports」として知られています。System PortsはICANNの位置部門であるIANA(Internet Assigned Numbers Authority)によって管理されており、一般的なサーバアプリケーションに一意にひも付いています。例えばTCPの80番ならばWebブラウザで使用するHTTPであり、HTTPサーバで使用します。UDPの123番ならば時刻同期で使用するNTP(Network Time Protocol)であり、NTPサーバで使用します。代表的なSystem Portsは以下の表の通りです。
- 2. User Ports
「1024~49151」はUser Portsです。User Portsと同じようにIANAによって管理されており、メーカーが開発した独自のサーバアプリケーションに一意にひも付いています。例えば、TCPの3389番だったらMicrosoft Windowsのリモートデスクトップで使用します。TCPの3306番だったらMySQLのデータベース接続で使用します。代表的なUser Portsは以下の表の通りです。
- 3. Dynamic and/or Private Ports
「49152~65535」はDynamic and/or Private Portsです。IANAによって管理されておらず、クライアントがコネクションを作るとき、送信元ポート番号としてランダムに割り当てます。送信元ポート番号に、この範囲のポート番号をランダムに割り当てることによって、どのアプリケーションプロセスに返せばよいかが分かります。ランダムに割り当てるポート番号の範囲はOSによって異なります。例えば、Windows Vista/7/8だったら「49152~65535」です。Linuxだったらデフォルト「32768~61000」です。Linuxの使用するランダムポートの範囲は、IANAの指定している Dynamic and/or Private Portsの範囲から微妙に外れています。
受信時及び送信時におけるポート番号の関係をまとめて図式化すると、以下のようになります。
以上、今回はTCPとUDPについて解説しました。レイヤー4ではこの2つだけ押さえておけば問題ありません。次回は、レイヤー4で動作する機器「ファイアウォール」がどのようにしてコネクションを制御しているのかを説明します。
執筆者紹介
みやたひろし
大学と大学院で地球環境科学の分野を研究した後、某システムインテグレーターにシステムエンジニアとして入社。その後、ネットワーク機器ベンダーのコンサルタントに転身。設計から構築、検証に至るまで、ネットワークに関連する業務全般を行い、今日もどこかで自己研さんを積んでいる。CCIE(Cisco Certified Internetwork Expert)。F5 Certified Technology Specialists。著書に『インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門』『サーバ負荷分散入門』(いずれもSBクリエイティブ)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
新着ホワイトペーパー PR
-
事例
[株式会社キーエンス] PCが苦手でも自動化できる 近鉄コスモスなど4事例に学ぶ「ナビ搭載型RPA」活用 -
製品資料
[レノボ・ジャパン合同会社] 約1.39kgにAI処理能力を凝縮 持ち運べるAPU搭載ワークステーションの実力は? -
製品レビュー
[ネットアップ合同会社] ランサムウェア被害からの回復を阻む最大の壁とは? -
製品レビュー
[ネットアップ合同会社] 攻撃者は“最後の砦”を真っ先に狙う いま必要なランサムウェア対策とは? -
市場調査・トレンド
[Snowflake合同会社] AI時代のビジネスインテリジェンス変革:5大トレンドと成功戦略
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「WSUS」を捨てない? 非推奨でも35%が使い続けるワケ
-
2
Microsoft 365統一で「SharePoint」が1日2TB増 富士フイルムはどう管理した?
-
3
「Active Directory」復旧で“詰む”企業が続出 ランサムウェアに備える4対策
-
4
なぜMicrosoftは「Rust」を標準言語に? AIで進むC/C++書き換えの課題
-
5
1巻40TB、量子解読も防ぐ「LTO-10」 テープを侮るバックアップの盲点
-
6
「Kubernetesプラットフォーム」に関するアンケート
-
7
8割がアナログに逆戻りする“やっぱりな理由” DXを阻む2つの落とし穴
-
8
「業務用PCの導入検討」に関するアンケート
-
9
「社用車」に関するアンケート
-
10
IT人材不足は言い訳だ 採用を妨げる元凶は「スパゲティ状態」のシステム
ホワイトペーパーランキング PR
-
1
「IT史に名を残すシステム障害」8選
-
2
AIが苦手な「汚いデータ」になっていない? AI投資を無駄にしないための注意点
-
3
急増する高度なフィッシング詐欺 先回りしてブロックするには何が必要?
-
4
法人向け光回線のプランはどう選ぶ? 機能面/保守体制/コストを一覧で比較
-
5
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
-
6
「テスト内製化&自動化」事例集:ディー・エヌ・エーなど9社に学ぶ実践のコツ
-
7
三井ホームに学ぶ「無線LAN環境」構築 快適なオフィスと高度なIT運用の両立法
-
8
10G回線の真価をフルに享受するには? 導入前にチェックしたいポイント
-
9
進化が遅れる「電話」をアップデート、AIを搭載した次世代の通話機能とは?
-
10
有識者が語る、中堅中小企業に求められる最新のサイバーセキュリティ対策とは
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー