如何在使用IOCP时识别TCP回送?即我怎么能发现接收器没有收到,连接两端的TX/RX缓冲区是否满了,发送者应该停止发送更多的数据?如何识别Win IOCP下的推送?
2
A
回答
3
对于任何异步TCP发送操作,确定对等体正在接收数据的速率的方式是监视发送方的发送完成率。
我已经写了关于这个深入here。总之,当接收者的缓冲区填满并且TCP流量控制正在运行并且TCP窗口减少时,发送者不能发送导致发送者的TCP缓冲区填充的发送者。这意味着异步发送请求无法完成。如果您跟踪待处理的未完成发送请求的数量,您可以发现这种情况并限制发件人。
2
发生这种情况时,发送将无法完成。
+0
问题是即使tx缓冲区中仍有空间,第二次发送也是以异步方式完成的。那么,我怎样才能从“TCP推回”场景中扰乱“第二次发送”呢? – 2014-10-31 10:21:14
+1
您可以根据发送完成的速率来区分。如果缓冲区未满,则无法回推。一旦缓冲器满了,发送将以与缓冲器中的空间相同的速率完成,这将与接收器接收的速率相同。 – 2014-10-31 15:15:30
相关问题
- 1. 如何让UIActionsheet识别哪个按钮最近被推送?
- 2. 一个下推自动识别语言
- 3. 如何使用IOCP发送文件?
- 4. 识别网络上的iPhone OS并发送推送通知
- 5. 如何识别APNS生产列表中的开发推送令牌?
- 6. 下拉识别
- 7. 识别强制推送的冲突和后果
- 8. 如何识别ESC是否被按下?
- 9. 识别用户/为Ionic.io推送产生令牌
- 10. 从推送通知服务器识别注册ID
- 11. 是什么在urbanrairship丰富的推送和推送的区别。
- 12. 如何使用R识别推文中的网址
- 13. 如何识别twitter中的重复推文?
- 14. 我如何让zend识别推进ORM的路径
- 15. 如何识别列
- 16. 如何识别HTML5
- 17. 在win vista中识别安装的更新并赢得7?
- 18. reftex-citation如何识别\ subcaption?
- 19. 如何辨别语音识别器开始识别?
- 20. 浏览器消息服务器如何识别特定浏览器发送推送通知消息
- 21. 如何识别“坏”视图?
- 22. 如何识别哪个按钮被按下并发送到服务器?
- 23. git:如何查看更改,下一次推送将发送
- 24. “短信推送”和“WAP推送”有什么区别?
- 25. pagespeed(chrome)无法识别javascript推迟
- 26. 如何识别POST数据发送到PHP脚本的来源?
- 27. 如何让JQGrid识别服务器发送的错误?
- 28. 如何识别发送请求的JSP页面?
- 29. 如何识别人类发送的电子邮件?
- 30. 如何识别我们发送的消息
你为什么想知道?这不像你的缓冲区变满时发送失败。只需全油门发送。 – usr 2014-11-01 22:59:51
您可能想知道的一个原因是,TCP回送是TCP流量控制的有效形式,它不需要您的应用级协议中的协议级别支持。所以你可能需要知道,因为你的客户希望能够使用它。另外,如果你只是忽略回推并继续发送,那么你就会打开你的自我,遭受严重的拒绝服务攻击,这可能会在发送者中使用无法控制的非页面缓冲池内存量,并且这在某些情况下会导致崩溃盒子。请参阅我的答案中的链接,了解如何/为什么。 – 2014-11-03 16:11:34