(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Wireshark】[TCP Keep-Alive]/[TCP Keep-Alive ACK]というBad TCPパケット

スポンサーリンク

事象

以下パケットがWiresharkで観測され

...,"TCP","55","[TCP Keep-Alive] XX → YY [ACK] Seq=1 Ack=1 Win=63803 Len=1"
...,"TCP","66","[TCP Keep-Alive ACK] YY → XX [ACK] Seq=1 Ack=2 Win=63951 Len=0 SLE=1 SRE=2"

BadTCPとして扱われている。

[Coloring Rule Name: Bad TCP]
[Coloring Rule String: tcp.analysis.flags && !tcp.analysis.window_update]
環境情報
  • Wireshark 3.2.2

原因

シーケンス番号や確認応答番号の値が変化していない場合にBad TCPとしてフィルターされることがある。

以下、補足です。

補足

[TCP Keep-Alive]が起きる条件はセグメントサイズが0または1で、次に予期されていたシーケンス番号より小さい場合に同フィルター(Bad TCP)に引っかかるようです。
確かに中のパケットを確認しましたが、直前のパケットのSeqが1にも関わらず再度1となっていました。

Internet Protocol Version 4, Src: XX, Dst: YY
Transmission Control Protocol, Src Port: XX, Dst Port: YY, Seq: 1, Ack: 1, Len: 1
...
    [TCP Segment Len: 1]
    Sequence number: 1    (relative sequence number)
    [Next sequence number: 2    (relative sequence number)]
    Acknowledgment number: 1    (relative ack number)
...

[TCP Keep-Alive ACK]は、セグメントサイズが0で確認応答番号に変化がない場合に同フィルター(Bad TCP)に引っかかるようです。
これも同じくひとつ前のパケットは正常に扱われていましたが後続が同じパケットであるためBad TCPとして扱われています。

Internet Protocol Version 4, Src: YY, Dst: XX
Transmission Control Protocol, Src Port: YY, Dst Port: XX, Seq: 1, Ack: 2, Len: 0
...
    [TCP Segment Len: 0]
    Sequence number: 1    (relative sequence number)
    [Next sequence number: 1    (relative sequence number)]
    Acknowledgment number: 2    (relative ack number)
...

以上、同様の事象が発生している方の参考になれば幸いです。