0

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

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

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

4

2 回答 2

1

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

于 2012-07-22T17:12:06.453 回答
0

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

于 2012-07-22T01:56:37.273 回答