免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4698 | 回复: 10
打印 上一主题 下一主题

TCP应答问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-26 17:00 |只看该作者 |倒序浏览
自己实现的TCP协议,现在遇到一个问题:
TCP应答既可以单独发一帧应答帧,又可以和应用层数据一起发送,那在解析TCP报头的时候是不知道应用层内容的,也就是说不知道呆会有没有应用层数据需要发送,那么假如每收到一帧TCP数据,都单独发一帧应答帧的话,会造成流量的浪费和响应时间变长,但是如果解析了应用层数据之后再决定发不发应答帧的话,就担心应用层如果处理不当会造成没有发送TCP应答,从而导致TCP连接失效,请问有什么好的方法处理吗?
多谢了

论坛徽章:
0
2 [报告]
发表于 2009-06-26 18:41 |只看该作者
带时延的ACK, 比如收到数据后先看有没有应用层数据,有的话就一起发出去
没有就等待200ms,仍然没有应用层数据,就单独发ACK

论坛徽章:
0
3 [报告]
发表于 2009-06-26 20:24 |只看该作者
原帖由 caijimin 于 2009-6-26 18:41 发表
带时延的ACK, 比如收到数据后先看有没有应用层数据,有的话就一起发出去
没有就等待200ms,仍然没有应用层数据,就单独发ACK


这样做的确可以,但是什么依据吗?
有哪些系统是这么实现的呢?
但是这么做需要增加一个定时器,有没有其他方法呢?

论坛徽章:
0
4 [报告]
发表于 2009-06-26 21:18 |只看该作者
你怎么不能知道应用层有没有数据要发送,没有发送缓冲区吗?直接检查缓冲有没有数据不就行了

论坛徽章:
0
5 [报告]
发表于 2009-06-26 23:16 |只看该作者
原帖由 enigma1983 于 2009-6-26 21:18 发表
你怎么不能知道应用层有没有数据要发送,没有发送缓冲区吗?直接检查缓冲有没有数据不就行了


假如缓冲区没有数据呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2009-06-26 23:20 |只看该作者
这个就叫做延迟发送的 ACK。

论坛徽章:
0
7 [报告]
发表于 2009-06-27 06:52 |只看该作者

回复 #5 lz_fine 的帖子

假如缓冲区没有数据,那你发送什么

论坛徽章:
0
8 [报告]
发表于 2009-06-27 10:17 |只看该作者
原帖由 flw 于 2009-6-26 23:20 发表
这个就叫做延迟发送的 ACK。


现有的操作系统TCP应答都是这么实现的吗?

论坛徽章:
0
9 [报告]
发表于 2009-06-27 10:18 |只看该作者
原帖由 aaaaa5aa 于 2009-6-27 06:52 发表
假如缓冲区没有数据,那你发送什么


我的意思是刚收到一帧TCP数据的时候,这时候缓冲区没有数据,等一会有没有数据需要发送,这时候是不知道的啊

论坛徽章:
0
10 [报告]
发表于 2009-06-29 23:13 |只看该作者
原帖由 lz_fine 于 2009-6-26 20:24 发表


这样做的确可以,但是什么依据吗?
有哪些系统是这么实现的呢?
但是这么做需要增加一个定时器,有没有其他方法呢?


你自己实现tcp是什么依据呢?当然是协议了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP