TCP/IP知识点讲解

滑动窗口协议

滑动窗口协议用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。

TCP协议是可靠并且有序的,为了数据的顺序性和可靠性,必须确认数据分组是否发送成功。

采用发送一个数据分组确认一个模式:

这种方式吞吐量低,每次发送一个数据必须等到确认消息后才能发送,可以一次发送多个数据分组一次确认多个数据分组:

那么如何确认一次发送多少个数据分组是吞吐量最好的呢?答案是通过了滑动窗口控制,通过窗口的大小控制分组数据装载的快慢。

如下图所示,滑动窗口有个默认大小发送和接受的默认大小为2048字节。api插口允许应用程序设置发送和接受缓存大小。有些应用程序可以修改插口缓存大小来增加性能。

窗口左边是已确认数据段,窗口中是发送了没确认或是待发送数据段,窗口右边是未发送数据。

数据段确认是有顺序的,必须在数据段3被确认后,才能发送数据段5、6。这时数据段3的TCP接受缓存释放,加载数据段7的缓存进来,称为窗口张开。

当全部数据段发送后没有接受的确认,此时可用窗口大小为0,如果数据段一直没哟确认,就会超时重传

超时重传

超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。

拥塞控制

根据网络拥塞程度,对拥塞窗口的大小进行动态控制,以控制网络的拥塞情况。

拥塞控制主要是四个算法:

1)慢启动

2)拥塞避免

3)拥塞发生

4)快速恢复

TCP慢启动

慢启动是为了防止,发送方和接收方之间存在多个路由器和速率较慢的链路时,可能出现一些问题。一些中间路由器必须缓存分组,并有可能耗尽存储器的空间。这种连接方式是如何严重降低了TCP连接的吞吐量的。于是有了“慢启动算法”,该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作

TCP 数据传输的性能还取决于 TCP 连接的使用期(age)。TCP 连接会随着时间进行自我“调谐”,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐被称为 TCP 慢启动(slow start),用于防止因特网的突然过载和拥塞

慢启动为发送方的T C P增加了另一个窗口:拥塞窗口限制了一个 TCP 端点在任意时刻可以传输的分组数。简单来说,每成功接收一个分组,发送端就有了发送另外两个分组的权限。如果某个 HTTP 事务有大量数据要发送,是不能一次将所有分组都发送出去的。必须发送一个分组,等待确 认;然后可以发送两个分组,每个分组都必须被确认,这样就可以发送四个分组了, 以此类推。这种方式被称为“打开拥塞窗口”。

        由于存在这种拥塞控制特性,所以新连接的传输速度会比已经交换过一定量数据的、 “已调谐”连接慢一些。由于已调谐连接要更快一些,所以 HTTP 中有一些可以重用 现存连接的工具。

拥塞避免算法 

如同前边说的,当拥塞窗口大小cwnd大于等于慢启动阈值ssthresh后,就进入拥塞避免算法。

算法如下:

1) 收到一个ACK,则cwnd = cwnd + 1 / cwnd 2) 每当过了一个往返延迟时间RTT,cwnd大小加一。

过了慢启动阈值后,拥塞避免算法可以避免窗口增长过快导致窗口拥塞,而是缓慢的增加调整到网络的最佳值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知始行末

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值