TCP セグメントヘッダーをパースする
TCP ヘッダーには送信元/宛先ポート、シーケンス番号、フラグ、ウィンドウサイズが含まれます。ネットワーク分析のために TCP ヘッダーをデコードする方法を学びましょう。
- 1
TCP ヘッダーは 20〜60 バイトです。フィールド:送信元ポート(2 バイト)、宛先ポート(2 バイト)、シーケンス番号(4)、確認応答番号(4)、データオフセット + フラグ(2)、ウィンドウサイズ(2)、チェックサム(2)、緊急ポインター(2)、オプション(0〜40)。フラグ:SYN、ACK、FIN、RST、PSH、URG、ECE、CWR。
- 2 HEX デコーダー →
TCP ヘッダーの 16 進表現をデコードします。最初の 4 バイトは送信元ポートと宛先ポートです。例えば、0x0050 はポート 80(HTTP)です。各フィールドをオフセットとサイズに従ってデコードします。
- 3 バイナリデコーダー →
フラグのバイトを 2 進数でデコードします。各ビットがフラグを表します:FIN(0x01)、SYN(0x02)、RST(0x04)、PSH(0x08)、ACK(0x10)、URG(0x20)。SYN+ACK = 0x12 = 2 進数で 00010010 です。これで接続状態がわかります。
よくある質問
- TCP フラグは何を意味しますか?
- SYN:シーケンス番号の同期(接続開始)。ACK:確認応答番号が有効。FIN:終了(正常なクローズ)。RST:リセット(接続の中断)。PSH:データを即座にプッシュ。URG:緊急ポインターが有効。フラグの組み合わせが接続フェーズを示します(ハンドシェイクでは SYN、SYN-ACK、ACK)。
- TCP ウィンドウサイズとは何ですか?
- 受信者が確認応答なしで受け入れられるバイト数を示します。フロー制御です。ウィンドウが大きいほどスループットが上がります(ACK 待ちが減る)。ウィンドウスケーリング(RFC 7323)は、オプションのスケール係数により 65535 を超えるウィンドウを可能にします。
このタスクを解決するワークフロー
Base16 から Base32 へ変換
Hex をデコードし、DNS セーフな表現のために Base32 として再エンコードする。 パイプライン
Binary から Base32 へ変換
Binary をデコードし、コンパクトなテキストのために Base32 として再エンコードする。 パイプライン
Binary から Hex へ変換
Binary(base-2)文字列をバイト値にデコードし、Hex として再エンコードする。 パイプライン
Hex エンコード後デコードのラウンドトリップ検証
テキストを Hex にエンコードし、デコードしてラウンドトリップが元のデータを保持することを検証する。 パイプライン
Hex から Base32 へ変換
Hex をデコードし、DNS セーフな使用のために Base32 として再エンコードする。 パイプライン
Hex から Base64 へ変換
Hex 文字列を生バイトにデコードし、コンパクトな転送のために Base64 として再エンコードする。 パイプライン