为什么我的浏览器发送两个具有相同属性的数据包除了push?

时间:2012-07-22 01:01:33

标签: java tcp network-programming packet jpcap

我正在编写一个java(jpcap)应用程序,用于区分哪个响应数据包是针对哪个请求数据包的。我突然遇到这两个http数据包,我的浏览器发送的完全相同(序号,确认号,...),除了其中一个有推旗和不同的识别号。我想知道为什么浏览器会发送这两个?是阿贾克斯吗?

1342824149:911270 /192.168.2.#->/174.143.213.# protocol(6) priority(0)  hop(128)  offset(0) ident(14123) TCP 11303 > 80 seq(2473817076) win(17040) ack 3940549542 

1342824149:911797 /192.168.2.#->/174.143.213.# protocol(6) priority(0)  hop(128)  offset(0) ident(14124) TCP 11303 > 80 seq(2473817076) win(17040) ack 3940549542  P

更重要的问题是,这两个数据包是否有单独的响应?或者只有一个回复?或同样的回应?会有什么样的回应?

2 个答案:

答案 0 :(得分:1)

您的浏览器只是说“连接到端口Y上的IP地址X”和“发送这些字节”。它是内核中的TCP / IP堆栈,它负责实际创建数据包并确保它们到达目的地。在这种情况下,第一个数据包未被目标确认,因此内核中的TCP代码再次发送它。

答案 1 :(得分:0)

如果它们具有相同的TCP序列号,则它们是相同的数据:第二个是由于非确认而重试。除了可能在路由器中之外,PUSH标志实际上没有做任何事情。不同的Wireshark号码只是因为它们是不同的实际接收事件:它不在数据包中。