【FastDDS源码剖析】Well Known Ports

17 篇文章 14 订阅 ¥99.90 ¥299.90

Well Known Ports

前言

FastDDS使用的端口默认情况下是通过计算得来的,组播端口使用计算出的端口号,单播端口如果被占用,会在默认端口号开始的一定范围内找到一个未使用的端口作为单播端口。

在介绍DDS发现机制之前,我们需要先来了解一下常用的UDP端口号是如何计算的。

计算公式

SymbolMeaningDefault valueQoS field
DGDomainID gain250wire_protocol().port.domainIDGain
PGParticipantId gain2wire_protocol().port.participantIDGain
PBPort Base number7400wire_protocol().port.portBase
offsetd0Additional offset0wire_protocol().port.offsetd0
offsetd1Additional offset10wire_protocol().port.offsetd1
offsetd2Additional offset1wire_protocol().port.offsetd2
offsetd3Additional offset11wire_protocol().port.offsetd3
Traffic typeWell-known port expression
Metatraffic multicastPB + DG * domainId + offsetd07400 + 250 * domainId + 0
Metatraffic unicastPB + DG * domainId + offsetd1 + PG * participantId7400 + 250 * domainId + 10 + 2 * participantId
User multicastPB + DG * domainId + offsetd27400 + 250 * domainId + 1
User unicastPB + DG * domainId + offsetd3 + PG * participantId7400 + 250 * domainId + 11 + 2 * participantId
  • Metatraffic都是偶数端口,User的都是奇数端口。
  • 只要domain id相同,多播的端口就相同,这也是为什么相同domain id下的subscriber和publihser能相互发现,不同domain id 是通过端口隔离的。
  • TCP不支持组播,UDPv4默认的组播地址为 239.255.0.1,获取default metatraffic multicast locator的时候,优先从非shm transport获取,其他所有的transport都获取不到default locator, 并且存在shm transport 时从shm transport获取, 默认的组播地址为’M’+ host id。
  • builtin的initialPeersList未配置时使用metatrafficMulticastLocatorList。
  • 如果没有设置白名单,每个合法的IP地址都会对应生成一个用于传输数据的locator,设置白名单后,使用白名单中包含的本机地址生成locator。
  • 如果设置了intraprocess only,元数据单播,用户数据单播多播端口均删除,仅保留元数据多播locator。intra发送数据在进程内,不需要transport。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

桃花朵朵~

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值