主要收集一下工作中物联网方向的传输协议
物联网(IoT)涉及到大量设备之间的通信和数据传输,因此有许多传输协议用于在设备、传感器和云服务之间进行通信。以下是一些常见的物联网相关传输协议:
- MQTT(Message Queuing Telemetry Transport): 轻量级、开放式、基于发布/订阅的消息协议,适用于低带宽、高延迟或不稳定网络环境。常用于传感器和设备之间的实时通信。
- CoAP(Constrained Application Protocol): 专为受限环境(例如物联网设备)设计的应用层协议,适用于低功耗、低带宽设备。通常用于RESTful风格的通信。
- AMQP(Advanced Message Queuing Protocol): 高级消息队列协议,设计用于在分布式系统中进行高效、可靠的消息传递。适用于异构系统和复杂的消息交换场景。
- HTTP/HTTPS(Hypertext Transfer Protocol / Secure): 传统的应用层协议,适用于通过互联网进行通信。在物联网中,HTTPS更常用,提供安全的通信通道。
- DDS(Data Distribution Service): 面向实时系统的开放标准,用于在分布式系统中进行实时数据交换。适用于需要高性能和可扩展性的应用场景。
- WebSockets: 一种在单个TCP连接上进行全双工通信的协议,通常用于实时应用程序,如实时数据推送。
- LoRaWAN(Long Range Wide Area Network): 用于长距离、低功耗的广域物联网通信的协议。适用于需要广域覆盖和长电池寿命的应用。
- Sigfox: 一种低功耗广域物联网通信技术,适用于低带宽、低功耗、低成本的应用场景。
- Thread: 一种IPv6基础的低功耗、自组织的无线网络协议,适用于智能家居和物联网设备。
- AMT(Automatic Mutual Exclusion): 一种用于IoT的通信协议,支持设备之间的直接通信,降低了对中心服务器的依赖。
1、网络中进程之间如何通信?
本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:
消息传递(管道、FIFO、消息队列)
同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)
共享内存(匿名的和具名的)
远程过程调用(Solaris门和Sun RPC)
2、什么是Socket?
我们已经知道网络中的进程是通过socket来通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),这些函数我们在后面进行介绍。
3、我所使用过的
1,Socket接口:
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。
什么是TCP/IP、UDP?
TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
2、netty
--以后估计都是使用这个框架,我会单独写个专题的,附赠两个学习网址 cloud.tencent.com/developer/a… blog.csdn.net/qq_35190492…
3、MQTT+EMQX搭配
贴一张最近的代码
4、Socket+Kafka搭配
老规矩还是贴一张写的代码图
4、TCP 的三次握手的过程:
-
第一步 - 客户端发送连接请求:
- 客户端向服务端发送一个带有 SYN(同步)标志的数据包,表示客户端想要建立连接。
- 客户端选择一个初始序列号(ISN),用于后续的数据传输。
-
第二步 - 服务端确认连接请求:
- 服务端接收到客户端的连接请求后,向客户端发送一个带有 SYN 和 ACK(确认)标志的数据包,表示服务端收到了客户端的连接请求,并同意建立连接。
- 服务端也选择一个初始序列号,用于服务端向客户端发送数据。
-
第三步 - 客户端确认服务端的响应:
- 客户端接收到服务端的确认后,向服务端发送一个带有 ACK 标志的数据包,表示客户端确认了服务端的响应。
- 此时,TCP 连接已建立,客户端和服务端都可以开始通过这个连接进行数据传输。