计算机网络基础学习笔记分享

TCP可靠性传输TCP是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。流量控制发送方不能无脑的发数据给接收方,要考虑接收方处理能力。如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。为了解决这种现象发生, TCP 提供-种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。TCP通过使用一个接收窗口(receive window)的变量来提供流量控制。接收窗口会给发送方
摘要由CSDN通过智能技术生成

TCP可靠性传输

TCP是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传的。

ae2833edb93e4d86b414614a4affb927.png

流量控制

发送方不能无脑的发数据给接收方,要考虑接收方处理能力。
如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。
为了解决这种现象发生, TCP 提供一种机制可以让[发送方]根据[接收方]的实际接收能力控制发送的数据量,这就是所谓的流量控制。
TCP通过使用一个接收窗口(receive window)的变量来提供流量控制。接收窗口会给发送方一个指示到底还有多少可用的缓存空间。发送端会根据接收端的实际接受能力来控制发送的数据量。

接收端主机向发送端主机通知自己可以接收数据的大小,发送端会发送不超过这个限度的数据,这个大小限度就是窗口大小,还记得TCP的首部么,有一个接收窗口,字段用于流量控制。它用于指示接收方能够愿意接收的字节数量。

发送端主机会定期发送一个窗口探测包,这个包用于探测接收端主机是否还能够接受数据,当接收端的缓冲区一旦面临数据溢出的风险时,窗口大小的值也随之被设置为一个更小的值通知发送端,从而控制数据发送量。

流量示意图

 a73511f7b41f4720bfd6d71e13920943.png

拥塞控制

前面的流量控制是避免[发送方]的数据填满[接收方]的缓存,但是并不知道网络的中发生了什么。
一般来说,计算机网络都处在一个共享的环境。因此也有可能会因为其他主机之间的通信使得网络拥堵。
在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时TCP就会重传数据,但是一一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断地放大...
TCP 不能忽略网络上发生的事,它被设计成一个无私的协议, 当网络发送拥塞时,TCP会自我牺牲,降低发送的数据量。
于是,就有了拥塞控制,控制的目的就是避免[发送方]的数据填满整个网络。
为了在[发送方]调节所要发送数据的量,定义了一个叫做[拥塞窗口]的概念。

2a23fc3a8cd8428d9074846ebbf77f7a.png

拥塞窗口cwnd是发送方维护的一个的状态变量,它会根据网络的拥塞程度动态变化的。
我们在前面提到过发送窗口swnd和接收窗口rwnd是约等于的关系,那么由于入了拥塞窗口的概念后,此时发送窗口的值是swnd=min(cwnd, rwnd),也就是拥塞窗口和接收窗口中的最小值。
拥塞窗口cwnd变化的规则:
●只要网络中没有出现拥塞,cwnd 就会增大;
●但网络中出现了拥塞,cwnd 就减少;

8e6dfa0bb1494c56993c7e0062853dc1.png

TCP拥塞控制算法主要包含三个部分:慢启动、拥塞避免、快速恢复

慢启动

当一条TCP开始建立连接时,cwnd的值就会初始化为一个MSS的较小值。这就使得初始发送速率大概是MSS/RTT字节/秒,比如要传输1000 字节的数据, RTT为200ms ,那么得到的初始发送速率大概是40kb/s.实际情况下可用带宽要比这个MSS/RTT大得多,因此TCP想要找到最佳的发送速率,可以通过慢启动(slow-start)的方式,在慢启动的方式中,cwnd的值会初始化为1个MSS,并且每次传输报文确认后就会增加一个MSS, cwnd 的值会变为2个MSS,这两个报文段都传输成功后每个报文段+1,会变为4个MSS,依此类推,每成功一次cwnd的值就会翻倍。如下图所示

2502d1669d5f42e3b9c1e817b5e508c6.png

慢启动通常会使用下面这几种方式结束发送速率的增长。


●如果在慢启动的发送过程出现丢包的情况,那么TCP会将发送方的cwnd设置为1并重新开始慢启动的过程,此时会引入一个ssthresh(慢启动阈值)的概念,它的初始值就是产生丢包的cwnd的值1/2,即当检测到拥塞时,ssthresh的值就是窗口值的一半。
●第二种方式是直接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值