设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1539|回复: 0
收起左侧

[其他] TCP为啥分包&怎样重组

[复制链接]
发表于 2013-5-11 16:35:39 | 显示全部楼层 |阅读模式
       TCP/IP 协议栈中定义了MSS, 为的是提高网络的性能,因为如果让IP层分包的话,丢包后的重发没法控制,需要重传整个TCP包(浪费了网络资源)    MSS就是这个协商的结果,不能人为修改,这个MSS的大小是MTU减去TCP头,从TCPDUMP结果中我们可以看到我们的TCP协商的MSS都在1.3~1.4K
    所以一定需要我们自己来重新组装TCP包的 (发送一个分拆一个TCP包对方收到也是一个分拆的TCP包,如果看底层还要复杂一些)
    为了减少这种情况我们可以禁止NAGLE算法,设置一个TCP_NODELAY,但是只能说这个也只能减缓这个问题,因为其一,这个根本解决不了问题,其二,底层的SK_BUFF还是可能链接在一起的(发送速度不是无限的)è 如果不了解SK_BUFF建议看一下
    所以如果一定要用TCP的话我们还是用模式来解决问题吧,The worker processor thread model就可以(有PPT不会上传,就这样吧)
    或者就是用UDP包,因为UDP是用IP层来分包的,所以对于UDP层来说发一个大包,收到就是一个大包,但是IP层丢了包也不管,这样就需要应用层多一点校验,不过现在网络UDP丢包率已经很低了,所以也不是不可以考虑。
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-23 12:15 , Processed in 0.062769 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表