我正在开发一台高性能的TCP服务器,当我使用TCP客户端泵出高流量时,我看到服务器的处理速度不够快。经过仔细检查,我在TCP服务器上看到了“增量时间”中的尖峰。而且,我看到服务器发送一个ACK,0.8秒后发送PSH,ACK给相同的seqno。我在pcap中多次看到这个模式。专家可以评论为什么服务器发送一个ACK,然后是一个PSH,ACK之间有一个延迟?
发布于 2020-10-09 23:36:06
简化ACK和PSH的含义
ACK将始终存在,它只是简单地通知客户机服务器最后接收的字节是什么。PSH告诉客户机/服务器将字节推送到应用层(字节形成完整的消息)。您习惯的通常情况大致如下:
PSH,ACK的数据包。现在,想象一下这些情景:
ACK (数据包中没有任何数据)来确认接收,如果应用程序稍后决定发送什么,它将与PSH,ACK一起发送。- the first packets will not have `PSH` flag, and will only have the `ACK` flag
- the the last packet will have the flags `PSH,ACK`, to inform the end of the message.https://stackoverflow.com/questions/64094996
复制相似问题