建议参考:广播和多播 IGMP

12.1 引言

IP地址知识点回顾:

IP地址分为三种:(1)单播地址 (2)广播地址 (3)多播地址

另外一种是,IP地址一般划分成五类:A-E类。

单播

考虑 类似以太网的 包含多个主机的共享信道网络,每一个以太网帧 包含源主机和目的主机的 MAC地址(以太网地址 48bit),通常情况下,每个以太网帧只发送往单个目的主机,目的地址指明单个接收接口,称为 单播(unicast)。

  • 在单播的情况下,任意两个主机之间的通信不会打扰到其他主机(除了争夺共享信道的)。

广播和多播

(1)广播和多播仅应用于 UDP。它们对于 需要把数据报文 发送给 多个 目的端 的应用来说 很重要。

(2)TCP 是一个 面向连接 的协议,它意味着 分别运行于 两个主机(由IP地址确定) 的 两个进程(由端口号确定) 之间存在一条连接。

  • IP地址确定不同的主机,端口号确定主机中不同的进程。

有时一个主机 要向网络上所有的主机 发送相同的数据帧,这就是广播。我们在之前的 ARP 地址解析协议 的时候有提到,向周围的主机发送 ARP请求(以太网数据帧)。

多播 介于 广播 和 单播 之间:帧只传给属于 多播组 的多个主机。

所以 广播 可以看做 多播 的特例。(所有主机都属于同一个多播组)

广播和多播 的区别:了解主机对 由信道传送过来的帧 的过滤过程

Link Layer 网卡 第一次过滤

网卡查看传送过来的帧,根据 目的地址(MAC地址) 是否为 网卡的物理地址 或者 广播地址(个人认为 进行了一次转换,转换为以太网地址) 来筛选。

若接收,传给设备驱动程序。不接收,丢弃。

  • 多数接口被设置为 混杂模式:能够接收 每一个帧 的一个复制。

目前大多数网卡,经过配置都支持 目的地址为多播地址 或者某些 子网多播地址的帧。

对于以太网来说,地址中最高字节的 最低位 为1时,代表地址为一个多播地址。十六进制可以表示为 01:00:00:00:00:00(以太网 广播地址 ff:ff:ff:ff:ff:ff 可以看做是它的特例)。

Link Layer 设备驱动程序(相当于硬件的接口) 第二次过滤

属于广播 或者 组播 的数据报 在此处被区分开来

设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。

所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用。

首先,判断检验和是否有差错,如果检验和计算结果错误,说明传输过程中出错,则丢弃该报。

其次,判断 帧类型 中是否有指定要使用的协议(比如 ARP等等),没有的话丢弃。



然后,进行多播过滤,检测该主机 是否属于 多播地址 说明的 多播组。

以上都满足的情况下,交给下一层:网络层。

Internetwork Layer 第三次过滤

当 帧类型 指定为 IP数据报 的时候,就传向IP层。

IP **根据IP地址中的源地址 和 目的地址 **进行过滤。

正常的话,传给下一层(TCP 或者 UDP)。

Transport Layer 第四次过滤

如果检验和出错,丢弃报文。

当 UDP(TCP 采用类似的方法)收到一份 IP传过来的数据报 的时候,根据 目的端口号(有时候 还根据源端口号) 进行数据报过滤。

如果没有遇到当前进程所使用的 端口号(回忆:端口号区分不同的进程),就丢弃它 并且 产生一个ICMP不可达报文。

使用广播的问题:多播的一个优点

使用广播的问题在于,增加了对广播数据不感兴趣的主机的处理负担。

拿一个 UDP 广播作为例子,假如网内有50台主机,但是只有 20台对广播感兴趣,所以 当其中的一台主机 发送UDP广播数据的时候,其他的30台不得不处理这些广播数据报:直到 UDP层才会被丢弃(不存在进程对应的端口号)。

多播的出现,减少了 对广播不感兴趣主机的 处理负荷。使用多播,主机可以加入一个 或者 多个 多播组。这样 网卡 可以获知主机 是否属于 数据报中指明的多播组。

12.2 广播



大致分为两类:受限的广播 和 直接广播。

  • (1)受限的广播:它不被路由但会被送到相同物理网络段上的所有主机,IP地址的网络字段和主机字段全为1就是地址255.255.255.255。
  • (2)直接广播:网络广播会被路由,并会发送到专门网络上的每台主机,IP地址的网络字段定义这个网络,主机字段通常全为1,如 192.168.10.255。

四种IP广播地址

12.2.1 受限的广播

受限的广播地址:255.255.255.255,用于 主机配置 过程中 IP数据报的目的地址。这个时候,主机可能连所在网络的掩码都不知道,甚至连IP地址都不知道。

在任何情况下,路由器都不转发 目的地址 为 受限的广播地址 的数据报。这样的数据报只出现在本地网络LAN中。

直接广播:主机号一般全为1.

12.2.2 指向网络的广播

指向网络的广播地址:主机号全为1。

A类网络广播地址:netid.255.255.255,netted 为 A类网络的网络号。

一个路由器 必须转发 指向网络的广播。但是也必须有一个不进行转发的选择。

12.2.3 指向子网的广播

指向子网的广播地址:主机号全为1,有特定子网号。

作为子网广播地址的 IP地址 需要了解 该子网的掩码。

比如 路由器 收到 发完 128.1.2.255(B类IP地址) 的数据报,当 B类网络 128.1 的子网掩码 为 255.255.255.0 时,该地址就是 指向子网的广播地址。

回顾:某一类的IP地址(这里指 ABCD···) 的格式 区分了 网络号 和 主机号,而 子网掩码 在原有的主机号中 区分了 子网号 和 主机号 的界限。

但是 如果 子网掩码 是 255.255.254.0,该地址就不是指向子网的地址。

12.2.3 指向所有子网的广播

指向所有子网的广播地址:主机号 和 子网号 全为1。

比如IP地址:128.1.255.255 (子网掩码:255.255.255.0) 就是一个指向所有子网的广播地址。(根据:(1)B类网络 (2)子网掩码 找出 子网号 和 主机号)

12.4 多播



IP 多播 提供的服务:

(1)向多个目的地址传送数据。

(2)客户对服务器的请求。

12.4.1 多播组地址



多播组地址 包括 为1110 的最高4bit 和 多播组号。通常表示为点分十进制数。范围:224.0.0.0 到 239.255.255.255。

能够接收 发往一个特定多播组地址 数据的主机集合 称为主机组。一个主机组 可以跨越多个网络,主机组成员可以随时加入或者离开主机组,主机的数量没有限制。不属于主机组的主机可以向它们发送消息。

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

IANA 拥有一个以太网地址块,范围:00:00:5e:00:00:00 到 00:00:5e:ff:ff:ff ,它把其中的一半分配给了多播地址。

为了指明一个多播地址,任何一个以太网地址的首字节 必须是01,这意味着 与IP多播相对应的以太网地址 从 01:00:5e:00:00:00 到 01:00:5e:7f:ff:ff。

这种地址分配将 以太网多播地址 中的 23bit 与 IP多播组号联系起来:

  • 通过将 多播组号(D类IP地址中) 的低位23bit 映射到 以太网地址(MAC地址) 中的低位23bit实现。

    多播组号的头五位在映射过程中被忽略,因此 每个以太网多播地址(MAC) 对应的 多播组(由IP地址确定) 不唯一。

    既然地址映射不唯一,那么 设备驱动程序或者IP层 就必须对数据报进行过滤(检查MAC地址 和 IP地址)。

单个物理网络的多播是简单的。多播进程 把目的IP地址指明为多播地址(范围在 224.0.0.0 到 239.255.255.255),设备驱动程序 将IP多播地址 转换为 相应的以太网地址,然后把数据发送出去。

  • 这些接收进程 必须 通知它们的IP层:它们想接收的多播数据报。并且设备驱动装置 必须能够接收 这些 数据帧。这个过程就是 加入一个多播组。
  • 一个主机上可能存在多个属于同一个多播组的进程。

IGMP的作用在于,让 其他所有需要知道自己处于哪个多播组的 主机和路由器 知道自己的状态。

2016/8/6

【TCP/IP详解 卷一:协议】第十二章 广播和多播的更多相关文章

  1. TCP/IP详解 卷一(第十二章 广播和多播)

    广播和多播仅应用于UDP. 广播指的是一个主机向网上的所有其他主机发送帧,而 多播仅发送给属于多播组的多个主机. 为了弄清广播和多播,需要了解主机对由信道传送过来帧的过滤过程 1.首先,网卡查看由信道 ...

  2. TCP/IP详解 卷一(第十四章 DNS:域名系统)

    域名系统(DNS Domain Name System)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息. 从应用角度上看,对DNS的访问时通过 ...

  3. TCP/IP详解 卷一(第十九章 TCP的交互数据流)

    TCP需要同时处理两类数据:块数据.交互数据. 本章将以Rlogin应用为例观察交互数据的传输过程. 交互式输入 首先观察在一个Rlogin连接上键入一个交互命令时所产生的数据流(每键入一个交互按键都 ...

  4. TCP/IP详解 卷一(第十八章 TCP连接的建立和终止)

    建立连接 建立一个TCP连接时会发生下述情况 1.客户TCP发送一个SYN(同步)分节,它告诉服务器将在(待建立)连接中发送的数据的初始序列号. 2.服务器确认(ACK)客户的SYN,同时自己也得发送 ...

  5. TCP/IP详解 卷1 第十九章 TCP的交互数据流

    19.1 引言 成块数据:比如ftp.电子邮件.Usenet新闻 交互数据:Telnet.Rlogin 成块数据的报文段基本上都是满长度(full-size)的,而交互数据小的多(Telnet和Rlo ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  8. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  9. TCP/IP详解 卷一(第一章 概述)

    很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...

随机推荐

  1. redhat7:用户、组和权限

    用户: 任何用户被分配一个独特的用户id号(UID)  (UID 0标识root用户    用户账号通常从UID 1000开始(在redhat6及之前的版本,从500开始))  . 用户名和UID信息 ...

  2. 1025 PAT Ranking[排序][一般]

    1025 PAT Ranking (25)(25 分) Programming Ability Test (PAT) is organized by the College of Computer S ...

  3. Linux定时任务出现问题时正确的解决步骤

    但凡是提供服务的,都要有本账.软件服务也不例外.无论是Apache,Nginx,还是我们自己搭建的网站,日志是标配.这里的日志就是一本账. 当定时任务出现问题时,正确的处理步骤是: 1,定时任务服务是 ...

  4. hadoop streaming怎么设置key

    充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...

  5. JAVA 实现XML与JSON 相互转换

    原文地址https://blog.csdn.net/congcong68/article/details/39029907 在工作中,经常碰到XML转为JSON或者JSON转为XML,在这过程中有时嵌 ...

  6. selenium webdriver显示等待时间

    当页面加载很慢时,推荐使用显示等待:等到需要操作的那个元素加载成功之后就直接操作这个元素,不需要等待其他元素的加载 WebDriverWait wait = new WebDriverWait(dri ...

  7. time使用方法

  8. 全文搜索引擎Xapian

    安装过程 安装xapian-core wget http://oligarchy.co.uk/xapian/1.0.13/xapian-core-1.0.13.tar.gztar zxvf xapia ...

  9. EBS 多组织访问设置

    如果想让你的职责下为单组织模式,那么你在Profile下只设置MO: Operating Unit的值,MO: Operating Unit提供只访问一个单独的OU.如果你想让你的职责下为多组织模式, ...

  10. webstorm使用心得

    收藏夹功能:当工程目录很庞大时,有些子目录很经常打开,但层级又很深,这时候可以把目录添加到收藏夹里面,添加成功后,左侧有个“Favorites”菜单 面包屑导航:除了左侧的工程页面,可以选择目录之外, ...