Why ACKs are not delayed in 2.4?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

I have written an application that intensively sends and receives data from
socket. But when I have captured network traffic I have seen that empty ACK
(without data) is sent for every packet arrived. My application's response
time for queries is low and I am wondered why empty ACK was sent first and
data packet (that acknowledges the same was sent a little later). What about
"delayed ACKs"? What am I doing wrong?

Here is example of a telnet connection to web-server on the same host.

# Syn
20:12:49.115180 b.h.net.1028 > b.h.net.www: S [tcp sum ok] 3508780041:3508780041(0) win 32767 <mss 16396,sackOK,timestamp 912509 0,nop,wscale 0> (DF) [tos 0x10]  (ttl 64, id 20596, len 60)
# Syn + ACK
20:12:49.115248 b.h.net.www > b.h.net.1028: S [tcp sum ok] 3510633226:3510633226(0) ack 3508780042 win 32767 <mss 16396,sackOK,timestamp 912509 912509,nop,wscale 0> (DF) (ttl 64, id 0, len 60)
# ACK
20:12:49.115301 b.h.net.1028 > b.h.net.www: . [tcp sum ok] 1:1(0) ack 1 win 32767 <nop,nop,timestamp 912509 912509> (DF) [tos 0x10]  (ttl 64, id 20597, len 52)


# "GET /"
20:12:51.180634 b.h.net.1028 > b.h.net.www: P [tcp sum ok] 1:8(7) ack 1 win 32767 <nop,nop,timestamp 912715 912509> (DF) [tos 0x10]  (ttl 64, id 20598, len 59)

# ACK for "GET /"
20:12:51.180681 b.h.net.www > b.h.net.1028: . [tcp sum ok] 1:1(0) ack 8 win 32767 <nop,nop,timestamp 912715 912715> (DF) (ttl 64, id 61302, len 52)

# Web server response "<!DOCTYPE ..." + ACK for "GET /"
20:12:51.184314 b.h.net.www > b.h.net.1028: P 1:1457(1456) ack 8 win 32767 <nop,nop,timestamp 912716 912715> (DF) (ttl 64, id 61303, len 1508)

# ACK for "<!DOCTYPE ..."
20:12:51.184359 b.h.net.1028 > b.h.net.www: . [tcp sum ok] 8:8(0) ack 1457 win 32767 <nop,nop,timestamp 912716 912716> (DF) [tos 0x10]  (ttl 64, id 20599, len 52)


# Fin
20:12:51.185377 b.h.net.www > b.h.net.1028: F [tcp sum ok] 1457:1457(0) ack 8 win 32767 <nop,nop,timestamp 912716 912716> (DF) (ttl 64, id 61304, len 52)
# Fin + ACK for Fin
20:12:51.189326 b.h.net.1028 > b.h.net.www: F [tcp sum ok] 8:8(0) ack 1458 win 32767 <nop,nop,timestamp 912716 912716> (DF) [tos 0x10]  (ttl 64, id 20600, len 52)
# ACK for FIN
20:12:51.189364 b.h.net.www > b.h.net.1028: . [tcp sum ok] 1458:1458(0) ack 9 win 32767 <nop,nop,timestamp 912716 912716> (DF) (ttl 64, id 61305, len 52)

So, why empty ack for "GET /" is sent? The time difference between client
request and server response is only 0.00368 seconds. Why not to delay ACK?

Thanks!

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux