TCP・UDP

通信には信頼性のある通信と信頼性のない通信があります。本項ではTCP、及びUDPについて説明します。

信頼性のある通信とない通信

 通信には信頼性のある通信とない通信があります。信頼性のある通信はTCP、信頼性のない通信はUDPというプロトコルを使っています。

 TCPでは、相手までフレームが届いたか確認しながら通信を行い、届いていない場合は再送するため、確実性があります。

 UDPでは、相手までフレームが届いたかを確認しないため、届いてない場合でも再送しません。

 TCPもUDPもレイヤー4の技術でポート番号がこのレイヤーに当たり、レイヤー3のIPプロトコルと組み合わせて使われます。つまり、IPプロトコルで通信相手までたどり着き、TCPやUDPで利用するサービスを決定します。

TCPの概要

 TCPでは通信の最初に3ウェイハンドシェイクという通信を行います。

TCP1

 上の図でSYNやACKと記載があるのはフラグと呼ばれていて、次にどのようなフラグで通信するか手順が決まっています。フラグはポート番号等と同様、パケットの中に組み込まれています。

 同様にシーケンス番号というのもパケットの中に組み込まれており、この番号により受信側でパケットが順番通り来ているか判断しています。このため、パケットに抜けがあった場合はシーケンス番号に抜けが出るため再送が可能です。

 このようにTCPでは1度通信を開始すると手順や番号等で管理された上で送受信を行います。これをコネクションと言います。

 同じパソコンとサーバー間の通信でも違う通信であればコネクション管理も異なります。又、相手からの応答が遅いとタイムアウトして通信が切断されます。

 通信を終了する時は以下の手順になります。

TCP2

 TCPは確実にデータを送信したい通信、及びWeb参照等のようにデータ量が多いため何度もパケットを送る必要があり、パケットに抜けがあっても再送によって回復出来る通信に向いています。

UDPの概要

 UDPではTCPのように3ウェイハンドシェイクを行わず、コネクション管理も行いません。このため、速くデータを送信出来、サーバー側の負荷も軽くて済みます。

 UDPはDNSのようなサーバー側で大量の通信を受け付ける場合や、パケットが届かなくても問題ない通信に向いています。又、動画ではパケットを再送してもすでにその場面は過ぎているので意味がありません。少しでも早くデータを送信出来る事に意味があります。このような通信にもUDPが使われています。

 パケットの構造は既に説明した通りですが、そのデータ部分にTCPが入ります。TCPヘッダーの構造は以下の通りです。

tcp_udp_3

 フラグの中にSYN、ACK、FIN等を示すビットがあります。

MSS

 TCPヘッダーの構造で示したデータ部分の長さの最大値をMSSと言います。MTUが1500byteでオプションがない場合は「パケット」で示したデータ以外の部分が20byte、上記で示したデータ以外の部分が20byteになるため、1460byteがMSSになります。

 フレッツ等でPPPoEの情報が付加されている場合はMTUが小さいためMSSも小さくなります。

 パケットの構造は既に説明した通りですが、そのデータ部分にUDPが入ります。UDPヘッダーの構造は以下の通りで、TCPと比較して単純になっている分短く、相手まで届いたか確認する部分がありません。

tcp_udp_4

サイト関連1

応用編「ポート番号
応用編「サービス
トラブル対応「TCP通信の流れ

キーマンズネット1

ネットワーク早わかり講座「第15回 TCPとUDP、ストリーミング事情
  • このエントリーをはてなブックマークに追加