广播和多播仅用于 UDP ,它们对需将报文同时传往多个接收者的应用来说十分重要。TCP 是一个面向连接的协议,它意味着分别运行于两主机(由 IP 地址确定)内的两进程(由端口号确定)间存在一条连接。
通常每个以太网帧仅发送往单个目的主机,目的地址指明单个接收接口,因而称为单播。在这种情况下,任意两个主机的通信不会干扰网内其他主机。
有时一个主机要向网上的所有其他主机发送帧,这就是广播。
多播处于单播和广播之间:帧仅传送给属于多播组的多个主机。
接口卡 -> 设备驱动程序 -> IP -> UDP
- 网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧。如果检验和错,网卡将丢弃该帧。
对于以太网,当地址中最高字节的最低位设置为 1 时表示该地址是一个多播地址。
-
设备驱动程序将收的帧进行过滤。首先,帧类型中必须指定要使用的协议(IP、ARP 等等)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。
-
设备驱动程序随后将数据帧传送给下一层,比如,当帧类型指定为 IP 数据报时,就传往 IP 层。IP 层根据 IP 地址中的源地址和目的地址进行更多的过滤检测。如果正常,就将数据报传送给下一层(如 TCP 或 UDP)。
-
每次 UDP 收到由 IP 传送来的数据报,就根据目的端口号,有时还有源端口号进行数据报过滤。如果没有当前进程使用该目的端口号,就丢弃该数据报并产生一个 ICMP 不可达报文。(TCP 个根据它的端口号作相似的过滤)。如果 UDP 数据报存在检验和错,将被丢弃。
使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。
-
受限的广播,地址是 255.255.255.255,该地址用于主机配置过程中 IP 数据报的目的地址,此时,主机可能还不知道它所在网络的掩码,甚至连它的 IP 也不知道。
在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。
-
指向网络的广播,主机号全为 1 的地址。一个路由器必须转发指向网络的广播,但它也必须有一个不转发的选择。
-
指向子网的广播,主机号全为 1 且有特定子网号的地址。
-
指向所有子网的广播,子网号及主机号全为 1。如果网络没有划分子网,这就是一个指向网络的广播。
IP 多播提供两类服务:
-
向多个目的地址传送数据。
-
客户对服务器的请求。
能够接收发往一个特定多播地址数据的主机集合称为主机组。一个主机组课跨越多个网络。主机组中成员可以随时加入或离开主机组。主机组中对主机的数量没有限制。
D 类 IP 地址(224.0.0.0 - 239.255.255.255)被称为多播组地址。通过将其低位 32 bit 映射到相应以太网地址中便课实现多播组地址到以太网地址的转换。