TCPとUDP(トランスポート層)

bold;">TCP(Transmission Control Protocol) :伝送制御プロトコルといわれ、TCP/IPの通信処理で使われるプロトコルのひとつ。OSI参照モデルトランスポート層にあたる。ネットワーク層プロトコルであるIPの上位プロトコルとして使われる。
bold;">TCP仕様: プロトコル番号:6
コネクション型通信であり、3ウェイ・ハンドシェイク方式で接続を確立する。
bold;">3ウェイ・ハンドシェイク方式:TCP などにおいて使用されている接続を確立するための手順であり、つぎの 3 ステップによって構成される。

1. 通信の要求者が相手に対して SYN パケットを送信する。
2. SYN パケットを受けとった通信相手は、その要求者の接続を許可する SYN ACK パケットを送信する。同時に通信相手は接続を準備するために、その要求者との接続用の情報を記憶する領域を割り当てる。
3. SYN ACK パケットを受けとった要求者は、接続開始をあらわす ACK パケットを送信し、通信相手との通信を開始する。



ひとつのIPアドレスで16bit (65535個)の論理ポートを持つことができる。

  • URG 緊急転送データ
  • ACK 受信確認
  • PSH プッシュ
  • RST 接続のリセット
  • SYN 同期
  • FIN 送信終了
bold;">UDP(User Datagram Protocol):TCPと違いコネクションレスであり、送達確認などを行わないため言わば無手順方式*1のデータ転送となる。通信中のパケット紛失や、データ誤り等の検出やその為の対応が必要な場合はアプリケーションで行う。しかし、その分TCPと比べデータ比率は高まるため、途中でデータが抜け落ちても問題が少ない音声や画像のストリーム形式での配信(VoIP、Realストリーミング、QuickTimeストリーミング)に用いられている。
bold;">UDP仕様:プロトコル番号:17
TCP同様、ひとつのIPアドレスで16bit (65535個)の論理ポートを持つことができる。物理的・IPアドレス的に1つであっても、論理的に多重化された65535個までの通信を行うことができる。

bold;">UDP-Lite(Lightweight User Datagram Protocol):従来のUDPパケットでは1ビットでもデータが損傷すれば破棄されるのに対して、UDP-Liteはそのまま伝送される。音声や動画の伝送を目的にしている。
bold;">UDP-Lite仕様: プロトコル番号:136
UDPパケットでは1ビットでもデータが損傷すれば破棄されるのに対して、UDP-Liteはそのまま伝送される。ヘッダー部の5-6バイト目がUDPでは「長さ」フィールドであったが、UDP-Liteでは「チェックサム・カバー範囲*2」(Checksum coverage)フィールドになっている。
TCPUDP同様、ひとつのIPアドレスで16bit(65535個)の論理ポートを持つことができる。物理的・IPアドレス的に1つであっても、論理的に多重化された65535個までの通信を行うことができる。

*1:受信する側の状態を確認しない。データが正常に送信されたか否かを調べることはできないので、信頼性は低い。文字データに始点と終点の印だけを付してデータを区切って伝送する調歩同期方式やTTY手順などが無手順の代表例。

*2:UDP-Liteヘッダー部の5-6バイト目が「チェックサム・カバー範囲」と呼ばれ、「0」又は「8以上」の数字が入る。「0」の場合はUDP-Liteパケット全体が、「8以上」の場合はUDP-Liteヘッダー部を含む保護したいデータ部のサイズをバイト数で指定する。指定された範囲だけがチェックサム計算の対象となる。チェックサム計算の結果がヘッダー部の 7-8バイト目に格納されるのはUDPと同じである。例えば、チェックサム・カバー範囲の値が「8」である場合は、「8×8bit=64bit」となり、UDP-Liteヘッダー部の長さと同じになるため、ヘッダー分に続くデータ部分はチェックサムの計算対象からはずされる。データ部分がチェックサムの計算対象からはずされるということは、データ部分に損傷が生じても検知されずにそのまま運ばれることを意味する。チェックサム・カバー範囲の値をUDP-Liteヘッダー部とUDP-Liteデータ部のサイズの合計値にすれば、従来のUDPの「長さ」フィールドと同じ値となり、互換性が保てる。