TCP

読み:てぃーしーぴー / 英語表記:Transmission Control Protocol

アプリケーション間で、順序を保った信頼性のあるデータ転送を提供するトランスポート層のプロトコルである。通信前に接続を確立するコネクション型で、受信確認や再送によってデータの欠落に対処する。

イマシルちゃんの解説

ファイルを送るとき、途中のデータが抜けたり順番が入れ替わったりすると、元の内容を使えなくなるよ。
TCPは、こうした問題に対処してアプリケーション間のデータ転送を支えるプロトコルなんだ。
まず相手と接続を確立し、送るデータには位置を表すシーケンス番号を付けるよ。
受信側はどこまで届いたかを確認応答で知らせ、送り手は届いていないと判断した部分を再送するんだ。
受信側で順序も整えるから、アプリケーションは届く順番を自分で並べ直さずに済むよ。
ただし通信路が途切れたままなら送信は失敗するから、どんな状況でも必ず届くという意味ではないんだ。

より深い解説

定義

TCP(Transmission Control Protocol)は、RFC 9293(元はRFC 793)で定められたトランスポート層のプロトコルである。IPヘッダーのプロトコル番号は6。コネクション型で、通信の前に相手との間に論理的な接続(コネクション)を確立する。

確実に届けるための仕組み

仕組み内容
コネクションの確立通信の前に3ウェイハンドシェイクで互いの準備を確かめる
シーケンス番号送るデータの各バイトに通し番号を付け、受信側で順序を並べ直す
確認応答(ACK)受信側が「ここまで受け取った」と知らせる
再送一定時間内にACKが返らなければ、送り直す
フロー制御受信側が受け取れる量(ウィンドウサイズ)を知らせ、送り過ぎを防ぐ
輻輳制御ネットワークの混雑を推測し、スロースタートなどで送る量を調整する

コントロールフラグ

TCPヘッダーには、セグメントの役割を示す1ビットずつのフラグがある。

フラグ意味
SYNコネクションの確立を要求する
ACK確認応答番号が有効であることを示す
FIN送るデータがもうないことを示し、コネクションの終了を要求する
RSTコネクションを強制的に切断する
PSH受け取ったデータをすぐにアプリケーションへ渡すよう求める
URG緊急データが含まれていることを示す

ヘッダーの主なフィールド

送信元ポート番号、宛先ポート番号(各2バイト)、シーケンス番号、確認応答番号(各4バイト)、データオフセット、コントロールフラグ、ウィンドウサイズ、チェックサムなどからなり、オプションを除いた長さは20バイトである。

TCPを使う主なプロトコル

プロトコルポート番号
HTTP / HTTPS80 / 443
SMTP25
POP3 / IMAP4110 / 143
SSH22
FTP20(データ)、21(制御)
BGP179

コネクションの終了

終了は、双方がFINを送り合い、それぞれにACKを返す4回のやり取りで行うのが基本である。先にFINを送った側は、最後のACKを送った後、遅れて届くセグメントに備えてしばらくTIME-WAITの状態で待つ。

実際の試験ではここに出る!全24問

ネットワークスペシャリスト

午前Ⅱ
午後Ⅰ
午後Ⅱ

この用語が出てくる記事

↑