UNIX网络编程-多播

要求:

  1. 多播地址
  2. 局域网、广域网的多播
  3. 源特定多播
  4. 多播套接字选项(核心)
  5. 封装范例

内容:

1.多播地址

多播地址-MAC地址映射.JPG

IPv4多播地址范围:224.0.0.0-239.255.255.255;IPv6多播地址是以 FF: 开始的地址。
IPv4/IPv6地址到MAC地址的映射如上图。
多播是一个IP协议上的特性,为了支持多播,需要做一些额外的工作来维护该特性。所以,部分多播地址被用做来维护该特性,如:224.0.0.1 标识所有支持多播功能的主机组;224.0.0.2标识所有路由组(更详细内容可参考RFC文档)。

2.局域网、广域网的多播

局域网-广域网的多播.JPG

局域网的多播,根据IP地址转换的MAC地址(如:01:00:5e:00:01:01)即可被加入多播组的主机识别并接受。
广域网经过了路由,不能单独通过MAC地址来转发。主机H3加入了组播,则路由器R2将被通知到。此时,R2将发送IGMP报文来通知R1:本路由器R2有一个人加入了组织,后续有活动,需要告知我R2,然后再转给H3。

3.源特定多播

在同一网络里,可能出现使用同一个多播组,却发送不同报文。为了更好的标识处理该种场景,考虑将发送多播的主机地址和多播地址一起标识一个多播。这就是源特定多播(SSM)。

4.多播套接字选项

A. 发送

  • IF ---- 指定发送组播的接口,默认由内核选择
  • TTL ---- 发送的组播报文TTL,默认 1
  • LOOP ---- 是否回送自己一份发送的报文,默认回送

前缀:IP_MULTICAST_ / IPV6_MULTICAST_

B. 接受

  • 动作:
    1. ADD/DROP ---- 加入、离开一个组播
    2. BLOCK/UNBLOCK ---- (不)阻塞特定地址发送的组播
    3. ADD/DROP_SRC ---- 加入、离开一个源特定组播
  • 结构体分类:
    1. 多播地址
    2. 接受多播的地址/接口
    3. 发送多播的地址/接口
  • 结构体名称:
    1. 仅组播
      ip_mreq
      ipv6_mreq
      group_req
    2. 源地址相关的组播
      ip_mreq_source
      group_source_req

5. 封装范例

1. mcast_join
2. mcast_leave
3. mcast_block
4. mcast_unblock
5. mcast_join_source_group
6. mcast_leave_source_group
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 五、因特网的路由选择协议 1.有关路由选择协议的几个基本概念 Ⅰ、理想的路由算法 路由表中的路由是怎样得出的呢?核...
    dmmy大印阅读 6,218评论 0 4
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,472评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 10,476评论 0 8
  • 第二章 物理层 频分复用:频分复用的用户在同样的时间占用不同的带宽资源(频率带宽) 时分复用:时分复用的用户在不同...
    PramaWells阅读 9,284评论 1 3
  • 版权声明:原创作品,谢绝转载!否则将追究法律责任。 OSPF路由协议 楔子 为了加强自己我打算好好玩玩网络。 OS...
    李伟铭MIng阅读 10,083评论 0 25