为什么PUSH数据包总是设置ACK标志?为什么不直接推?
经过3路握手后,客户端发送的第一个包应该只有推送。这个ACK是从哪里来的?
19:14:58.013699 IP 10.201.98.71.59454 > 10.201.208.15.ssh:标志S,seq 1794644890,win 29200,选项mss 1460,sackOK,TS val 18876032 ecr 0,nop,wscale 7,长度0 19:14:58.014613 IP 10.201.208.15.ssh > 10.201.98.71.59454:标志S.,seq 176446139,ack 1794644891,win 29200,options mss 1460,nop,nop,sackOK,nop,wscale 7,长度0 19:14:58.014651 IP 10.201.98.71.59454 > 10.201.208.15.ssh:标志..。,ack 1,win 229,长度0
19:14:58.019541 IP 10.201.98.71.59454 > 10.201.208.15.ssh:旗..。,ack 391,win 237,长度0
发布于 2017-09-14 10:05:50
要使TCP正确工作,必须确认每个数据包。如果ACK丢失了,最终在另一个西德上的重传定时器会超时,数据包会被憎恨。在tcpdump中,第四个数据包的ACK让对方知道tcpdump的第三个数据包已经收到。"ACK 1“让对方知道”我在等待#1,之前收到的一切“。
不管有没有PUSH标志,只要数据包被发送到和发送,您都应该始终看到ACK。不发送ACK意味着“自从我向您发送了最后一封信以来,我还没有看到您的新包”。
https://serverfault.com/questions/873541
复制相似问题