Witam.

W pracy mamy program który obsługuje urządzenia mobilne przez Wi-Fi
Niestety co jakiś czas program na urządzeniach zawiesza się na jakiś czas, tak jak by czekał na odpowiedź serwera.
Chcąc znaleźć źródło problemu (aby ustalić czy to wina sieci czy software) wrzuciłem tcpdump na serwerze aplikacji.
Analizując wynik zauważyłem że przy poprawnej (szybkiej) odpowiedzi wygląda to tak:

10:17:27.278033 IP (tos 0x0, ttl 128, id 5041, offset 0, flags [DF], proto TCP (6), length 279)
    192.168.1.1.51426 > appserver.webcache: Flags [P.], cksum 0xbb5d (correct), seq 1912:2151, ack 2617, win 32926, length 239
10:17:27.293380 IP (tos 0x0, ttl 64, id 60733, offset 0, flags [DF], proto TCP (6), length 367)
    appserver.webcache > 192.168.1.1.51426: Flags [P.], cksum 0x85b4 (incorrect -> 0xf239), seq 2617:2944, ack 2151, win 65392, length 327
10:17:27.496620 IP (tos 0x0, ttl 128, id 5042, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.1.1.51426 > appserver.webcache: Flags [.], cksum 0x1e61 (correct), seq 2151, ack 2944, win 32599, length 0

Jeżeli dobrze rozumiem to:
10:17:27.278033 - urządzenie mobilne wysyła "zapytanie" do serwera
tutaj serwer przetwarza żądanie (odczyt z bazy danych itp)
10:17:27.293380 - serwer odpowiada na żądanie
10:17:27.496620 - urządzenie mobilne potwierdza otrzymanie odpowiedzi
Tu pojawia się pierwsze pytanie: czy dobrze rozumiem ten zapis?

Przy "opóźnionym" działaniu log wygląda tak:

10:41:40.482244 IP (tos 0x0, ttl 128, id 5531, offset 0, flags [DF], proto TCP (6), length 287)
    192.168.1.1.51488 > appserver.webcache: Flags [P.], cksum 0x27d3 (correct), seq 34269:34516, ack 45143, win 32599, length 247
10:41:40.521750 IP (tos 0x0, ttl 64, id 8795, offset 0, flags [DF], proto TCP (6), length 40)
    appserver.webcache > 192.168.1.1.51488: Flags [.], cksum 0x846d (incorrect -> 0x3960), seq 45143, ack 34516, win 65392, length 0
10:42:10.075826 IP (tos 0x0, ttl 64, id 8796, offset 0, flags [DF], proto TCP (6), length 367)
    appserver.webcache > 192.168.1.1.51488: Flags [P.], cksum 0x85b4 (incorrect -> 0x8c0b), seq 45143:45470, ack 34516, win 65392, length 327
10:42:10.281326 IP (tos 0x0, ttl 128, id 5532, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.1.1.51488 > appserver.webcache: Flags [.], cksum 0xb979 (correct), seq 34516, ack 45470, win 32272, length 0

I znów jeśli dobrze myślę:
10:41:40.482244 - urządzenie mobilne wysyła "zapytanie" do serwera
10:41:40.521750 - serwer potwierdza otrzymanie żądania
tutaj serwer przetwarza żądanie (odczyt z bazy danych itp) i z jakiegoś powodu trwa to zdecydowanie dłużej niż powinno
10:42:10.075826 - serwer odpowiada na żądanie
10:42:10.281326 - urządzenie mobilne potwierdza otrzymanie odpowiedzi

Pytanie czy dobrze rozumiem te wyniki?

Z góry dziękuję za pomoc.
Pozdrawiam