一、引言

三种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

TCP/IP——广播和多播(组播)相关推荐

  1. 【TCP/IP】单播与组播

    [TCP/IP]单播与组播 三种IP地址: 单播地址.广播地址和组播地址 广播和多播仅应用于UDP. TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播.只 ...

  2. 单播、广播、多播(组播)的概念和区别

    单播.广播.多播(组播)的概念和区别 简单理解如下: 1.一台机器和一台机器通信这是单播. 2.一台机器发出的数据包能被多台机器收到这就叫组播. 一个机器发送,多台机器接收,但是又不同于广播, 发送端 ...

  3. 广播和多播(组播)的区别

    文章目录 1 定义 2 广播 3 多播 1 定义 广播,简单来说就是一对所有,网络对每一台主机发出的信号都无条件转发,即将数据发送到网络中的每一个主机. 多播,一对一组,只有加入了同一个组的主机才能接 ...

  4. android multicast(组播)发送端和接收端源代码,android multicast 多播(组播)问题

    有谁遇到过同样问题的可以探讨下,或者已经解决问题的,能够指导下我 获取组播锁 private  InetAddress   group; WifiManager  wm=(WifiManager)ge ...

  5. 总结:TCP/IP 详解(卷1: 协议)--第九章 广播和本地组播(IGMP 和 MLD)

    第九章  广播和本地组播(IGMP 和 MLD) 一般来说,广播是指向网络上的所有节点发送流量.在 TCP/IP 的背景下,广播是指向网络或子网中的所有主机发送一个数据分组,通常是本地连接的网络.组播 ...

  6. 【计算机网络】网络层 : IP 组播 ( IP 数据报传输方式 | 组播 IP 地址 | 组播 MAC 地址 | IGMP 协议 | 组播路由选择协议 )

    文章目录 一.IP 数据报传输方式 二.组播 IP 地址 三.组播 MAC 地址 四.IGMP 协议 五.组播路由选择协议 一.IP 数据报传输方式 IP 数据报传输方式 : ① 单播 : 发送数据到 ...

  7. Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播

    简 述: 了解Upd通信之QUdpSocket的unicast单播.broadcast广播.multicast组播,书写一个简单地例子:然后写了一个小的Qt例子,用来实现和验证它的空间的一些属性和功能 ...

  8. TCP/IP详解卷一之广播和本地组播(IGMP和MLD)

    1 引言 -广播和组播为应用程序提供了两种服务: · 数据分组交付至多个目的地: · 通过客户端请求/发现服务器,如DHCP. -广播比较简单,但开销更高:组播比较复杂,但效率更高. -IPv4支持广 ...

  9. 【Socket网络编程】5.单播、多播(组播)、广播

    [单播].[多播(组播)].[广播] https://blog.csdn.net/daaikuaichuan/article/details/83474089 ####[单播] 用于两个主机之间的端对 ...

最新文章

  1. pytorch cross_entropy
  2. 列举出php代码级的优化技巧,php 代码优化的42条建议 推荐
  3. centos7 无法启动网络(service network restart)错误解决办法
  4. android异步网络连接开源:Android Asynchronous Http Client
  5. 网络分析(带权并查集)
  6. JavaFX鼠标拖拽事件
  7. java中简单的if语句_java中if语句的写法
  8. linux ioctl 设备只读,linux – 尝试SSH时设备的ioctl不合适
  9. Android 系统(68)---使用Xshell在Windows系统和Linux系统之间进行文件传输
  10. java sort 插入排序_插入排序(insertSort)
  11. bzoj 3580 冒泡排序 乱搞+思维
  12. linux司机售票员问题
  13. 打破国外垄断,开发中国人自己的编程语言(1):编写解析表达式的计算器
  14. matlab 三角函数方程,Matlab关于含有三角函数的方程的求解
  15. 台式计算机网卡驱动不能正常使用,电脑网卡驱动程序不正常怎么办 网卡驱动程序不正常解决方法...
  16. caxa发生文件读写异常_文件和异常
  17. Emacs基础使用教程及常见命令整理
  18. 国内最长的地铁投影画廊在上海地铁诞生
  19. 吴恩达机器学习ex2:逻辑回归
  20. Opencv+ZBar识别条形码、二维码

热门文章

  1. 十大最流行PHP框架排名
  2. 架构师必备:HBase行键设计与应用
  3. Postgres -- 如何理解 select into 如何将查询结果自动生成到一张新表当中
  4. cmd查看所有数据库 db2_DB2 常用操作命令集合
  5. linux的ip地址、防火墙设置
  6. c#读取excel两列数据并绘制xy曲线_用Python轻松搞定Excel中的20个常用操作
  7. HttpClient Cookies设置
  8. 2016计算机应用实操题,2016计算机一级MS office操作题及答案
  9. 解密:全球最大智能手机厂商“发币”计划
  10. 关于失物招领的html网页,notice.html