TCP

一、TCP链接

1、TCP被称为面向连接的,这是因为两个应用在发送数据之前,必须要先相互“握手”,即双发初始化与TCP连接相关的许多TCP状态变量。这种TCP连接仅保留在两个通信端系统的TCP程序中,中间的网络层(路由器和链路层交换机)不会维持TCP连接状态,他们只看到了数据报
2、TCP连接是点对点的,不存在1对多,或者多对多
3、通过三次握手建立连接后,客户进程通过socket传递数据流,TCP接受数据并将数据放到该连接的发送缓存里(发送缓存是三次握手期间设置的)接下来TCP会不时地从发送缓存中取出一块数据,并将数据传递到网络层。TCP可从缓存中去取出并放到报文段中的数据数量受限于最大报文段长度(Maximum Segment Size)MSS,MSS指在报文段李应用层数据的最大长度,不包括首部的TCP报文段最大长度
4、TCP为应用层数据配上一个TCP首部,形成多个TCP报文段,这些报文段下发到网络层,网络层将其分别封装到网络层IP数据报中,将IP数据报发送到网络中,TCP的接收端 接受到一个报文段后,该报文段的数据就放到TCP连接的接受缓存中,应用层从缓存中去读数据流


image.png

二、TCP报文段结构

image.png

1、源端口号和目的端口号用于多路复用/分解来自活送到上层应用的数据,同UDP一样,TCP首部也有校验和字段
2、序号:TCP为每个字节编号,如果一个文件有500000字节,MSS为1000字节,数据流的首字节编号为0,第二个报文段分配序号1000,第三个2000,每个序号填到相应TCP报文段首部的序号字段中
3、确认号:TCP是双全工的,主机A向主机B放数据时也可接收主机B的数据,主机A中的确认号是主机A期望从主机B接收到的报文段的序号
4、接受窗口:用于流量控制,指示接收方愿意接受的字节数量
5、首部长度:定义了TCP首部长度
6、选项字段:用于发送方与接收方鞋厂最大报文段长度(MSS)或者在高速网络环境下用作窗口调节因子时使用通常该字段为空
7、标志字段:ACK用于指示确认字段中的值时有效的

3、TCP可靠数据传输概述

1、确认合理的超时时间:大于RTT
1)RTT是变化的,测试多个从段发出到收到ACK的时间,取平均值得到 EstimatedRTT
2)安全边界:如果estimatedRTT变化大,安全边界值设置较大,如果变化不大,值设置小
3)超时时间 = EstimatedRTT + 安全边界
2、发送方做的事件
1)从应用层收到数据,创建报文段,序列号是segment的第一个字节编号;开启计时器;设置超时时间
2)超时:仅仅重传引起超时的segment,然后重启计时器
3)收到ACK:如果确认此前未收到的segment,更新滑动窗口,如果窗口中还有未被确认的分租,重启计时器
3、快速重传机制
根据流水线机制,发送方会发送多个分组,如果某个分组丢失,会引起接收方发送多个重复的ACK,告知发送方要发送丢失的分组
如果发送方收到同一个数据的3个ACK,则假定该数据之后的 段已经丢失了,在定时器超时钱即进行重传

四、流量控制

1、思想:接收方的应用层读取缓存的数据 比 发送方发送速度慢,会导致接受方的TCP链接缓存溢出,数据丢失,所以要控制发送速度
2、实现:receiver通过segment首部接收窗口字段将空闲的缓存空间告诉sender,sender限制已经发送但还未收到ACK的数据不超过receiver空闲的缓存空间


image.png

五、TCP连接管理

1、在数据传输前建立连接 “三次握手”
目的:初始化TCP变量,创建缓存和流量控制信息(接收窗口)
过程:1)客户端发送请求:发送一个特殊的报文段,,不包含数据,首部的标志位SYN = 1,因此该报文段叫SYN报文段,随机一个初始编号client_isn,将编号放到SYN报文段首部的序号中
2)服务器接收请求;1、分配TCP连接缓存和变量,并发送允许连接的确认报文段, 该报文段也不包含数据, 首部的SYN = 1,初始化一个服务器序号serve_isn,首部的确认号字段=client_isn+1(MSS为单位),该允许连接的报文叫SYNACK报文段
3)客户端确认允许连接: 收到SYNACK报文段后,客户端给TCP连接分配缓存和变量, 给服务器发送确认报文段;发,序号 = 接收方SYN报文段的确认号client_isn + 1,确认号 = serve_isn + 1


image.png

2、断开连接4次握手


image.png

3、客户端的生命周期
image.png

4、服务器的生命周期
image.png

六、拥塞控制

1、定义:太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理
2、表现:分组丢失(路由器缓存溢出)
分组延迟过大(在路由器缓存中排队)
3、代价:分租丢失需要重传,重启计时器,造成资源浪费,并且该分组上游传输能力全部浪费掉,白传输了
控制方法
4、控制方法
1)、端对端拥塞控制
网络层不需要显式的提供支持,端系统通过观察loss,delay等
网络行为判断是否发生拥塞,TCP采取这种方法
2)网络辅助的拥塞控制
路由器向发送方显式地反馈网络拥塞信息,简单的拥塞指示(1bit):SNA,DECbit, TCP/IP ECN, ATM),指示发送方应该采取何种速率

六、拥塞控制的基本原理

1、如何感知网络拥塞
timeout或者3个重复ACK, 发生拥塞后,客户端降低速率
2、如何合理地调整发送速率
1)加性增,乘性减:逐渐的增加发送速率,谨慎探测可用带宽,发送loss后,将速率减半
2)慢启动:SS:初始速率很慢,指数性增长,
threshold变量 = 发送堵塞时,堵塞窗口值得1/2
3个重复ACK:拥塞窗口减少到一半,然后线性增长
timeout:拥塞窗口直接设置为1,然后指数增长,达到threshold后再线性增长指示发送方应该采取何种速率
指示发送方应该采取何种速率RTTRTT

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

推荐阅读更多精彩内容