春招修仙系列 —— TCP协议

TCP协议主要关注的问题:

  • 连接维护
  • 顺序问题
  • 丢包问题
  • 流量控制
  • 拥塞控制

连接维护:

通过三次握手、四次挥手

顺序问题:

为了保证数据包的顺序性,每一个包都有一个ID,在建立连接的时候,会商定其实的ID是什么,然后按照ID一个个发送。

丢包问题:

为了保证不丢包,对于发送的包都要进行应答,但是这个应答不是一个一个来的,而是会应答某个之前的ID,表示都收到了,这种模式称为累计应答

如何解决顺序问题和丢包问题:

如果发生了丢包问题,一种方法就是超时重传。对每一个发送了的但是没ACK的包,都设有一个定时器,超过了一定的时间,就进行重新尝试,时间的评估依赖于自适应重传算法,会算出一个往返时间,因为网络状况的不断变化,所以计算出的超时时间也要进行的调整。TCP的超时重传策略是,超时间隔加倍。每当遇到一次超时重传的时候,都会将下一次超时时间间隔设为前线值得两倍,两次超时,就说明网络环境差,不宜反复发送。

快速重重传得机制:

当接收方收到一个序号大于下一个所期望得报文端时,就检测到了数据流中得一个间隔,于是发送三个冗余得ACK,客户端接收到后,就在定时器过期之间,重传丢失的报文段。
例如接收方发现6 8 9 都已经接收到了,但是7没来,那肯定就是丢了,于是发送三个6的ACK,要求下一个是7,客户端收到3个ACK,就会发现7的确丢了,不等超时,马上重发

流量控制问题:

在对于包的确认的时候,同时会携带一个窗口的大小,TCP协议会在数据的发送端和接收端形成缓存,将数据包记录下来,根据数据接收方的处理能力,不断的调整窗口大小,窗口会不断的向右进行滑动,处理新的数据包,所以这个窗口也叫做滑动窗口
数据发送端的缓存:发送已接收,发送未接收,未发送可发送,未发送不可发送
数据接收端的缓存:接收已处理,接收未处理,不可接收

拥塞控制问题:

通过拥塞窗口来解决网络中的拥塞问题,首先会进行指数级的包的发送,如果发生包丢失或者超时重传的现象,再降低包的发送数据,也可以使用快速重传法,来避免网络卡顿。这种方式叫作慢启动。

猜你喜欢

转载自blog.csdn.net/Kirito19970409/article/details/86537781
今日推荐