FastDDS(10)Transport Layer传输层

24 篇文章 ¥179.90 ¥299.90
FastDDS传输层提供了UDP、TCP和共享内存等多种通信方式,其中UDP和TCP支持IPv4和IPv6。传输层API包括TransportDescriptorInterface和TransportInterface,允许应用配置和创建传输。FastDDS默认启用UDP传输,但用户可选择TCP或共享内存传输。共享内存传输在同一主机上的性能优于网络传输,减少了内存复制和系统开销。

        传输层在DDS实体之间提供通信服务,负责通过物理传输实际发送和接收消息。DDS层将此服务用于用户数据和发现流量通信。然而,DDS层本身是独立于传输的,它定义了一个传输API,可以运行在实现该API的任何传输插件上。这样,它就不局限于特定的传输,应用程序可以选择最适合其需求的传输,或者创建自己的传输。
        eProsima Fast DDS具有五种已实现的传输:

  • UDPv4:IPv4上的UDP数据报通信。如果没有给定特定的传输配置(请参阅UDP传输),则默认情况下会在新的DomainParticipant上创建此传输。
  • UDPv6:IPv6上的UDP数据报通信(请参阅UDP传输)。
  • TCPv4:IPv4上的TCP通信(请参阅TCP传输)。
  • TCPv6:IPv6上的TCP通信(参见TCP传输)。
  • SHM:在同一主机上运行的实体之间的共享内存通信。如果没有给定特定的传输配置(请参阅共享内存传输),则默认情况下会在新的DomainParticipant上创建此传输。

        虽然它不是传输模块的一部分,但在某些设置下,进程内数据传递和数据共享传递也可用于在实体之间发送消息。下图显示了Fast DDS中可用的不同传输之间的比较。 

传输层Transport Layer)在网络通信中扮演着重要角色,它负责在终端系统之间提供端到端的通信服务,主要功能是将应用层的消息进行分段处理后传入网络层,以及在接收端将分段重新装配成完整的消息后传入应用层 [^3]。 在BLE Mesh蓝牙组网技术中,传输层可分为上传输层(Upper Transport Layer)和下传输层(Lower Transport Layer)。上传输层会发送或接收Upper Transport Control PDU,这是一种协议数据单元,用于传输特殊的“传输控制消息”,像与“友谊”相关的心跳和消息等,目的是实现低功耗节点和好友节点之间的通信,以节省电池寿命和网络资源 [^1]。 下传输层的分段消息包括分段接入层消息和分段控制消息。分段接入层消息用于传输来自访问层的应用消息或配置消息,长度为5 - 16字节,由1字节控制字段和4 - 15字节上层传输层接入消息PDU组成;分段控制消息用于传输来自上层传输层的控制消息,长度为5 - 12字节,由1字节控制字段和4 - 11字节参数字段组成 [^2]。 在互联网协议里,传输层也有多种协议,比如TCP和UCP。TCP是可靠的、有序的,具备拥塞控制、流控制和连接建立等功能;UCP则是不可靠的、无序的,仅帮助IP实现最基本的功能,不过两者都无法保障延迟和带宽 [^3]。同时,传输层还涉及一些常见的协议,如HTTP用于万维网、FTP用于数据传输、SMTP用于发送邮件、IMAP用于接收邮件 [^4]。 此外,为了确保发送方和接收方通信内容在传输过程中未被改变,可使用密码散列函数(Hash函数)。通过秘密商定一个鉴别密钥,计算Hash(d + s)生成报文鉴别码MAC来验证报文完整性 [^5]。 ### 代码示例 以下是一个简单的Python示例,模拟传输层将消息分段和重新装配的过程: ```python # 发送端:将消息分段 def break_message(message, segment_size): segments = [] for i in range(0, len(message), segment_size): segments.append(message[i:i + segment_size]) return segments # 接收端:将分段重新装配成消息 def reassemble_message(segments): return ''.join(segments) # 示例消息 message = "This is a test message for transport layer." # 分段大小 segment_size = 5 # 发送端分段 segments = break_message(message, segment_size) print("Segments:", segments) # 接收端重新装配 reassembled_message = reassemble_message(segments) print("Reassembled message:", reassembled_message) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pony12

助力1000篇OpenDDS文

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值