下位層(TCP ヘッダ)




OSI参照モデル(4層)


TCP ヘッダ

◇ 送信元ポート

ネットワークと通信する際の自身のポート番号

◇ 宛先ポート

ネットワークと通信する際の相手のポート番号

◇ シーケンス番号 / 確認応答番号

■ シーケンス番号(Seq)
 セグメントの正しい順番を通知
■ 確認応答番号(Ack)
 
次に受信するシーケンス番号を通知

 ◇Seq / Ack 処理の仕組み

■ 3Way Handshake

■ データ通信

■ コネクション切断

◇ ヘッダ長

TCPヘッダの長さ
※別名:データオフセット

◇ コントロールフラグ

◆ Reserved
 将来のための用意により、現在は未使用 (常時:0)

◆ Accurate ECN
 正確なCENフィードバックを提供 (0:提供しない、1:提供する)

◆ Congestion window Reduced
 受信者へ輻輳制御ウィンドウの縮小を通知 (0:通知しない、1:通知する)
 ※輻輳制御ウィンドウ:送信中のデータ量を調整するパラメータ

◆ ECN-Echo
 ネットワーク機器がアクセス集中しかけていることを送信側に通知
 ※IP headerの「CE」が1で検知した場合

◆ Urgent
 緊急処理データが含まれる (0:含まれない、1:含まれる)
 
◆ Acknowledgment
 確認応答番号のフィールドが有効(0:無効、1:有効)

◆ Push
 受信データをアプリケーションに渡す (0:渡さない、1:渡す)

◆ Reset
  コネクション強制終了 (0:強制終了しない、1:強制終了する)

◆ Syn
 コネクション開始要求 (0:要求しない、1:要求する)

◆ Fin
 コネクション終了要求 (0:要求しない、1:要求する)


◇ ウィンドウサイズ

受信側のACKを待たずに、一度に受信できるデータ量を指定
アプリケーションがサイズを指定し、パケット送受信中に変更する
※最大値:約64KB (( 2Byteの16乗=65,536Byte) ÷ 1024Byte=64KB)

◇ チェックサム

「TCPヘッダ + 疑似 IPヘッダ + ペイロード」を合わせた値

◆ 送信元IPアドレス
 自身の機器に割り当てたIPv4アドレス

◆ 宛先IPアドレス
 通信相手の機器に割り当てられたIPv4アドレス

◆ Zero
 常時0

◆ プロトコル
 プロトコル識別
 例)6:TCP、17:UDP

◆ TCP長
 「TCPヘッダ + ペイロード」の長さ


◇ 緊急ポイント

緊急処理開始位置の情報が入る
※コントロールフラグのUrgentが「1」のみに利用

◇ オプション

TCPヘッダに付与する情報

【主なオプション説明】

◆ No-Operation
 オプション間の区切り文字として利用し、4バイト単位に揃うように配置

◆ Maximum segment size (MSS)
 1回のTCPパケットで送信される最大ペイロード量
 ※3Way Handshakeに利用

◆ Window scale
 TCPフィールドのWINDOWの拡張
 ※範囲:0~14
  最小値:64KB ((2Byteの16乗=65,536Byte) ÷ 1024Byte=64KB)
  最大値:1GB ((2Byteの30乗=1,073,741,824Byte) ÷ 1,073,741,824Byte)

◆ SACK permitted
 Selective ACKの利用を通知
 ※3Way Handshakeに利用

◆ SACK
 3Way Handshake時に「SACK permitted」が示されたホスト同士の通信時に、送信側に欠けたデータだけを再送

◆ Timestamps
 宛先にパケット送信から応答が返ってくるまでの時間
 ※3Way Handshake時に「Time Stamp」を付与した場合、コネクション中いつでもRTT値を計算できる


 ◇ MSSとMTUの範囲

◇ パディング

32ビット単位になるように「0」で調整