【TCP/UDP編】プロトコルの基本を学ぶ

TCP/UDPプロトコルについてのまとめです。トランスポート層に位置し、上位のアプリケーション層からデータを受け取り、論理的な通信を確保する機能を持ちます。

OSI参照モデルとTCP/IPプロトコル

TCPプロトコル

TCP(Transmission Control Protocol)は信頼性の高いポート間の通信を提供します。HTTP、FTP、SMTP、SSH、Telnetなどのアプリケーション層のプロトコルで利用されています。(TCP)ヘッダーを付与したデータの通信単位は"セグメント"や"パケット"と呼ばれます。

TCPプロトコルのフォーマット
  • 送信元ポート番号

  • 宛先ポート番号
    Well-Known Port(0~1023)はRFCで定義されており、以下が代表的なものです。1024~49151は登録済みのポート番号で特定のアプリケーションで利用されています。49152~65535番はエフェメラルポートと呼ばれ、特定の用途は決まっておらず、通信時にランダムに割り当てられます。

    TCP/20:FTP(データ)
    TCP/21:FTP(制御)
    TCP/22:SSH
    TCP/23:TELNET
    TCP/25:SMTP
    TCP/53:DNS
    TCP/80:HTTP
    TCP/443:HTTPS

  • シーケンス番号
    データの順番を表す番号。もし抜けがあった場合、再送を依頼する。

  • 確認応答番号
    シーケンス番号に受信したデータバイト数を足し、確認応答(ACK)番号として応答する。

  • データオフセット
    ヘッダー長

  • 予備領域
    将来的な利用のための予約範囲であり、常に値は0

  • フラグ
    URG,ACK,PSH,RST,SYN,FIN のそれぞれ1ビットで
    0が無効、1が有効を示す。

  • ウィンドウサイズ

  • チェックサム

  • 緊急ポインタ
    URGフラグが1の場合、緊急データの位置を示す。

  • オプション
    TCPのオプションを設定する。

  • パディング
    32bit単位になるように0埋めする。



UDPプロトコル

UDP(User Datagram Protocol)はコネクションレス型の通信を提供します。DNS、SNMP、DHCPなどの通信の完全性よりも効率性を重視するプロトコルで利用されています。またブロードキャストやマルチキャスト通信を行う場合はUDPプロトコルが必ず必要となります。
(UDP)ヘッダーを付与したデータの通信単位は"セグメント"や"パケット"と呼ばれます。

UDPプロトコルのフォーマット
  • 送信元ポート番号

  • 宛先ポート番号

  • データ長
    UDPパケット全体の長さ(バイト)

  • チェックサム

いいなと思ったら応援しよう!