首页 > 代码库 > tcp的可靠性
tcp的可靠性
在理想的传输条件下是不需要tcp这类协议来保证可靠传输的,所谓理想是指:
- 传输过程中数据不会出错、丢失(现在的网络质量很好,这种情况多数不会出现);
- 不论发送端多块发送,接收端都可以接收(这是主要问题)。
但真实传输条件远不能达到理想情况,所以才需要tcp来保证可靠传输。
可靠传输的工作原理
ARQ(automatic repeated request,自动重传请求)保证了:
- 请求报文段在网络传输过程中出错,接收端通过校验会将其丢弃;
- 确认报文在网络中延迟、丢失,发送端超时重发,但接收端会丢弃重复的的报文段;
停止等待ARQ,发送端都需要得到接收端的确认才会发送下一个请求;
连续ARQ,利用滑动窗口,实现了一次发送多个请求,接收端只需要对连续接收到的最大的请求进行确认即可。如下图,发送窗口大小为5,发送方发送5个报文段后,等待接收方确认,收到确认1后向前滑动,发送6。
滑动窗口和缓存的关系(以字节为单位发送、接收)
TCP流量控制
借用滑动窗口很容易实现流量控制
当发送方收到窗口为0时会启动一个计时器,计时器到期后会向接收端发送一个探测报文,接收方的响应中就会携带窗口大小。
传输效率的问题,可以使用nagle算法尽量避免小数据传输(假设数据为1b,tcp、ip头部就有40b,再加上帧结构,网络利用率会很低),当然在要求实时性的场景下,小数据也需要随时发送。
TCP拥塞控制
注意和流量控制相区别,流量控制的对象是某tcp连接的两个端点,而拥塞控制的对象是整个网络(通过控制网络中的端点,最终达到控制网络的目标)。
经典的拥塞控制算法有慢开始、拥塞避免、快重传、快恢复。发送方会维护一个cwnd(拥塞窗口,只是一个数值),该窗口大小变换与所采用的算法和网络拥塞状况有关,最终拥塞窗口(cwnd)大小会和接收方窗口(rwnd)大小一起作用于滑动窗口大小(发送方滑动窗口上限=Min(cwnd, rwnd))。
tcp的可靠性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。