你可能没有细究过的TCP/IP

封面图片

概述

作为互联网时代伟大发明的TCP/IP技术可以说对当今时代产生了深刻的影响。经过近一个月的学习摸索,基本清楚了TCP/IP的面貌。由于TCP/IP在OS中位于内核态,很多细节其实用户无法感知,所以自己对于TCP/IP会有一些疑惑。关于其中几个点经过查阅一些书籍、博客并结合自己的一些理解,在此整理精炼成帖。

注: 本文原载于 My Personal Blog:CodeSheep · 程序羊


疑惑1 — 关于拥塞

疑惑一:无论是满启动还是拥塞避免阶段,拥塞窗口都在增加,理论上一定会碰到拥塞点,为什么平时感觉不到拥塞呢?

看了很多书和文献以后可能的解答如下:

  • 1、OS中对接收窗口的最大设定多年未动,如windows在不启用“TCP Window Option”情况下,最大接收窗口仅64KB。然而网络进步,很多环境的拥塞点远在64kb以上,即发送窗口永远触碰不到拥塞点

  • 2、很多应用场景是交互式小数据交换,如聊天等,不会有拥塞的可能

  • 3、有些应用在传输数据时采用同步方式,可能需要的窗口非常小(如采用了同步方式的NFS写操作,每发一个写请求就停下来等回复,而一个写请求可能仅有4kb)

  • 4、即便偶尔拥塞,持续时间也不足以长到能感受出来,除非抓包看包交换细节


疑惑2 — 关于超时重传

疑惑二: 关于超时重传后的ssthresh设置问题的争议

  • 1、Richard Stevens在《TCP/IP详解》中把临界窗口值定为上次发生拥塞时的发送窗口的一半

  • 2、RFC5681则认为应是发生拥塞时未被确认的数据量的1/2(又称FlightSize),且不小于2MSS

  • 3、Westwood/Westwood+算法则这样认为:先推算出有多少包已被送达到接收方(可根据收方回应的ACK来推算),从而精确地估算发生拥塞时的带宽,最后再依据带宽来确认新的拥塞窗口

  • 4、Vegas算法则这样认为:引入全新的概念,摒弃之前的在丢包后才调节拥塞窗口的做法。其通过监控网络状态来调整发包速度,实现“真正的拥塞避免”。当网络良好时,RTT较稳定,此时可以增加拥塞窗口;当网络繁忙时,RTT增加,此时减小拥塞窗口

  • 5、Compound算法这样认为:同时维持两个拥塞窗口,一个类似于Vegas,另一个类似于RFC5681,真正起作用的是两者之和(Win7上其默认关闭)

  • 6、BIC算法/CUBIC算法
    分别是linux2.6.18和linux 2.6.19所采用,目前尚未研究


关于TCP/IP的几点精炼总结:

  • (1)当无拥塞时,发送窗口越大,性能越好。∴在带宽没有限制的情况下,应尽量增加接受窗口,比如启用Scale Option

  • (2)若经常发生拥塞,则限制发送窗口反而可以提高性能,∵即便万分之一的重传对性能的影响都非常大。很多OS上可通过限制接收窗口的方法来↓发送窗口

  • (3)超时重传对于性能影响最大,∵RTO时间内未传输任何数据,而Cwnd会被设成1MSS,应尽量避免

  • (4)快速重传对性能影响小一些,∵无等待时间,且Cwnd减幅不大

  • (5)SACK和NewReno有利于增加重传效率,增加传输性能

  • (6)丢包对极小文件的影响比打文件严重。深层原因是因为读写一个小文件需要的包数很少,∴丢包时往往凑不满三个Dup ACK,只能等待超时重传;而大文件有较大可能触发快速重传

后记

由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,034评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 2,387评论 0 2
  • 传输层-TCP, TCP头部结构 ,TCP序列号和确认号详解 TCP主要解决下面的三个问题 1.数据的可靠传输...
    抓兔子的猫阅读 4,498评论 1 46
  • 六、TCP可靠传输的实现 首先介绍以字节为单位的滑动窗口。为了讲述可靠传输原理的方便,假定数据传输只在一个方向进行...
    dmmy大印阅读 1,639评论 0 1