滑动窗口的介绍
滑动窗口是tcp协议中的一个重要概念,滑动窗口是字节为单位,而tcp头部的序列化和确认号也是以字节为单位的,滑动窗口里是含有可以传输的字节的数量(可以传输不是已经传输),而滑动窗口的大小是由接受数据的那一方来进行控制(通过发送报文的形式,tcp头部有一个字段就是滑动窗口的大小),这也是tcp流量控制的基础。
可靠传输机制是什么
可靠传输机制就是使得报文在发送结束以后,接收方接收到的报文信息是准确的,完整的,没有数据包的乱序,重复,丢失,错误的问题,因为TCP协议的下一层是IP协议,而IP协议是一种无连接的不可靠协议,所以本人也认为TCP协议就是专门弥补IP协议的不可靠而产生的。
可靠传输机制的实现
本人认为可靠传输机制的实现主要靠三个技术:确认应答机制,超时重传机制,校验和机制
三个技术中,由于校验和机制比较容易理解,就不多废话了,主要还是讲解确认应答机制和超时重传机制
确认应答机制
确认应答机制主要是靠TCP报头中的两个字段实现,一个是确认号,另一个是序列号,确认号表示我作为接收方想要收到的下一条报文的字节号数,比如我100-200之间的字节没有收到,而收到了200-300之间的字节号,那么我下一次发送给发送方的确认号依旧是100,这就是确认号,只有当我收到100-200的报文以后,我就会将确认号改为301,而序列号就是我发送的这个报文的起始字节号,接收方就是根据这个序列号来判断报文是否乱序,是否重复,是否缺失
超时重传机制
首先是TCP协议中存在一个计数器,这个计时器是基于网络往返时间(RTT,Round-Trip Time)的估计值设定的。RTT是指数据包从发送方发出,到达接收方,然后确认应答返回发送方所需的时间。确认应答(ACK):接收方在收到数据包后,会发送一个ACK回发送方,确认数据包已成功接收。超时:如果在计时器到期之前,发送方没有收到对应的ACK,它会认为数据包可能在传输过程中丢失或延迟,从而触发重传机制。发送方就会重新发送未被接受的数据包
下面是一个例子介绍