TCP传输性能的关键因素除了流量控制,还有这些!

TCP网络通信基本原理

TCP效率(滑动窗口)

滑动窗口:在TCP通信协议下,批量发送数据,一次性发送多个数据,在缓冲区中的数据会有统一等待和分开等待两种模式,在这种模式下可以节省时间,也就相应的会提升效率。

滑动窗口中,数据大量传输,可能会产生丢包问题(ASK丢包),不过、TCP有相对的解决办法,ASK数据报中会记录数据是否收到,ASK会返回一个确认序号,当发下一个数据时,就会知道在此之前发送的数据包是否接收。如果是数据包丢失,TCP快速重传可以帮助解决问题。

不过这种滑动窗口触发是有一定概率的,只有在大量数据包传输时才会生效,一般的数据量都是根据TCP中ASK报文即时发送和超时重传。

流量控制

流量控制:是基于滑动窗口大量数据传输时,对于数据的不可控性进行调整。滑动窗口+快速重传可以达到非常高的数据量,有时候速度太快会产生不可控因素,一句老话说得好:“天下武功,唯快不破”,而流量控制就针对于让接收方来限制发送方的速度
主要原理:让ASK携带窗口大小从而控制流量。

拥塞控制

网络传输会有很多中转器,比如路由器,交换机这些设备,而拥塞控制就是用于衡量中间节点的传输能力,对中间节点的数据容量进行探测,不断不断去调整数据的传输量,达到最合适的传输量,对多余的数据进行阻塞。
主要原理:数据传输时,最开始时是开始速度,接下来会达到指数增长的速度,经过几次翻倍增长,会达到极限。接下来会变成线性增长,直到达到网络拥堵,然后重新回到开始传输时的速度,长此以往,循环进行。不过后面的几次循环的临界值会比前面的临界值要低!
在这里插入图片描述

延时应答

TCP可靠性来自确认应答,延时应答是为了提高ASK报文发送效率,主要方法是增加ASK发送报文时间,不再像前面那样立即发送报文,而是累积一定的量再进行发送。

作为流量控制和阻塞控制,两个机制对数据效率进行提升,可以使得接收方能获得更大的缓存能力,因为在发送方与接收方进行交互时,等待了一段时间,此时的接收缓存区肯定有更大的空间来容纳数据。

捎带应答

通信模型一般分为四种:

1.一问一答

2.多问一答

3.一问多答

4.多问多答

最常用的模型:一问一答模式
通信模型本来就是针对不同时机的数据进行传输,不过又因为延时应答会导致
在捎带应答之中将数据等待了一部分的时间,配合了捎带应答就会变成相当于连接管理中的“三次握手”模式。

面向字节流

TCP传输的数据是面向字节流,对于大量数据传输时,TCP会如何分割这些数据,从而不会导致混淆。
粘包问题:主要是指几个数据在一起,不知道如果将其分开还原成原来的数据,因为是以字节为单位来分割的,所以TCP有常用的三个解决办法。
1.定义分割符
2.定义固定读取字节大小
3.约定包的总长度

异常情况分析

TCP通信会出现很多异常情况,对于数据传输时,这些异常情况会对数据产生什么影响?

  1. 进程关闭/崩溃:依旧可以进行四次挥手,不影响断开连接
  2. 主机关闭:杀死所有进程,依旧可以进行四次挥手,可能会挥手中断,不过对方会进行超时重传,重传失败会等待一段时间,然后循环往复,直到断开连接
  3. 主机断电:来不及进行挥手操作,对端发送方会进行超时重传,同主机关闭中挥手中断一致。
  4. 网线断开:同上

异常情况发生时,对方端只能设法知道这边连接断开,对方端意识到这端再无数据传输时会根据TCP心跳包,进行检测。

检测特性:

1)周期性

2):心跳状态

总结UDP/TCP特性与不同应用场景

UDP:可靠性低,传输效率高
TCP:可靠性低,传输效率相比于UDP稍微逊色
两个通信协议其实都有着自己的应用场景,可以根据不同需求来决定不同的通信协议。

TCP:可靠性低,传输效率相比于UDP稍微逊色
两个通信协议其实都有着自己的应用场景,可以根据不同需求来决定不同的通信协议。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值