

# 背景

[TCP技術入門](https://gihyo.jp/book/2019/978-4-297-10623-2)を読んで、TCPについて勉強しています。  
4.3章「プロトコルアナライザー「Wireshark」実践入門」に従って、FTP通信をWireSahrkでキャプチャしました。

# キャプチャしたFTP通信

## 環境

  * OS: ubuntu/xenial64
  * TCP輻輳制御アルゴリズム：`net.ipv4.tcp_congestion_control=reno`
  * IPアドレス： 
    * guest1: 192.168.33.10
    * guest2: 192.168.33.20

以下のVagrantfileを使って仮想マシンを起動しました。  
<https://github.com/neko9laboratories/tcp-
book/blob/master/wireshark/vagrant/Vagrantfile>

## 操作手順

  1. `vagrant ssh guest1`でguest1にログインする。
  2. WireSahrkを起動している状態で、以下のFTPコマンドを実行する。

[code]

    open 192.168.33.20
    user vagrant vagrant
    prompt
    put tempfile
    
[/code]

<https://github.com/neko9laboratories/tcp-
book/blob/master/wireshark/ftp_conf.txt>

# 質問

WireSharkのフィルタ条件を`tcp.analysis.duplicate_ack`にして、重複ACKの通信を確認したところ、送信側`192.168.33.10`は重複ACKを4回以上受け取っていました。  
[![FTP通信
重複ACKが4回以上](https://i.stack.imgur.com/kw8p1.png)](https://i.stack.imgur.com/kw8p1.png)

なぜ重複ACKを4回以上受け取っているのでしょうか？  
私は、下図のように（[パケットキャプチャの教科書](https://www.sbcr.jp/product/4797390711/)のサンプルデータ`tcp_duplicate_ack.pcapng`）、重複ACKを3回受け取ったら、Fast
Retransmissionが行われることを期待していました。  
[![サンプルデータ
tcp_duplicate_ack.pcapng](https://i.stack.imgur.com/Be8Rn.png)](https://i.stack.imgur.com/Be8Rn.png)

またwiresharkのフィルタ条件を`tcp.analysis.fast_retransmission`にしたころ、絞り込み結果は0件でした。  
なぜFast Retransmissionは行われないのでしょうか？

[TCP Retransmit・DupACK・Fast Retransmit
～トラブルシューティング時のキーワード～](https://troushoo.blog.fc2.com/blog-entry-111.html)
には、以下のように記載されていたので、もしかしたらOS設定の問題なのかもしれません。「重複ACK何回受け取ったらFast
Retransmissionを行う」という設定は、どこで確認できるのでしょうか？

> 補足：  
>  この「DupACKを複数回受け取る」の”複数回”の回数は、Windows Server 2003では、初期値は2です。  
>  また変更することも可能で、レジストリ値”TcpMaxDupAcks”で設定もできます。  
>  詳細は、Microsoft社のサイト「TcpMaxDupAcks」をご確認ください。  
>  (Vista以降のOSについてのMicrosoftからの情報は見つけることができませんでした。)

# 補足情報

参考情報としてTCP Stream Graphsを添付します。  
[![Sequence
Numbers](https://i.stack.imgur.com/NTrSO.png)](https://i.stack.imgur.com/NTrSO.png)  
[![Window
Scaling](https://i.stack.imgur.com/24Cvi.png)](https://i.stack.imgur.com/24Cvi.png)

# 参考にしたサイト

<https://troushoo.blog.fc2.com/blog-entry-111.html>  
<https://milestone-of-se.nesuke.com/knowhow/wireshark/wireshark-tcp-error/>


CC BY-SA 4.0
2022-01-15T15:07:42.243
85715
2022-01-15T15:07:42.243
19524
question
tcp wireshark
WireSharkでTCP通信をキャプチャしたところ、重複ACKを4回以上受け取っていて、Fast Retransmissionが行われていませんでした。なぜでしょうか？