title: What causes these duplicate TCP ACKs be sent in linux kernel
body: <p>I captured these packets with tcpdump on Android device(linux 3.4.39),  these packets are in a HTTP GET Stream:</p>
  
  <blockquote>
    <p>1  385.447794 Server -> Client: SEQ 12517, LEN 100<br>
    2  385.498345 Client -> Server: SEQ 3086, LEN 0, ACK 12617<br>
    3  385.497836 Server -> Client: SEQ 12617, LEN 1348<br>
    4  385.498644 Client -> Server: [DUP ACK] SEQ 3086, LEN 0, ACK 12617<br>
    5  385.498735 Server -> Client: SEQ 13965, LEN 619<br>
    6  385.498978 Client -> Server: [Dup ACK] SEQ 3086, LEN 0, ACK 12617<br>
    7  385.718843 Server -> Client: [Retrans] SEQ 13965, LEN 619<br>
    8  385.719280 Client -> Server: [DUP ACK] SEQ 3086, LEN 0, ACK 12617<br>
    9  385.733230 Server -> Client: [Retrans] SEQ 12617, LEN 1348<br>
    10 385.733602 Client -> Server: SEQ 3086, LEN 0, ACK 14584<br>
    11 385.909921 Server -> Client: [Retrans] SEQ 12617, LEN 1348<br>
    12 385.910449 Client -> Server: [DUP ACK][Window Upd.] SEQ 3086, LEN 0, ACK 14584<br>
    13 388.031541 Client -> Server: SEQ 832, LEN 0, ACK 4192, FIN<br>
    14 388.031681 Client -> Server: SEQ 3086, LEN 0, ACK 14584, FIN  </p>
  </blockquote>
  
  <p>Client is my device.</p>
  
  <p><strong>What causes these duplicate TCP ACKs be sent by client?</strong></p>
  
  <p>UPDATE:<br>
  <strong>Why client send previous DUP ACK(#4) after receiving subsequent TCP packet(#3)?</strong></p>
  
  <p>Thanks.</p>