什么是TCP,UDP,MQTT?

以下内容来源于抖音,作者织点代码,读者根据文章内容以及相应论文添加自己的理解进行注释。


计算机之间怎么通信?

彼此之间用网线连接在一起就可以了

但是这样子太麻烦了,成本太高,操作也麻烦

集线器

于是我们可以把线拧在一起

而拧在一起的这个设备,就是集线器

  • 但集线器的缺点也很明显:
  • 每次发送的消息都会发送给所有人
  • 多台计算机之间同时发送消息也会造成互相干扰,导致数据紊乱

交换机(MAC地址)

交换机通过内部的MAC地址表来决定信息流向,输入交换机的设备都必须要有自己的MAC地址

MAC地址是设备出厂时就设定好的,全球唯一的,可以理解为设备的UUID

假如黑色计算机想发送消息给橙色计算机

需要在报文里写上自己的MAC以及橙色的MAC地址,并发给交换机,交换机收到信息之后,发现了黑色计算机的MAC地址,并记录下来,跟接口1绑定

但是交换机现在不知道橙色MAC地址对应的是哪个接口,于是给所有人都发了一遍,这个做法叫泛洪(Flooding)

紫色和绿色的计算机收到信息之后发现与自己的MAC对不上,于是不会处理,而橙色计算机的MAC地址能匹配上,于是发消息回应,回应的消息也要写上自己的MAC地址和黑色计算机的MAC地址

回应消息经过交换机之后,交换机也会把橙色计算机的MAC地址跟接口4进行绑定

Spring Boot 本身并不是直接针对 UDPMQTTTCP 的通信框架,但它可以与其他库结合使用,以便集成这些网络协议。以下是一个简化的步骤来实现这一目标: 1. **UDP**: - 使用 Netty 库(如 `io.netty` 包),它是 Java 中用于构建高性能网络应用的基础组件,包括 UDP 支持。 - 在 Spring Boot 中添加 Netty 相关依赖,比如 `io.projectreactor.netty:netty-reactive-transport`。 ```xml <dependency> <groupId>io.projectreactor.netty</groupId> <artifactId>netty-reactive-transport</artifactId> </dependency> ``` 2. **TCP/MQTT**: - 对于 TCPMQTT,你可以分别使用 `org.eclipse.paho.client.mqttv3` (Paho MQTT Client) 或其他第三方库(如 `com.hivemq.client`)。 - 配置 Spring Boot 驱动,例如 Paho MQTT 客户端可以在启动类上配置 `@EnableMqttEndpoint` 注解。 3. **整合**: - 创建一个 Spring Boot 控制器或服务,利用 Netty 的事件驱动模型处理 UDP 数据包,对于 TCPMQTT,则创建相应的客户端连接和消息监听器。 - 将发送和接收数据的逻辑封装成独立的服务,然后通过 Spring 的依赖注入轻松调用。 4. **异步处理**: - 因为 UDPTCP/MQTT 连接通常是异步的,所以使用 Reactor Netty 的 Flux 或 Mono 类型可以帮助处理非阻塞的网络操作。 5. **错误处理和日志**: - 异常捕获和记录是非常重要的,确保对网络异常有适当的处理,并将通信状态信息记录到日志中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值