前言前端
这一章,主要讲TCP协议算法
面向链接的运输:TCP缓存
TCP协议对于前端而言,是十分重要的。也看到不少漫画,第三人视角写这方面的内容。网络
- TCP是因特网运输层的面向链接的可靠的运输协议。
- 为何TCP被称为面向链接呢?一个应用进程能够开始向另外一个应用进程发送以前,这两个进程必需要先相互握手。(三次握手)
- 三次握手,A进程给B进程发出握手信号(1次),B进程回应A进程告知收到信号了(2次),A进程正式向B进程发送数据给B进程(3次)
- 四次挥手,A进程发起关闭信号给B进程(1次),B进程收到该报文段后,就发送一个确认报文(2次),再发送本身的终止报文给A进程(3次)。A进程对B进程的报文进行确认(四次)
- TCP的生命周期,运行在每台主机中的TCP协议在各类TCP状态之间变迁
- 拥塞控制方法,一:端到端拥塞控制 网络层没有为运输层拥塞控制提供显式支持,端系统必须经过对网络行为的观察(分组 丢失与时延)来推断,增长的往返是时延值做为网络拥塞成都增长的指示。二:网络辅助的拥塞控制。路由器向发送方提供关于网络中拥塞状态的显式反馈信息。
- TCP拥塞控制。TCP必须使用端到端拥塞控制
- TCP采用的方法是让每个发送法方所感知到的玩过拥塞程度来限制其能向链接发送流量的速率。
- 若是一个TCP发送方感知从它到目的地的路径上没有什么阻碍,则TCP发送方增长发送速率。有阻碍就减小发送速率
- 一个TCP发送方如何限制它向其链接发送流量的速率?
- 一个TCP发送方如何感知从它到目的地的路径上是否存在拥塞?
- 当发送方感知到端到端的拥塞时,采用的是什么算法来改改变其发送速率?
- TCP链接的每一端都是由一个接受缓存,一个发送缓存和几个变量组成
- 运行在发送方的TCP拥塞控制机制跟踪一个额外的变量,拥塞窗口(c w n d)。就是来控制发送速率的
- 经过调节cwnd,控制发送速率
- TCP发送的“丢包事件” 要么超时,要么收到接受方的冗余ACK .TCP链接经过(要么超时 或者收到三个冗余ACK)来是否拥塞
- TCP拥塞控制算法1⃣️慢启动2⃣️拥塞避免3⃣️快速恢复
- 慢启动和拥塞避免是TCP的强制部分
- 快速恢复是推荐部分
- 当一条CWND的只一般是初始值为MSS值 ,在慢启动状态下,CWND值以1个MSS开始并每当传输的报文被确认就增长1个MSS。TCP发送方对每一个确认增长MSS值,发送速率就翻番
- TCP发送速率起始慢,在慢启动阶段以指数增加
- 如何结束指数增加,第一种:遇到超时 丢包事件,CWND设置为1而且从新开始慢启动
- 第二种:当CWND值等于SSTRESH值(慢启动阀值),TCP转移到拥塞避免模式
- 若是检测到3个冗余ACK ,这时TCP转移到快速重传阶段
- 公平性
- 1,公平性和UDP 2,公平性和并行TCP链接
- 明确拥塞通告:网络辅助拥塞控制