TCP流控机制前言
TCP/IP协议是计算机通信网络中目前使用最多的协议,同时也融入了生活的方方面面,不管是浏览网页使用的http/https超文本传输协议、物联网设备使用的MQTT/MQTTS协议与下载文件使用的ftp协议、工业以太网中使用的Modbus TCP协议等很多应用层协议,都是基于TCP/IP协议。TCP/IP协议在传输数据的同时,也提供了以下功能:
1、慢启动:网络环境拥塞检测;
2、重传机制:保证数据的完整性,与连接可靠性;
3、滑动窗口:流量控制,降低网络环境压力,避免数据丢包;
4、Keep-alive:网络异常检测。
正因为以太网在我们生活中广泛的引用,以及物联网无线数传终端设备的普及,而以太网设备的处理能力以及网络接口的速度又可能差异巨大。比如目前主流的PC、交换机与路由器等网络设备都支持1000Mbps的连接速度,而老的产品能支持到100Mbps,甚至某些低成本以太网模组产品只能支持到10Mbps,所有怎样才能保证以太网设备在通讯的时候,接收数据的稳定性,并且在接收方没有能力接收数据的情况下“告诉”对方暂时不要发送数据呢?
本文将介绍TCP滑动窗口,并且如何通过滑动窗口实现流量控制机制。
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP提供了一种全双工的、面向连接的、可靠的字节流服务,是TCP/IP协议簇中最重要也是最复杂的协议。
TCP协议的主要特点包括:
面向连接:通信前需要先三次握手建立连接,通信后四次挥手释放连接。
可靠性:通过序号解决报文乱序/丢失、超时重传、拥塞控制、滑动窗口、检验和等方式保证数据传输的可靠性。
字节流:没有固定的报文边界,数据在TCP中以字节流的形式传输。
全双工通信:通信两端在任意时刻可以互相发送数据,既可以是客户端也可以是服务端。
TCP假设它可以从较低级别的协议获得简单的、可能不可靠的数据报服务,原则上TCP协议应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
上图中是通过wireshark抓取的一段TCP连接报文,Win=64240表示客户端(192.168.3.111:53065)的接收窗口为64240,WS=256代表窗口缩放256倍,即64240*256。Win=64240表示服务器(192.168.3.207:8000)的接收窗口为64240,WS=32代表窗口缩放32倍,即64240*32
从上图中可以看出,当发送方应用层有大量数据发送的时候,发送方并不一定会等待接收方的ACK,并且接收方的接收窗口会有一个变小,再变大的过程。
上图为客户端(192.168.3.111)一直往服务器(192.168.3.207)发送数据且服务器不从协议栈读出数据的一段报文,从上图中可以看到,服务器的接收窗口一直处于下降状态。客户端数据正常在发送
当发送方一直发送,直到接收方ACK Win=160的时候,发送方发送了最后160字节。后续发送方一直发送窗口检测包,而非应用层数据。(此时在一些操作系统下若发送方应用层使用阻塞api,那么发送线程就会阻塞在发送函数中)无法继续发送数据。
今天的分享就到这里啦,太阳集团tcy8722人每一天都致力于更好的助力物联化、智能化、自动化的物联网应用发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的官网进行了解,还有客服在线答疑哦!
更多物联网通信协议相关文章推荐:
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 杭州办事处戴经理:17512568697
常州办事处崔经理:15906110783 南京办事处葛经理:17626012283
业务邮箱:support@cdhanzaichips.com
全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都太阳集团tcy8722电子科技有限公司【版权所有】 蜀ICP备27697263号-3