TCP
の履歴(No.4)
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
履歴一覧
差分
を表示
現在との差分
を表示
ソース
を表示
TCP
へ行く。
1 (2021-11-14 (日) 21:02:42)
2 (2021-11-15 (月) 09:55:54)
3 (2021-12-09 (木) 11:32:48)
4 (2021-12-11 (土) 12:25:20)
5 (2022-02-12 (土) 22:52:02)
6 (2022-02-13 (日) 15:35:09)
7 (2022-04-13 (水) 17:04:11)
8 (2022-09-02 (金) 08:08:32)
9 (2022-09-04 (日) 15:49:43)
TCP とは
†
↑
名称
†
Transmission Control Protocol
↑
概要
†
トランスポート層(
OSI参照モデル
、
TCP/IPモデル
)の通信プロトコル
コネクション型
通信の信頼性が高い
送信元
IPアドレス
の偽装が難しい(可能ではある)
セグメント
TCPでやりとりするデータの単位(
PDU
)
↑
TCPの仕組み
†
↑
TCPコネクション
†
通信の開始時に通信路を確立し、終了時に通信路を解放する
3つのフェーズで行われる
コネクション確立フェーズ
通信フェーズ
コネクション切断フェーズ
↑
コネクション確立フェーズ
†
3wayハンドシェイク
1. →(SYN)
2. ←(ACK + SYN)
3. →(ACK)
※SYN:コネクション確立要求
※ACK:肯定応答
↑
コネクション切断フェーズ
†
1. →(FIN + ACK)
2. ←(ACK)
3. ←(FIN + ACK)
4. →(ACK)
↑
TCP のデータ構造
†
TCPヘッダとペイロードで構成される
TCPヘッダ(20バイト~)
ペイロード(アプリケーション層のデータ)
↑
TCPヘッダ
†
1〜32bit
送信元ポート番号(16)
あて先ポート番号(16)
33〜64bit
シーケンス番号(32)
65〜96bit
確認応答番号(ACK番号)(32)
97〜128bit
データオフセット(4)
予約(未使用)(6)
コントロールフラグ(コードビット、コントロールビット)(6)
ウィンドウサイズ(16)
129〜160bit
チェックサム(16)
緊急ポインタ(16)
161〜192bit
オプション(n)
パディング(32-n)
↑
シーケンス番号
†
送信データの連番)
↑
確認応答番号(ACK番号)
†
受信データの連番
↑
コントロールフラグ(コードビット)
†
ビット位置
コードビット
意味
1
URG
urgent
2
ACK
acknowledgement。SYNパケットの場合"0"、SYNパケット以外の場合"1"
3
PSH
push
4
RST
reset。TCP接続を強制終了する場合"1"
5
SYN
synchronize。SYNパケットの場合"1"、SYNパケット以外の場合"0"
6
FIN
finish。TCP接続を終了する場合"1"
↑
SYNクッキー
†
TCP通信の正当性を確認するために、SYN + ACKパケットのシーケンス番号に埋め込むデータのこと
TCPヘッダをハッシュ化した値などが使われる
↑
TCPの脆弱性
†
発信元IPアドレスの偽装が難しい
発信元IPアドレスが偽装されていても、コネクションの確立が必要ない攻撃に対しては弱い
SYNフラッド攻撃
接続要求(SYN)に対する応答(SYN/ACK)を攻撃に悪用される
反射・増幅型
DDoS攻撃
初期シーケンス番号を推測した
セッション・ハイジャック
TCP ACKスキャン
「
ポートスキャン
」参照
↑
関連用語
†
Keep-Alive
TCP/IP
TFO
(TCPファストオープン)
SPDY
DCTCP
(データセンターTCP)
セグメント
ハーフオープン
UDP