Transmission Control Protocol
作成 : 2002/10/27
Transmission Control Protocol
Transmission Control Protocolは、RFC793で定義されている。
Transmission Control Protocolヘッダフォーマット
Transmission Control Protocolヘッダフォーマットは下図を参照。
Source Port:16bits
送信元のポート番号。
Destination Port:16bits
送信先のポート番号。
Sequence Number:32bits
最初のデータオクテットのシーケンス番号。 SYNパケットではISN(Initial Sequence Number)を示し、最初のデータオクテットはISN+1になる。
Acknowledgement Number:32bits
ACKコントロールビットがセットされている場合、次に受信を期待するシーケンス番号を示す。 最後に受信したデータオクテットのシーケンス番号に、1を加えたもの。 接続が確立されると、常に設定される。
Data Offset:4bits
TCPヘッダ長(Optionを含む)で、単位は4octets。 TCPデータがはじまるか示す。
Reserved:6bits
将来のために予約されている。
Control Bits:6bits
コントロールビット。
Window:16bits
受信可能なデータオクテット数。 受信バッファの余裕がなくなると、Windowを小さくして相手に通知する。
Checksum:16bits
チェックサム。
Urgent Pointer:16bits
緊急ポインタの現在値??
Options:variable
オプションは8bits単位で指定する。
End of Option List:8bits
すべてのオプションリストの終わりを示す。
No-Operation:8bits
Maximum Segment Size:32bits
最大受信セグメントサイズ。 これが指定されると、送信側はこのサイズを使用して通信する。 このフィールドは、SYNパケットでのみ指定されなければならない。
Transmission Control Protocolを見る
「tcpdump -X」を実行すると、16進ダンプとASCII変換されたパケットをキャプチャすることができる。 赤い字で表示した部分が、TCPヘッダ。
# tcpdump -X host www.goo.ne.jp 192.168.X.X.1159 > www.goo.ne.jp.http: S 136122613:136122613(0) win 5840 <mss 1460,sackOK,timestamp 36720523 0,nop,wscale 0> (DF) [tos 0x10] 0x0000 4510 003c 5f7e 4000 4006 2dc7 c0a8 XXXX E..<_~@.@.-..... 0x0010 d296 1925 0487 0050 081d 10f5 0000 0000 ...%...P........ 0x0020 a002 16d0 142c 0000 0204 05b4 0402 080a .....,.......... 0x0030 0230 4f8b 0000 0000 0103 0300 .0O.........