新人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.
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
「Microsoft 365のセキュリティ運用」に関するアンケート
-
3
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
4
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
5
221人調査で分かった「情シス最大のストレス」は?
-
6
「Salesforceのテスト自動化ツール」に関するアンケート
-
7
IT製品の導入に関するアンケート「サーバ&ストレージ」編
-
8
「データストレージの活用方法」に関するアンケート
-
9
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
10
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー