TCP

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

トランスポート層のプロトコルの1つ。通信の前に接続を確立し、届かなかったデータの再送や順序の並べ替えを行って、データを確実に届ける。

イマシルちゃんの解説

大事な書類を送るときは、書留で送って「届きました」って返事をもらうよね。
届かなかったら、もう一度送り直す。

TCPは、ネットワークの世界のそんな丁寧な配達係なんだ!
少し手間はかかるけど、Webページやメールみたいに、1文字でも欠けたら困るデータを確実に届けてくれるよ。

より深い解説

定義

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の状態で待つ。

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

この用語が出てくる記事

↑