今回はOSI参照モデル第4層のトランスポート層について説明しています。
第3層ネットワーク層については既に解説しているので、分からないという方は事前にこちらの記事を読んでいただくと理解しやすいかもしれません。
キーワード:トランスポート層、TCP、UDP
トランスポート層とは?
IPパケットのヘッダにはプロトコルフィールドが定義されています。
ネットワーク層はIPアドレスによってどこに配送するか決めていましたが、トランスポート層ではポート番号で配送先を決めています。
TCPとUDPについて
TCP(Transmission Control Protocol)はコネクション型のプロトコルです。そのため、信頼性があります。
ではどのように信頼性を高めていくのでしょうか。
実は、TCPでは送信したデータが受信ホストに到達した際、受信ホストは送信ホストにデータが到達したことを知らせます。これをACKといいます。もし、ACKが返ってこないときは、どこかでデータが消えてしまった可能性があります。また、データは届いたがACKの送信中に何か問題が生じて応答なしの場合も考えられます。応答なしと誤って判断して、同じデータを再送することを防ぐために再送タイムアウト時間を設定します。
再送タイムアウト時間とは、確認応答が送信ホストに届くのを待つ時間のことです。再送タイムアウト時間を過ぎても確認応答がなかったら、データが喪失したと考えます。
このようにして、TCPはこのACKでデータ到達の信頼性を高めています。
UDP(User Datagram Protocol)はコネクションレス型のプロトコルです。そのため、信頼性には欠けています。コネクションを確立しないため、高速でリアルタイムな通信を可能とします。
アプリケーションからこのTCP・UDPを利用する際はソケットと呼ばれるAPIを使用します。アプリケーションはソケットを利用して、通信相手のIPアドレスやポート番号の設定などを行います。
ポート番号の決め方
有名なアプリケーションプロトコルでは、どのポート番号を利用するのか固定的に決められています。
これをウェルノウンポート番号といいます。例えば、HTTPやDHCPなどがあります。
クライアントのポート番号は固定的に決められる必要がありません。クライアントアプリケーションは自分のポート番号を決定せずに、OSに任せています。このようにダイナミックにポート番号を決める場合もあります。
おわりに
今回は、トランスポート層のTCPとUDPについて扱いました。
TCPは信頼性の高い通信でファイル転送やストリーミングに向いており、UDPは即時性の求められる通信に使われています。TCPとUDPの違いを押さえておきましょう。
セグメント単位でデータを送信する方法以外に、ウィンドウ制御と呼ばれる送信方法もあります。今回は紹介していませんが、気になった方は調べてみるとよいです。
最後までご覧いただきありがとうございました!
コメント