TCP/IP——广播和多播(组播)

一、引言

三种IP地址:单播地址、广播地址和组播地址。广播和多播仅应用于UDP(因为TCP是端对端的连接,无法实现一对多)。

单播,一对一,目的地址是单个主机;

广播,一对全部,目的地址是局域网中的全部主机;

多播,一对部分,目的地址是局域网中的部分主机;广播也是多播的一种特殊形式,即目的地址为全部主机。

TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播。只有UDP才会使用广播和组播。

有时一个主机要向网上的所有其它主机发送帧,这就是广播,广播分为二层广播(目的MAC全F)和三层广播(IP地址的主机位全1),二层广播是不能跨路由器的,三层广播是可以跨路由器路由的。

多播属于单播和广播之间,帧仅传送给属于多播组的多个主机。

二、帧的数据过滤过程

在这里插入图片描述
如果网卡收到一个帧,如果帧检验和错,网卡将丢弃该帧;如果无错误,这个帧将被传送给设备驱动程序。

设备驱动程序收到数据帧后,将进行另外的帧过滤。首先,帧类型中必须指定要使用的协议( I P、A R P等等)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。

设备驱动程序随后将数据帧传送给下一层,比如,当帧类型指定为 I P数据报时,就传往I P层。

I P根据I P地址中的源地址和目的地址进行更多的过滤检测。如果正常,就将数据报传送给下一层(如T C P或U D P)。

每次U D P收到由 I P传送来的数据报,就根据目的端口号,有时还有源端口号进行数据报过滤。如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个 I C M P不可达报文( T C P根据它的端口号作相似的过滤)。如果U D P数据报存在检验和错,将被丢弃。

注意:从上图可以看出,无论在哪一层,均存在丢弃数据包的可能。

使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。拿一个使用 U D P广播应用作为例子。如果网内有 5 0个主机,但仅有 2 0个参与该应用,每次这 2 0个主机中的一个发送 U D P广播数据时,其余 3 0个主机不得不处理这些广播数据报。一直到 U D P层,收到的U D P广播数据报才会被丢弃。这 3 0个主机丢弃 U D P广播数据报是因为这些主机没有使用这个目的端口。

多播的出现减少了对应用不感兴趣主机的处理负荷。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。

三、广播

受限的广播 255.255.255.255

指向网络的广播 10.255.255.255 192.168.1.255

指向子网的广播 10.1.1.255 10.1.255.255

指向所有子网的广播 10.255.255.255

受限的广播

受限的广播通常只在系统初始启动时才会用到。受限的广播地址是 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5。该地址用于主机配置过程中 I P数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的I P地址也不知道。

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

指向网络的广播

指向网络的广播地址是主机号为全 1的地址。 A类网络广播地址为 n e t i d . 2 5 5 . 2 5 5 . 2 5 5(如10.255.255.255),其中n e t i d为A类网络的网络号。

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

指向子网的广播

指向子网的广播地址为主机号为全 1且有特定子网号的地址。作为子网直接广播地址的 I P地址需要了解子网的掩码。

例如,如果路由器收到发往 1 2 8 . 1 . 2 . 2 5 5的数据报,当 B类网络1 2 8 . 1的子网掩码为 2 5 5 . 2 5 5 . 2 5 5 . 0时,该地址就是指向子网的广播地址;

但如果该子网的掩码为2 5 5 . 2 5 5 . 2 5 4 . 0,该地址就不是指向子网的广播地址(其实就不是广播地址),这是因为,当子网掩码为255.255.254.0时,这时B类地址的子网占7位,那么主机位也就是占到了9位,这时的子网的广播地址应该是:128.1.3.255,只有最后的9位(主机位)全为1的时候,才是广播地址。

指向所有子网的广播

指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全 1。

例如,如果目的子网掩码为2 5 5 . 2 5 5 . 2 5 5 . 0,那么I P地址1 2 8 . 1 .2 5 5 . 2 5 5是一个指向所有子网的广播地址。

如果网络没有划分子网,这就是一个指向网络的广播。这是因为,如果没有划分子网,那么主机位占16位,网络位占16位,这时的子网掩码为255.255.0.0,此时地址128.1.255.255即是网络号128.1的广播地址,因为主机地址为全1。

ip directed-broadcast

Smurf攻击:当要攻击一台带宽比自己还要高的机器时,可以伪装被攻击主机的IP地址向某个网络中的主机发送icmp 请求广播(10.1.10.255),接收到广播的主机会回应icmp发给被攻击的主机,此时由于大量icmp回应报文,会造成被攻击的主机的网络拥塞。

要使用这个攻击必须要在协助攻击的网络的路由器与主机相连接的接口下开启ip directed-broadcast,否则icmp请求广播不会向属于10.1.10.0网段的主机发送广播。

如何伪装被攻击主机的IP地址,在路由器上起一个Lo接口,IP地址为被攻击着的IP地址,然后 ping 10.1.10.255(协助攻击的主机网段) -s 100.100.100.202(被攻击主机IP)

四、多播(组播)

I P多播提供两类服务:

  1. 向多个目的地址传送数据(主要功能)。

  2. 客户对服务器的请求。
    多播组地址

在这里插入图片描述

不像A\B\C类地址,分别表示网络号和主机号,D类地址分配的 28 bit均用作多播组号而不再表示其他。

多播组地址包括为 1110的最高4 bit和多播组号(28位)。它们通常可表示为点分十进制数,范围从2 2 4 . 0 . 0 . 0到2 3 9 . 2 5 5 . 2 5 5 . 2 5 5。

能够接收发往一个特定多播组地址数据的主机集合称为主机组 (host group)。一个主机组可跨越多个网络。主机组中成员可随时加入或离开主机组。主机组中对主机的数量没有限制,同时不属于某一主机组的主机可以向该组发送信息。

多播地址(IP层到MAC层的转换)
在这里插入图片描述
由此看出组播IP和MAC地址无法一一映射,因为组播有28位可变,MAC只有23位可变。

既然地址映射是不唯一的,那么设备驱动程序或IP层就必须对数据报进行过滤,因为网卡肯能受到主机不想接收的多播数据帧。
IP层多播地址范围从2 2 4 . 0 . 0. 0到2 3 9 . 2 5 5 . 2 5 5 . 2 5 5。

为了指明一个多播地址,任何一个以太网地址的首字节必须是 0 1,这意味着与 I P多播相对应的以太网地址范围从 0 1 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7f : ff : ff,即以太网地址中最高位的01是人为指定的,用于标识该地址是多播地址。

广播组播在IP层和链路路层的目的地址表示

IP层和链路层都存在广播和多播,其地址是对应的,但不完全相同。

广播

IP层:网络号(含子网号) + 全1主机号

链路层:MAC地址全1,即ff ff ff ff ff ff

组播

IP层:224.0.0.0到239.255.255.255

MAC层:0 1 : 0 0 : 5 e : 00 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7 f : ff : ff

猜你喜欢

转载自blog.csdn.net/weixin_44233369/article/details/87777996
今日推荐