TCP可靠传输与拥塞控制

1.TCP的可靠传输

  • 确认、超时重传、报文排序

1.1 TCP如何保证可靠传输

发送方没发送一个报文,都会收到来自接收方对该报文的确认,以确保数据被接收端接收;同时没发一个报文会启用一个超时重传机制,若在规定时间内发送方未接收到来自接收方的确认报文,那么就会认为该报文在传输过程中丢失或在网络中拥塞,将重新发送这个数据;接收方将收到的报文数据重新排序,保证数据有序。

1.2 几个基本概念

  • 发送缓存:发送方将可以发送给接收方的数据暂时存储在发送缓存中
  • 发送窗口:已发送未确认的数据+待发送的数据。发送窗口时发送缓存的一部分
  • 接收缓存:存放发送方传输的未得到确认的数据以及未按序到达的数据
  • 接收窗口(通知窗口)—rwnd:接收方能够接收数据的大小
  • 拥塞窗口—cwnd:拥塞窗口反映的是当前网络的拥塞程度

2.TCP的流量控制

  • 利用滑动窗口进行流量控制

2.1 流量控制原理

一般而言,发送窗口越大,传输数据速度越快,但是这很容易造成网络拥塞,因此需要动态的改变发送窗口大小,发送方发送窗口大小不应该大于接收方接收窗口的大小。流量控制的作用就是让发送方发送数据的速度不要太快,要让接收方来得及接收所有的数据。

2.2 发送窗口如何改变

接收端发送的确认报文中会将自己接收窗口的大小填入报文头部窗口大小的位置中,发送方接收到确认后,根据这个数据改变发送端窗口大小。若发送方的窗口大小为0,此时,接收端有收到报文,也就是说,此时接收窗口大小不再是0,发送端继续发送数据。
考虑这样的问题

2.3 流量控制和拥塞控制的关系

流量控制是点对点的控制,是端到端的问题,旨在改变发送端发送窗口的大小,控制发送数据的速率,以使接收端能够来得及接受所有的数据。
而拥塞控制是为了防止太多的数据传输在网络中,拥塞控制是一个全局性的控制,必须保证当前网络能够承受当前的数据负载。若发送方在一定时间内一直未接收到来自接收端的确认信息,就会认为网络出现拥塞,但并不知道产生拥塞的原因。

3.拥塞控制算法

  • 慢开始和拥塞避免、快重传和快恢复

3.1慢开始算法和拥塞避免算法

  • 慢开始算法
    慢开始首先设置cwnd=1,发送方每接收到来自接收方的确认报文就会将拥塞窗口增加1。每一次传输过程中,比如,发送发送4个报文段后,接收到来自接收方发送来的四个接收报文,将会对发送方拥塞窗口增加4,那么每一次传输轮回,慢开始的过程会将发送方的拥塞窗口增加1倍,即拥塞窗口呈指数级增长。
  • 拥塞避免算法
    为防止拥塞窗口增长过大引起网络拥塞,设置一个满开始门限ssthresh,若当前拥塞窗口值大于满开始门限值时,减缓拥塞窗口增长速率,从指数级增长改为线性增长,每个传输轮次仅增长1,若网络出现拥塞(即发送方没有按时接收到来自接收方的确认报文),就将慢开始门限值设置为当前拥塞窗口大小的一半,同时令拥塞窗口大小为1。

3.2 AIMD算法

  • “乘法减小”和“加法增大”(AIMD)算法
    拥塞避免阶段,每一个传输轮次,将拥塞窗口值加1,增长速率比较慢,但能够有效防止网络出现拥塞。若网络出现拥塞就将发送发慢开始门限值减半,若网络频繁出现拥塞,那么满开始门限值的下降速率很快,这将极大程度的减小发送方发送到网络中的数据

3.3 快重传和快恢复

  • 快重传
    在接收方收到乱序的报文时,立即发出一个重复确认(即上一次有序的报文21),在接下来收到的报文中只要不是有序的报文21,都将立即重复发出一个确认报文,以通知发送方报文未按序到达。快重传规定,发送方若连续收到3个重复的报文,应立即重新发送对方未收到的数据,而不必等待超时重传时间的到达。
  • 快恢复
    若发送方连续收到来自接收端的3个重复确认,可知道此时网络并没有发生拥塞,但是为了防止拥塞,执行“乘法减小”操作,将慢开始门限值减半,但不执行慢开始操作,即不将拥塞窗口大小设置为1,而是将拥塞窗口cwnd的值设置为ssthresh的一半,然后开始执行拥塞避免算法(“加法增大”)
    采用快恢复算法时,慢开始算法只在建立连接和网络出现超时时使用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容