TCP/IP
TCP/IP的定义
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网的基本协议,也是国际互联网络的基础。
TCP/IP 不是指一个协议,也不是 TCP 和 IP 这两个协议的合称,而是一个协议族,包括多个网络协议,比如 IP、ICMP(互联网控制报文协议)、TCP、HTTP(超文本传输协议)、FTP(文件传输协议)等。
TCP/IP的分层结构
TCP/IP 协议族按照层次由上到下分成 4 层,分别是应用层、传输层、网络层(或称网际层)和网络接口层(或称数据链路层)。
TCP/IP在数据包设计上采用数据封装和数据解封的策略,所谓封装就是在应用程序在发送数据的过程中,每一层都增加一些首部信息,这些信息用于和接收端同层次进行沟通。
在主机发送端,从传输层开始会把上一层的数据加上一个报头形成本层的数据,这个过程称为数据封装。在主机接收端,从最下层开始,每一层数据会去掉报头信息,该过程称为数据解封。其过程如下图所示。
TCP/IP协议通过分层的方式进行工作,每个层级负责特定的功能,上层利用下层提供的服务实现数据的传输和交互。
应用层包含了各种应用程序和协议,用于实现具体的网络服务。
传输层主要负责端到端的数据传输和可靠性保证。
网络层主要负责数据包的传输和路由选择。它通过路由选择算法来选择最佳路径将数据包从源主机发送到目标主机。
数据链路层下面就是实体线路(比如以太网络、光纤网络等)。数据链路层有以太网、令牌环网等标准,负责网卡设备的驱动、帧同步(就是从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机可以在不同的数据链路层的网络之间(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间)转发数据帧,由于不同数据链路层的帧格式不同,交换机要将进来的数据报拆掉报头重新封装之后再转发。
TCP协议
TCP协议的定义
TCP协议,全称为Transmission Control Protocol,即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP协议的使用
应用程序在使用TCP之前,必须先建立TCP连接;在使用完TCP协议后,要断开连接。
TCP协议通过三次握手来建立数据通讯的连接,通过四次挥手来断开数据通讯的连接。
TCP的三次握手
第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;
第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;
第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。
举个例子:
一个男人向一个女人表白,说:我喜欢你,做我女朋友吧!
女人回复说:好啊!我愿意。
男人听到后,说:太好了,我们现在去约会。
TCP的四次挥手
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。
第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据发送,客户端进入FIN_WAIT_1状态;
第2次挥手:服务端收到FIN后,发送一个ACK给客户端,服务端进入CLOSE_WAIT状态;
第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据发送,服务端进入LAST_ACK状态;
第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给服务端服务端进入CLOSED状态,完成四次挥手。
举个例子:
男人对女人说:你性格太差了,我们分手吧!
女人回复:好,等我收拾完东西,我们就分手!
收拾好东西后,女人说:我收拾好了,我们分手吧!
男人说:好,慢走不送。
UDP协议
UDP是一种无连接的、不可靠的传输层协议,它不保证数据传输的可靠性,但是具有传输速度快、开销小等特点。UDP协议主要用于需要快速传输数据且对数据的可靠性要求不高的场景,如在线游戏,分布式系统信息的传输(短距离的传输 UDP 的传输的效率是很高的)。
UDP的特点
无连接性:UDP不需要在发送数据之前建立连接,因此发送端和接收端之间没有建立和维护连接的开销。每个UDP数据报都是独立的,不会与其他数据报之间有任何关系。
不可靠:UDP协议不保证数据传输的可靠性,因为它不提供重传机制、异常处理等功能,如果数据在传输过程中出现丢失或错误,UDP协议也不会进行任何处理。
支持广播和多播:UDP协议支持广播和多播,可以将数据同时发送给多个主机。
MQTT协议
MQTT协议是一种基于发布/订阅模式的轻量级通讯协议,适合硬件性能较低或网络状况不佳的远程设备。它的优点在于能够以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。该协议构建于TCP/IP协议上。
如下图所示,MQTT协议采用客户端-服务器架构,客户端可以发布消息到特定的主题,而服务器负责将消息路由到订阅了这些主题的客户端。
HTTP协议
HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)。HTTP协议是用于从(WWW:World Wide Web,简称万维网)服务器传输超文本到本地浏览器的应用层传输协议。
HTTP协议是基于TCP/IP协议来传递数据的。
HTTP 协议是一个无状态的应用层协议,即不会保存客户端与服务器之间的历史记录,每个请求都是独立的。其主要特点如下:
基于请求响应模式:HTTP 协议采用客户端-服务器架构模式,客户端向服务器发送请求,服务器返回相应的响应。
支持多媒体传输:HTTP 协议可以传输多种类型的数据,如 HTML、XML、JSON、图片、音频、视频等。这使得 HTTP 协议成为一种通用的网络传输协议,适用于各种不同类型的应用场景。
无连接:HTTP 协议是一个无连接协议,每个请求都是独立的,服务器处理请求后立即关闭连接。这样可以节省资源,但也带来了一些缺点,如需要重新建立连接、重复发送相同的头部信息等。
COAP 协议
CoAP(Constrained Application Protocol,受限应用协议)是一种专为物联网(IoT)设备和资源受限网络设计的应用层协议。它旨在让小型设备能够接入互联网,因为对于这些设备来说,实现TCP和HTTP协议是一个过高的要求。
CoAP协议是一个应用层协议,基于传输层UDP而开发,而MQTT/HTTP协议则是基于TCP开发的。它采用了与HTTP类似的特征,同时又弥补了UDP传输的不可靠性。但是,CoAP的可靠性主要针对的是单播通信,对于组通信的可靠性保障尚不够完善。对于物联网小型设备而言,CoAP协议是一个极佳的选择,CoAP这种轻量级协议可以很好地适配资源受限的设备和场景。
CoAP的特点:
轻量级:CoAP协议的设计非常简单,使用的头部和选项字段较少,占用的网络带宽和资源较少。这使得它非常适合在资源受限的设备和网络中使用。
基于UDP:CoAP通常在UDP上运行,而不是TCP。这使得它更适用于无连接、低延迟和高效率的通信。此外,CoAP还支持对消息的可靠性传输。
低能耗和低带宽消耗:CoAP协议针对资源受限设备和网络进行了优化,具有低能耗和低带宽消耗的特性。
支持IP多播:允许一对多的通信,这对于物联网中的多个设备同时接收更新非常有用。
EDP协议
EDP(Enhanced Device Protocol)是一种专为物联网领域设计的协议,由OneNET平台根据物联网的特点定制。它是一种基于TCP/IP协议栈的完全公开的协议,可以广泛应用于家居、交通、物流、能源以及其他行业应用中。