免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

TCP/IP实现刨根究底大讨论【活动结束】 [复制链接]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
191 [报告]
发表于 2011-04-06 15:23 |只看该作者
1、判断进入拥塞状态的方法,比如是连续收到三个相同的ack。
离开拥塞状态具体是什么状态。我猜是指拥塞窗口大于ssthresh后,不知道对不对?

3个重复 ack 是进入快速重传/快速恢复的条件。其它拥塞状态有相应的进入条件。详见1楼中提供的样章。
离开拥塞状态的条件是进入拥塞状态时所发送的段都被确认。进入拥塞状态时会记录发送的最后一个段,这个可以详细看看 struct tcp_sock 里的变量。
2、在bictcp中,主要有5个函数。...我的理解是 每收到一个ack, 会调用一个 bictcp_acked

bictcp_acked 是回调函数(ca_ops->pkts_acked)。在 tcp_clean_rtx_queue() 中调用。调用的条件是收到了确认了数据或 SYN 包的 ack。

详细过程阅读代码。

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
192 [报告]
发表于 2011-04-06 17:13 |只看该作者
回复 191# ynchnluiti


   在sack的情况下,sack选项没有内容,就说明接收端收到的数据没有乱序,不乱序就肯定不拥塞。我要是没有记错的话,只要是ack确认值增加,tcp_cwnd_cnt这个值就会变化,这个是判断是否增加拥塞窗口的阈值。

  在不开启sack的情况下,判断乱序会更困难,尤其是在网络严重拥塞的情况下,soso建议各位无论是在客户端还是在服务器端,开启sack都是很有必要的。

  说到内核拥塞控制模块的实现,可以看一下我最近写的一篇文章,或许会对大家有帮助:  http://blogold.chinaunix.net/u3/93004/showart_2526618.html

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
193 [报告]
发表于 2011-04-07 12:56 |只看该作者
请问网络拥塞后,节点计算机怎样感知网络拥塞了

评分

参与人数 1可用积分 +2 收起 理由
Godbach + 2 欢迎提问

查看全部评分

论坛徽章:
0
194 [报告]
发表于 2011-04-07 16:34 |只看该作者
回复 193# aaaaa5aa

基本上做为端到端的方案,能够做为感知依据的就是三条:
乱序
时延抖动
重传超时

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
195 [报告]
发表于 2011-04-07 20:48 |只看该作者
我有几个比较菜的问题,忘两位高手赐教:
(1)我采用TCP连接,MSS的值为536,发送的包的大小为3500字节,接收到包的大小是1448+1448+604,这是为何?为何分包是这样分的??
(2)如果是以下这种通信:一个局域网内的某用户A向另一个局域网某用户B发送数据,对局域网来说,A和B的地址可能都是192.168.x.x,那么在我们用socket编程TCP的时候,源地址和目的地址怎么设置?

评分

参与人数 1可用积分 +2 收起 理由
Godbach + 2 欢迎提问

查看全部评分

论坛徽章:
0
196 [报告]
发表于 2011-04-08 10:42 |只看该作者
精通 Linux TCP/IP协议栈的相关实现,精通内核及网络开发,精通 iptables 的开发和使用。

我笑了

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
197 [报告]
发表于 2011-04-08 12:25 |只看该作者
回复 195# whyliyi


    1 确认你的 MSS 设置成功了
    2 不能直接访问别的局域网内的机器

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
198 [报告]
发表于 2011-04-08 16:35 |只看该作者
本帖最后由 EasyIOCP 于 2011-04-08 16:38 编辑

提个问题,tcp里的带外数据实际中还有什么作用?感觉用处不是很大。有实际的项目用到带外数据了么?
还有PSH标记位,现在的内核是不是已经都忽略PSH标记了

评分

参与人数 1可用积分 +2 收起 理由
Godbach + 2 欢迎提问

查看全部评分

论坛徽章:
0
199 [报告]
发表于 2011-04-09 03:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
200 [报告]
发表于 2011-04-09 03:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP