美文网首页
TCP/IP详解012 广播和多播

TCP/IP详解012 广播和多播

作者: gg大宇 | 来源:发表于2019-02-13 17:54 被阅读2次

    广播和多播仅用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别运行与两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。
    单播(unicast):以太网帧发往单个目的主机,目的地址指明单个接收接口
    广播:一个主机要向网上的所有其他主机发送帧
    多播:帧仅传送给属于多播组的多个主机

    为了弄清广播和多播,需要了解主机对信道传送过来帧的过滤过程


    image.png

    首先,网卡查看由信道传送过来的帧,确认是否接收该帧,若接收后就将它传往该设备驱动程序。通常网卡仅接收目的地址为网卡物理地址或广播地址的帧。另外,多数接口均被设置为混合模式,这种模式能接收每个帧的一个复制。
    对于以太网,当地址中最高字节的最低位设置为1时表示该地址是一个多播地址,用十六进制可表示为01:00:00:00:00:00(以太网广播地址全f可看做是以太网多播地址的特例)。
    如果网卡收到一个帧,它会将这个帧送到设备驱动程序
    设备驱动程序随后将数据帧传送给下一层(比如,帧类型指定为IP数据报时,就送往IP层),IP层在进行检测,如果正常在送给下一层(TCP或UDP)
    UDP收到IP传送过来的数据报,根据目的端口号进行数据报过滤,如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个ICMP不可达报文。

    使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。你比如说拿一个使用UDP广播应用作为例子,如果网内有50个主机,但仅有20个参与该应用,每次这20个主机中的一个发送UDP广播数据报时,其余30个主机不得不处理这些广播数据报,一直到UDP层,收到的UDP广播数据报才被丢弃。这30个主机丢弃UDP广播数据报是因为这些主机没有使用这个目的端口。
    多播的出现减少了对应用不感兴趣主机的处理负荷。
    使用多播,主机可以加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。

    广播

    受限的广播

    受限的广播地址是255.255.255.255.该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。
    在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中

    指向网络的广播

    指向网络的广播地址是主机号全1的地址,比如A类广播地址:netid.255.255.255,netid为A类网络的网络号
    一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择

    指向子网的广播

    指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。
    比如:路由器收到发往128.1.2.255的数据报,当B类网络128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但如果该子网的掩码为255.255.254.0,该地址就不是指向子网的广播地址

    指向所有子网的广播

    指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。
    例如:如果目的子网掩码为255.255.255.0,那么IP地址128.1.255.255是一个指向所有子网的广播地址。然而,如果网络没有划分子网,这就是一个指向网络的广播。

    广播的例子

    image.png

    指向子网的广播我们是可以用的。
    也能显示出广播与ARP之间的相互作用,执行ping命令前ARP缓存是空的,而执行后是满的(也就是说,对网内其他每个响应回显请求的主机在ARP缓存中均有一个条目)

    多播

    IP多播提供两类服务:
    1、向多个目的地址传送数据。
    比如交互式会议系统,多个接收者分发邮件或新闻。
    2、客户对服务器的请求

    多播组地址

    image.png

    多播组地址包括为1110的最高4bit和多播组号,他们通常可表示为点分十进制数,范围从224.0.0.0到239.255.255..255
    能够接收发往一个特定多播组地址数据的主机集合称为主机组(host group)
    一个主机组可跨越多个网络。
    主机组中成员可随时加入或离开主机组,主机组对主机的数量没有限制,同时不属于某一个主机组的主机可以向该组发送消息
    一些多播组地址被IANA确定为知名地址,它们也被当作永久主机组。(但是它们的组成员却不是永久的)
    例如:224.0.0.1代表“该子网内的所有系统组” 224.0.0.2代表“该子网内的所有路由器组” 224.0.1.1用作网络时间NTP 224.0.0.9用作RIP-2 224.0.1.2用作SGI公司的dogfight应用。

    多播组地址到以太网地址的转换

    IANA拥有一个以太网地址块,即高位24bit为00:00:5e(十六进制表示),这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff
    IANA将其中的一般分配为多播地址。
    为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff

    多播进程将目的IP地址指明为多播地址,设备驱动程序将它转换为响应的以太网地址,然后把数据发送出去。
    这些接收进程必须通知它们的IP层,它们想接收的发往给定多播地址的数据报,并且设备驱动程序必须能够接收这些多播帧。这个过程就是“加入一个多播组”
    当一个主机收到多播数据报时,它必须向属于那个多播组的每个进程均传送一个复制,这和单个进程收到单播UDP数据报的UDP不同。使用多播,一个主机上可能存在多个属于同一多播组的进程。

    小结

    广播是将数据报发送到网络中的所有主机
    多播是将数据报发送到网络的一个主机组

    目前有四种类型的广播地址:受限的广播、指向网络的广播、指向子网的广播和指向所有子网的广播。

    D类IP地址被称为多播组地址,通过将其低位23bit映射到相应以太网地址中便可实现多播组地址到以太网地址的转换。由于地址映射是不唯一的 ,因此需要其他的协议实现额外的数据报过滤。

    相关文章

      网友评论

          本文标题:TCP/IP详解012 广播和多播

          本文链接:https://www.haomeiwen.com/subject/elmdeqtx.html