TCP可靠传输

特点

  1. 面向连接(可靠的连接建立和连接关闭)
  2. 点对点通信(一对一)
  3. 可靠的
  4. 面向字节流(把上层协议的数据当成字节传输)
  5. 全双工通信

采用的技术

  1. 排序技术(处理分组重复和乱序)
  2. 重传技术(处理分组丢失)
  3. 避免分组重复的技术
  4. 流量控制(机器间的速度不一致)
  5. 拥塞控制(网络延迟)

1.排序技术

分组
为每一个分组附加一个序号

接收方保存

  • 当前按顺序收到的最后一个分组的序号
  • 乱序到达的分组列表

接收方执行

  • 如果分组是所期待的下一个分组,递交给上一层协议,并检查乱序分组列表中有没有可以继续递交的分组;
  • 如果是乱序到达的分组,添加到乱序分组列表
  • 如果是重复分组,丢弃
2.重传技术

发送方发送分组的同时启动一个计时器,如果在计时器超时之前,还未收到来自接收方的ACK确认报文,发送方将发送该分组的副本并再次启动计时器

3.避免分组重复的技术

问题:较早的连接中的分组可能在未来的连接中被接收
解决:用唯一的ID标记每一次会话(连接),并且保证在很长一段时间内(如几小时)都不重复使用相同的ID

4.流量控制

问题:速度快的计算机发送太多数据造成速度慢的计算机过载
解决:滑动窗口。接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度

知乎·TCP协议的滑动窗口具体是怎样控制流量的?
ACK报文包含两个非常重要的信息:
1. 接收方期望接收到的下一字节的序号n。

  • 该n代表接收方已经接收到了前n-1字节数据,此时如果接收方收到第n+1字节数据而不是第n字节数据,接收方是不会发送序号为n+2的ACK的。
  • 举个例子,假如接收端收到1-1024字节,它会发送一个确认号为1025的ACK,但是接下来收到的是2049-3072,它是不会发送确认号为3072的ACK,而依旧发送1025的ACK。

2. 接收方当前的窗口大小m。

  • 如此发送方在接收到ACK包含的这两个数据后就可以计算出还可以发送多少字节的数据给对方。
  • 假定当前发送方已发送到第x字节,则可以发送的字节数就是y=m-(x-n)。这就是滑动窗口控制流量的基本原理。

假设发送方和接收方同意滑动窗口的大小为5个分组。

来源:https://www.webfalse.com/article/7651254.html

(1)发送方提取数据填充这5个分组,并发送分组的副本;
(2)此时最多可以发送5个分组,发送1个分组后,继续发送剩余4个分组;
(3)只有在收到来自接收方的ACK确认报文之后,发送方才会丢弃该分组。此处收到第一个分组的ACK,可以丢弃第一个分组,窗口中剩下4个分组,还能再发送一个分组。

5.拥塞控制

TCP利用分组延迟的变化来作为对网络拥塞的测量,通过减小重传数据的速率来应对网络拥塞。实际上,TCP不是直接改变传输速率,而是通过减小窗口的大小,来降低速率。

拥塞窗口
接收方通告一个接收窗口大小(接收缓冲区的大小),发送方可以在接收到ACK之前填满接收窗口

*窗口分为滑动窗口和拥塞窗口
拓展链接:TCP的滑动窗口与拥塞窗口
知乎·既然有了滑动窗口,为什么还要有等同于滑动窗口的拥塞窗口?

慢开始
(开始一个新连接)
发送方先发送一个报文,如果一个ACK确认报文到达,TCP就把发送的数据量加倍,即发送两个报文。如果对应的两个ACK也到达了,就发送四个报文,以此类推,直到TCP正在发送的数据量等于接收窗口大小的一半为止。之后数据量改为线性增长,每次加一。
(出现报文丢失时)
如果发送方超过一定时间没有收到ACK确认报文,说明报文丢失,出现网络拥塞,此时将窗口大小设置为1,重新进行慢开始算法。

参考链接:TCP协议概述

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

推荐阅读更多精彩内容