TCP是有发送缓冲区和接受缓冲区的
结论:
- 所有发送和接收的数据都是需要经过TCP的缓冲区
应用层: send 123 abc
传输层:[发送缓冲区] : 123abc
对于传输层的TCP协议,并不是按照应用层递交数据的顺序(应用层包序)来向网络层递交数 据的;
确认应答机制
- 发送方发送一个数据,接收方进行确认
- 要完成一个完整的数据传输,网络链路当中需要有两个数据包
一个是:发送的数据包
一个是:确认应答数据包
滑动窗口机制
- 允许发送方在发送数据的时候,可 以发送给多个数据包, .而暂时不要确认应答
- SYN的时候,客户端告诉 了服务端,自己的接收能力
- SYN+ACK数据包,服务端告诉 了客户端,自己的接收能力
- 在TCP报头当中的每一个窗口,都是接收方在告诉发送方,自己的接收能力
- 发送方通过接收方的接收能力,动态调整发送窗口的大小(一次能够发送给到网络上面的字节数量)
丢包问题:
- 1. 发送方发送的数据丢失掉了
注意: 对于发送方丢包之后,假设,接收方什么时候都不干, 发送方也会进行重传,触发超时重传机制;我们说的快重传,是在发送方还没有触发超时重传机制之前,依据就是收到三个重复的确认序号,则重传接收方期望的丢失的数据。
- 2. 接受方回复的ACK包丢失了
注意: 如果发送方接受到比未确认序号更加大的确认序号的时候,就会认为没有收到的小的确认序号所对应的TCP报文,已经被对端收到了;
原理:
- 如果消息发送方没有收到小序号的tcp报文的确认数据包,但是能收到大的确认数据包,
- 说明对端一定收到了 小的序号的tcp报文,否则消息接收方不会发送大的确认数据包;
结论:
- 如果消息发送方接收到了更大的确认序号,但是还没有收到雄安的确定序号,就会忽略;不用重传。