学习目标:
-
目录
学习目标:
学习内容:
TCP协议
七层结构
END..........
问题:TCP/IP 的四层协议
问题:网络的七层结构及其作用
问题:协议名称是什么?
TELNET---远程登陆系统
HTTP---超文本传输协议
HTTPS----超文本传输安全协议
FTP---文件传输协议
SMTP ---电子邮件传输
DNS---域名系统
DHCP---动态主机配置协议
POP3---邮件接收协议
END..........
问题:TCP选项有哪些?
TCP可靠性(确认机制是TCP保障可靠性的核心)
排序机制---MSS,MTU
确认机制
累积确认机制
SACK机制---选择确认机制
问题:如何提高网络利用率
延迟确认应答机制
捎带应答
重传机制
超时间隔加倍机制
快速重传机制
问题:说说TCP 流量控制?---”窗口值“是TCP实现流控的核心参数,真正的流量控制是由窗口关闭机制实现的
问题.1:说说TCP 滑动窗口
问题.2:说说TCP 滑动窗口
窗口关闭
窗口扩大因子
TCP的拥塞控制机制
拥塞
慢启动---增加一倍MSS的大小,超时,上一次门限值的一半
拥塞避免---只增加一个MSS,窗口大小≥门限值
快速恢复---三次冗余ACK
学习时间:
学习产出:
学习内容:
TCP协议
- 是一种面向连接的可靠传输协议。
面向连接:指的是数据传输之前,收发双方需要先建立一条逻辑通路。
无面向连接:指的是数据可以自由传输,无需建立逻辑通路。
TCP是在不可靠的IP层之上,实现可靠的数据传输能力。数据有序、无丢失、不重复
- TCP提供全双工通信。
发送缓存 :
- 存放发送应用程序传输给发送方TCP准备发送的数据。
- 存放TCP已发送但是尚未收到确认的数据。
接收缓存 :
- 按序到达的数据
- 按序到达,但未被应用程序接收的数据
- TCP是面向字节流的。
四元组:源IP、源端口、目IP、目端口。四元组是用来建立一个完整的TCP连接。
套接字:IP+端口
七层结构
网络的七层结构及其作用
自上而下是:
应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用
表示层(数据):主要解决用户信息的语法表示问题,如加密解密
会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证 用户登录便是由会话层完成的
传输层(段):实现网络不同主机上用户进程之间的数据通信,可靠 与不可靠的传输,传输层的错误检测,流量控制等
网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的 传输---分组转发,路由寻址
数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正
物理层(比特流):设备之间比特流的传输,物理接口,电气特性等
END..........
问题:TCP/IP 的四层协议
————应用层,传输层,网际层 ,网络接口层
问题:网络的七层结构及其作用
问题:协议名称是什么?
TELNET---远程登陆系统
HTTP---超文本传输协议
HTTPS----超文本传输安全协议
FTP---文件传输协议
SMTP ---电子邮件传输
DNS---域名系统
DHCP---动态主机配置协议
POP3---邮件接收协议
END..........
问题:TCP选项有哪些?
TCP可靠性(确认机制是TCP保障可靠性的核心)
确认、重传、排序、流控。
- 排序-->确认
- 累积确认机制---(TCP的确认)
- SACK机制---选择确认机制(协商)
- 延迟确认应答机制
排序机制---MSS,MTU
最大字节数由MSS控制。该参数是需要在TCP连接握手的过程中,通过前两次SYN报文段来进行参数 协商。
如果双方的MSS数值不同,则选择数值较小的作为传输标准。
MSS受到MTU的限制。
MTU:最大传输单元,指的是数据链路层在封装成帧时所允许携带的最大数据量,在以太网当中, MTU数值为1500字节。
MSS:数据段中携带的数据字节数。
MSS===MTU-IP首部-TCP首部
通过序列号字段,保证分段的有序性。将根据序列号的大小,将乱序的报文段进行重组。
确认机制
是TCP保障可靠性的核心点。
TCP协议保证对方能够收到本端发送的数据段的方式,就是让对方回复一个确认报文段。这是确认 机制的做法。
确认报文是唯一一种不需要被确认的数据段信息
累积确认机制
TCP的确认是累积确认机制,正确接收失序的报文段是不会被接收方逐个确认的。因此,发送方在
重传的时候,需要将冗余ACK报文及之后的报文段都重新发送一遍。----导致资源浪费。
SACK机制---选择确认机制
TCP在可选项字段中,添加了一个变量。该变量中携带的就是自己已经收到的数据信息
选择确认机制,不是所有运行TCP协议的设备都支持的。该机制会在TCP三次握手的前两次SYN报文中进行协商。
问题:如何提高网络利用率
延迟确认应答机制
收到数据以后不立即返回确认报文,而是延迟一段时间。
- 在没有收到2*MSS的数据为止,不做确认应答。
- 其他情况,最大延迟0.5秒发送确认应答。
捎带应答
TCP的确认应答和回执数据可以通过一个数据包进行发送。
延迟确认机制和捎带应答一般共同使用
确认报文丢失不会触发重传机制---窗口关闭,死锁
重传机制
- 超时间隔加倍机制---(RTT/RTO)
- 快速重传机制---(失序报文,以数据包为驱动)
RTT/RTO
超时重传----当超过一定时间未收到确认报文,则触发重传机制。
超时重传的判断时间依据RTT(往返时间)参数来判断。RTO被称为超时重传时间。
RTT---指的是发送端将数据发出后,到他接收到对端反馈的确认报文之间的这段时间。
RTO取值应该略大于RTT,但是也不能太大。RTT并非是固定数值,他是动态变化的数值。
超时间隔加倍机制
超时间隔加倍机制。当连续多次未收到确认报文,设备会认为是网络拥塞过大,将重传时间加倍,
因为如果按照原本的重传时间发送报文,很可能造成网络拥塞的加剧。
快速重传机制
在TCP中,发送方可以通过接收方的反馈,在超时时间到达前,意识到数据包丢失的现象,并进行
重传。这种情况一般出现在接收端收到一个失序报文的情况下。
快速重传机制不是因为RTO时间到达而触发,这种重传机制是以数据包为驱动的一种重传机制。
当接收方意识到自己所期望的报文段丢失,服务器不能调取失序报文,并且不能确认这些报文信
息。
因为TCP协议无法直接发送一个否认确认报文(没有办法直接发送一个数据报文段,告诉对端自己
哪个报文没有收到),所以,TCP将采用冗余ACK的方式来完成缺失报文通告。
问题:说说TCP 流量控制?---”窗口值“是TCP实现流控的核心参数,真正的流量控制是由窗口关闭机制实现的
————回答:
问题:说说TCP 流量控制?
流量控制是为了控制发送方发送速率,保证接收方来得及接收。
流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小
从而影响发送方的发送速率。将窗 口字段设置为 0,则发送方不能发送数据。
实际上,为了避免此问题的产生,发送端主机会时不时的发送一个叫做窗口探测的数据段,此数据段仅 包含一个字节来获取最新的窗口大小信息。
TCP的流量控制机制
是属于TCP的传输效率问题。
问题.1:说说TCP 滑动窗口
————回答: + .2
TCP头部中的”窗口值“是TCP实现流控的核心参数。
窗口的大小是可以指定的,该参数的大小指的是无需等待确认应答,而可以继续发送数据包的最大量。
窗口的大小,其实体现的就是接收缓存区的大小。
TCP要求发送方依据对方的接收窗口(rwnd)来控制数据的发送量。
最初,TCP的接口窗口===接收缓存区大小。接口窗口会随着时间的增长而动态变化。
问题.2:说说TCP 滑动窗口
问题:说说TCP 滑动窗口
窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中 的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送 并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确 认之后,就知道这个字节之前的所有字节都已经被接收。
窗口关闭
窗口的大小是接收端根据自己的缓存空间的剩余量来决定的一个动态变化的数值,那么这个剩余量就有归0的可能性。也就代表此时接收方所有缓存空间均已占用并且没能及时处理里面的资源。
所以,当接收方反馈窗口值为0时,那其实就是在通知发送方,别再发送数据,处理不过来。
该机制存在风险:接收方通过确认ACK报文来通知发送方自己的窗口大小。理论上,如果接收方将自己的缓存里的数据清空后,将反馈一个窗口值非0的报文来通知对端,可以继续发送数据了。但是如果这个非0的ACK报文在重传过程中丢失。----会引发风险,因为确认报文丢失不会触发重传机制。所以,客户端依然处于窗口关闭状态,不会发送数据,在等待服务器的响应。而服务器也在等待客户端发送数据。此时,两者进入到死锁状态。
解决方式:客户端周期性发送窗口探测报文,该报文只包含TCP首部信息。通过触发TCP确认机制,来让服务端发送确认报文,从而告知客户端,此时的窗口大小。打破死锁现象。
窗口大小仅仅是实现了将TCP数据传输的效率提高(不需要确认);但是并没有看到所谓的流量控
制,而真正的流量控制是由窗口关闭机制实现的。
窗口扩大因子
TCP选项字段中的窗口扩大因子,可以解决首部中窗口值过小的问题。因为首部中窗口值大小仅为16bit,最大值为65536。
窗口扩大因子占据3字节大小。取值仅为0-14。是用来将TCP的窗口的值左移的位数,使得原本的窗口值加倍。
窗口扩大因子,只能出现在同步报文段中,否则将被忽略。
流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。
TCP的拥塞控制机制
流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。
拥塞控制算法--->慢启动,拥塞避免,快速恢复。
- 慢启动---增加一倍MSS的大小,超时,上一次门限值的一半
- 拥塞避免---只增加一个MSS,窗口大小≥门限值
- 快速恢复---三次冗余ACK
假设,最开始传输数据时,慢启动门限为16
1、通过慢启动算法,逐步增加窗口大小
2、当窗口大小≥门限值,则切换为拥塞避免算法
3、当网络中出现拥塞情况后,因为确认报文超时而判断的拥塞--->被称为快重传
3.1、此时将慢启动门限值设定为上一次门限值的一半,此时为8
3.2、将窗口大小设定为1
4、此时重新启动慢启动算法,重复之前过程
5、如果拥塞是因为三次冗余ACK而判断--->快恢复
5.1、将慢启动门限值设定为上一次门限值的一半
5.2、将窗口大小设定为此时的门限值,直接开始使用拥塞避免算法进行扩大窗口
发送方,发出未收到确认的报文的字节数,必须小于或等于拥塞窗口和接收窗口的最小值。
拥塞
中间链路的处理能力--->拥塞控制机制
- 网络中对资源需求量超过了资源的可用量的情况,被称为拥塞。
- 如果出现了拥塞情况。--->分组丢失。重传--->网络的拥塞情况加剧。
TCP如何判断此时网络环境出现拥塞
TCP将连接中出现的丢包行为,视为拥塞的表现。
- 一种是数据包确认超时。
- 收到来自接收方发送的三个冗余ACK报文。
自计时。--->通过收到的确认报文来增加拥塞窗口
(TCP如何来控制数据的发送量
拥塞窗口--->跟接收窗口一样,都可以对发送的字节数大小进行限制。)
自计时:拥塞窗口的数值是依靠TCP拥塞控制算法得出。TCP是在保证能够支持的最大传输效率的情况下,来保证没有拥塞发生。
慢启动---增加一倍MSS的大小,超时,上一次门限值的一半
慢启动--->通常在开始传输数据时,拥塞窗口会被设置的很小。一般等于一个MSS数值。即一次只能发送一个数据报文段。
每收到一个新的ACK确认报文,就会增加一倍MSS的大小。
TCP会设定一个慢启动门限来评判。评判是否要停止慢启动的机制。
当拥塞窗口<门限,继续使用慢启动算法
当拥塞窗口>门限,此时将慢启动算法切换为拥塞避免算法。
当拥塞窗口=门限,两者均可使用。
拥塞避免---只增加一个MSS,窗口大小≥门限值
在一个RTT时间线内,拥塞窗口只增加一个MSS。
拥塞避免算法,不是说直接避免拥塞,而是通过降低窗口的增大速率而使得网络不容易出现拥塞。
快速恢复---三次冗余ACK
如果网络中没有发生拥塞,那么拥塞窗口就会无时无刻的增长下去。
但是如果出现了拥塞,那么这个增长必须停止。
学习时间:
学习时间为学习时间
学习产出:
- 技术笔记 1遍
- 有错误请指出,作者会及时改正