広告

OSI参照モデル第4層「トランスポート層」とTCP/UDPを徹底解説

インターネット

ネットワークの根幹を支えるOSI参照モデル。今回は、その中でも重要な役割を担う第4層「トランスポート層」に焦点を当て、初心者にも分かりやすく解説します。

ネットワーク層は理解できたけど、トランスポート層って何?」「TCPとUDPの違いが分からない…」そんな悩みをお持ちの方もご安心ください。

本記事では、トランスポート層の役割から、TCPとUDPの特性、それぞれの使い分けまで丁寧に解説します

【事前学習におすすめ】

第3層「ネットワーク層」について知りたい方は、こちらの記事からご覧ください。

この記事を読むことで、トランスポート層とTCP/UDPの理解が深まり、より実践的なネットワーク知識が身につきます。

ネットワークエンジニアを目指す方、ネットワークの仕組みを深く理解したい方は、ぜひ最後までご覧ください。

キーワード

  • トランスポート層
  • TCP
  • UDP

トランスポート層とは?

OSI参照モデル第4層「トランスポート層」は、ネットワークにおけるデータの信頼性効率性を確保する重要な役割を担っています。

主な役割

  • エンドツーエンドの通信確立:送信元から宛先アプリケーションまでの、信頼性の高い通信経路を確立します。
  • データ転送の制御:データのエラー訂正、再送制御、順序制御などを行い、正確なデータ転送を実現します。
  • ポート番号によるアプリケーション識別ポート番号を用いて、どのアプリケーション宛のデータかを識別し、適切なアプリケーションにデータを渡します。
  • TCPとUDP:トランスポート層の代表的なプロトコル(次の章で解説)

IPパケットのヘッダにはプロトコルフィールドが定義されています。

ネットワーク層はIPアドレスによってどこに配送するか決めていましたが、トランスポート層ではポート番号で配送先を決めています。

TCPとUDPについて

TCP(Transmission Control Protocol)はコネクション型のプロトコルです。そのため、信頼性があります。

ではどのように信頼性を高めていくのでしょうか。

実は、TCPでは送信したデータが受信ホストに到達した際、受信ホストは送信ホストにデータが到達したことを知らせます。これをACKといいます。もし、ACKが返ってこないときは、どこかでデータが消えてしまった可能性があります。また、データは届いたがACKの送信中に何か問題が生じて応答なしの場合も考えられます。応答なしと誤って判断して、同じデータを再送することを防ぐために再送タイムアウト時間を設定します。

再送タイムアウト時間とは、確認応答が送信ホストに届くのを待つ時間のことです。再送タイムアウト時間を過ぎても確認応答がなかったら、データが喪失したと考えます。

このようにして、TCPはこのACKでデータ到達の信頼性を高めています。

UDP(User Datagram Protocol)はコネクションレス型のプロトコルです。そのため、信頼性には欠けています。コネクションを確立しないため、高速でリアルタイムな通信を可能とします。

UDPは多少のデータの欠落や順番の入れ替わりが許容される、動画配信やオンラインゲーム、音声通話などで使われます。

アプリケーションがTCPやUDPを使って通信する際には、「ソケット」という特別な窓口(API)を使います。

ソケットを通じて、アプリケーションは通信相手の住所(IPアドレス)やポート番号(通信の出入り口)などを指定し、データの送受信を行います。

ポート番号の決め方

Point

ネットワーク通信においてポート番号は、データをどのアプリケーションに送るかを識別するための重要な役割を担っています。ポート番号は、0から65535までの整数で表され、その範囲によって役割が異なります。

ウェルノウンポート

0から1023までのポート番号は「ウェルノウンポート」と呼ばれ、HTTP(80番)、HTTPS(443番)、FTP(20番、21番)など、主要なアプリケーションの通信に固定的に割り当てられています。これは、クライアントが特定のサービスにアクセスする際に、どのポート番号を使用すればよいかを事前に知っておく必要があるためです。

例えば、WebブラウザがWebサーバーにアクセスする際、HTTPであれば80番、HTTPSであれば443番のポート番号を使用して通信を確立します。これにより、Webサーバーは、受信したデータがWebブラウザからのものであることを識別し、適切な処理を行うことができます。

エフェメラルポート

一方、クライアントアプリケーションが使用するポート番号は、固定的に決められているわけではありません。クライアントアプリケーションは、OSによって動的に割り当てられるポート番号を使用します。この範囲は、一般的に49152から65535までとされています。これらのポート番号は「エフェメラルポート」と呼ばれ、クライアントがサーバーに接続するたびに、OSによってランダムに割り当てられます。

エフェメラルポートを使用することで、クライアントは複数のサーバーと同時に通信を行うことができます。例えば、Webブラウザで複数のタブを開いてWebサイトを閲覧する場合、それぞれのタブは異なるエフェメラルポートを使用して、Webサーバーと通信を行います。

おわりに

今回は、トランスポート層のTCPとUDPについて扱いました。

TCPは信頼性の高い通信でファイル転送やストリーミングに向いており、UDPは即時性の求められる通信に使われています。TCPとUDPの違いを押さえておきましょう。

セグメント単位でデータを送信する方法以外に、ウィンドウ制御と呼ばれる送信方法もあります。今回は紹介していませんが、気になった方は調べてみるとよいです。

最後までご覧いただきありがとうございました!

コメント

タイトルとURLをコピーしました