通讯协议篇(底层TCP/UDP;上层MQTT、HTTP、CoAP、DDS、AMQP、JMS;实现层RabbitMQ、ActiveMQ、Kafka)

1、TCP/IP网络模型介绍

计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。

TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。

  1. 链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等。
  2. 网络层:负责路由以及把分组报文发送给目标网络或主机。
  3. 传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。
  4. 应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。
    在这里插入图片描述

在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。接下去介绍TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP

2、TCP协议介绍

当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,希望完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,希望获得的是完整的文件,而不仅仅是文件的一部分,因为如果数据丢失或乱序,都不是你希望得到的结果,于是就用到了TCP。

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。

1. TCP连接过程

如下图所示,可以看到建立一个TCP连接的过程为(三次握手的过程):
在这里插入图片描述
第一次握手
客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。
第二次握手
服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。
第三次握手
当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。

这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。

DDS(Data Distribution Service)CORBA(Common Object Request Broker Architecture)是两种不同的中间件技术,用于分布式系统的通信对象请求代理。它们在设计目标、应用场景实现方式上有显著的区别。 ### DDS(Data Distribution Service) 1. **设计目标**: - DDS主要用于高实时性需求的分布式系统,如航空航天、军事、工业自动化等领域。 - 强调数据的实时发布订阅机制,提供低延迟、高吞吐量的数据分发。 2. **通信模型**: - 基于发布/订阅模型,数据的生产者消费者通过主题(Topic)进行解耦。 - 支持多种QoS(Quality of Service)策略,如可靠性、持久性、优先级等。 3. **实现方式**: - DDS通常基于UDP/IP协议栈,提供高效的数据传输。 - 支持动态发现自动配置,减少了系统配置的复杂性。 ### CORBA(Common Object Request Broker Architecture) 1. **设计目标**: - CORBA旨在提供一种通用的、跨语言的分布式对象通信机制。 - 适用于企业级应用,支持复杂的对象交互数据传输。 2. **通信模型**: - 基于客户端/服务器模型,客户端通过对象请求代理(ORB)调用远程对象的方法。 - 支持多种服务,如命名服务、事件服务、交易服务等。 3. **实现方式**: - CORBA通常基于TCP/IP协议栈,提供可靠的对象调用数据传输。 - 需要显式的接口定义语言(IDL)来定义对象接口,增加了系统的复杂性。 ### 区别总结 - **通信模型**:DDS基于发布/订阅模型,CORBA基于客户端/服务器模型。 - **应用场景**:DDS适用于高实时性需求的系统,CORBA适用于企业级应用。 - **实现方式**:DDS基于UDP/IP,支持动态发现;CORBA基于TCP/IP,需要显式的IDL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值