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

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编辑推荐 本书是网络构建原型——4.4BSD的建造者的倾力之作,《TCP/IP解析》中的第1卷,主要讲述TCP/IP协议方面的内容。与其他的TCP/IP书藉的最大不同在于,本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议、寻址协议、组控制协议、简单邮件传输协议等。全书内容实用性强,是在校生学习TCP/IP知识的良师益友。 内容简介  《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。 作者简介 W.Richard Stevens(1951-1999)是一位非常受人尊敬的专家,除了《TCP/IP详解》三卷本外,他还有其他两部最为畅销的作品:《UNIX环境高级编程》和《UNIX网络编程》(两卷本)。 目录 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 1.13 互联网 12 1.14 实现 12 1.15 应用编程接口 12 1.16 测试网络 13 1.17 小结 13 第2章 链路层 15 2.1 引言 15 2.2 以太网和IEEE 802封装 15 2.3 尾部封装 17 2.4 SLIP:串行线路IP 17 2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27 3.4 子网寻址 30 3.5 子网掩码 32 3.6 特殊情况的IP地址 33 3.7 一个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4章 ARP:地址解析协议 38 4.1 引言 38 4.2 一个例子 38 4.3 ARP高速缓存 40 4.4 ARP的分组格式 40 4.5 ARP举例 41 4.5.1 一般的例子 41 4.5.2 对不存在主机的ARP请求 42 4.5.3 ARP高速缓存超时设置 43 4.6 ARP代理 43 4.7 免费ARP 45 4.8 arp命令 45 4.9 小结 46 第5章 RARP:逆地址解析协议 47 5.1 引言 47 5.2 RARP的分组格式 47 5.3 RARP举例 47 5.4 RARP服务器的设计 48 5.4.1 作为用户进程的RARP服务器 49 5.4.2 每个网络有多个RARP服务器 49 5.5 小结 49 第6章 ICMP:Internet控制报文协议 50 6.1 引言 50 6.2 ICMP报文的类型 50 6.3 ICMP地址掩码请求与应答 52 6.4 ICMP时间戳请求与应答 53 6.4.1 举例 54 6.4.2 另一种方法 55 6.5 ICMP端口不可达差错 56 6.6 ICMP报文的4.4BSD处理 59 6.7 小结 60 第7章 Ping程序 61 7.1 引言 61 7.2 Ping程序 61 7.2.1 LAN输出 62 7.2.2 WAN输出 63 7.2.3 线路SLIP链接 64 7.2.4 拨号SLIP链路 65 7.3 IP记录路由选项 65 7.3.1 通常的例子 66 7.3.2 异常的输出 68 7.4 IP时间戳选项 69 7.5 小结 70 第8章 Traceroute程序 71 8.1 引言 71 8.2 Traceroute 程序的操作 71 8.3 局域网输出 72 8.4 广域网输出 75 8.5 IP源站选路选项 76 8.5.1 宽松的源站选路的traceroute程序示例 78 8.5.2 严格的源站选路的traceroute程序示例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值