单播,多播,广播的介绍

单播(unicast)

单播是说,对特定的主机进行数据传送。例如给某一个主机发送IP数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说,就是具体网卡的MAC地址(不是FF-FF-FF-FF-FF-FF,这是广播地址)。现在的具有路由功能的主机应该可以将单播数据定向转发,而目的主机的网卡可以过滤掉和自己MAC地址不一致的数据。

广播(broadcast)

广播是主机针对某一个网络上的所有主机发送数据包。这个网络可能是网络,可能是子网,还可能是所有的子网。如果是网络,例如A类网址的广播就是 netid.255.255.255,如果是子网,对应的广播地址是将子网的网络地址的主机位全部置1;如果是所有的子网(以B类IP地址为例)则是则是 netid.netid.255.255。广播所用的MAC地址FF-FF-FF-FF-FF-FF。网络内所有的主机都会收到这个广播数据,网卡只要把 MAC地址为FF-FF-FF-FF-FF-FF的数据交给内核就可以了。一般说来ARP,或者路由协议RIP应该是以广播的形式播发的。

多播(multicast)

可以说广播是多播的特例,多播就是给一组特定的主机(多播组)发送数据,这样,数据的播发范围会小一些(实际上播发的范围一点也没有变小),多播的MAC地址是最高字节的低位为一,例 如01-00-00-00-00-00。多播组的地址是D类IP,规定是224.0.0.0-239.255.255.255。

多播地址分类:

  • 局部多播地址:在224.0.0.0~224.0.0.255之间,这是为路由协议和其他用途保留的地址,路由器并不转发属于此范围的IP包。
  • 预留多播地址:在224.0.1.0~238.255.255.255之间,可用于全球范围(如Internet)或网络协议。
  • 管理权限多播地址:在239.0.0.0~239.255.255.255之间,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。
  • 属于永久组的地址:

    224.0.0.1   所有组播主机

    224.0.0.2   所有组播路由器

    224.0.0.4    DRMRP路由器

    224.0.0.5    所有OSPF的路由器

    224.0.0.6    OSPF指派路由器

    224.0.0.9    RPIv2路由器

    224.0.0.10  EIGRP路由器

    224.0.0.13  PIM路由器

    224.0.0.22   IGMPv3

    224.0.0.25   RGMP

    224.0.1.1      NTP网络时间协议

多播ip地址和mac地址的对应关系如下:

与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff。

多播组的地址是D类IP,规定是224.0.0.0-239.255.255.255。

这种地址分配将使以太网多播地址中的23bit与IP多播组号对应起来,通过将多播组号中的低位23bit映射到以太网地址中的低位23bit实现,如下图所示:

可以看到,ip地址和mac地址的对应不是一一对应的,主机还是要对多播数据进行过滤。

一些验证

首先我ping一下自己所在的子网的某一台主机:

ping 192.168.11.1

正在 Ping 192.168.11.1 具有 32 字节的数据:
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time<1ms TTL=255
Reply from 192.168.11.1: bytes=32 time=1ms TTL=255

可以看到,机器返回的是一台主机的回应结果,进而推测,如果我ping一个广播地址呢?结果如下

Reply from 192.168.11.9: bytes=32 time=1ms TTL=255
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64
Reply from 192.168.11.218: bytes=32 time<1ms TTL=64
Reply from 192.168.11.174: bytes=32 time<1ms TTL=64

可以看到,ping返回了一些随机的ip的结果,这些ip都是与主机在同一子网内的ip。我们可以看到,广播实际上是给处于子网内的所有ip发出数据。

IGMP协议:Internet组管理协议

IGMP的作用在于,让其他所有需要知道自己处于哪个多播组的主机和路由器知道自己的状态。一般多播路由器根本不需要知道某一个多播组里面有多少个主机,而只要知道自己的子网内还有没有处于某个多播组的主机就可以了。只要某一个多播组还有一台主机,多播路由器就会把数据传输出去,这样,接受方就会通过网卡过滤功能来得到自己想要的数据。为了知道多播组的信息,多播路由器需要定时的发送IGMP查询,IGMP报文封装在ip数据报中,各个多播组里面的主机要根据查询来回复自己的状态。路由器来确定有几个多播组,自己的转发操作如何进行。

这种查询回应数据报的TTL一般是1,数据报被限定在子网内,而且不产生ICMP超时差错。

转载于:https://www.cnblogs.com/maleyang/articles/7290807.html

读书笔记九:TCP/IP详解之广播和多播,IGMP协议相关推荐

  1. TCP/IP详解 (12)广播和多播

    12 广播和多播 12.1 引言 在第1章中我们提到有三种IP地址:单播地址.广播地址和多播地址.本章将更详细地 介绍广播和多播. 广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说 ...

  2. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址,IP 则承载要发 送的消息.数据链路层可以从 ARP 得到数据的传送信息,而从 ...

  3. 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  4. 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  5. 《TCP/IP详解卷一》读书笔记九:IGMP和MLD

    由于工作需要和知识储备,重新系统地学习网络方面的知识,先从<TCP/IP详解卷一>开始,对看书的大体内容进行简单整理,在这里进行记录.记录只是对知识的整理过程,并不追求面面俱到. 概念 I ...

  6. 《TCP/IP详解卷1:协议》读书笔记

    <TCP/IP详解卷1:协议>读书笔记 - QingLiXueShi - 博客园 https://www.cnblogs.com/mengwang024/p/4425834.html &l ...

  7. 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议---读书笔记

    <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议---读书笔记 1.引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站, ...

  8. TCP/IP详解卷一读书笔记一

    TCP/IP详解卷一:第一章 一.分层   1.网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.   疑点 介质访问控制方法   多个主机需要通过一条"共享介质"发送 ...

  9. TCP/IP详解学习笔记

    [TCP/IP详解学习笔记(1)基本概念] 为什么会有TCP/IP协议? 计算机型号多种多样,并且运行于不同操作系统.虽然电线把计算机连接到了一起,但是这些计算机无法"交流",所以 ...

最新文章

  1. 虚拟机ubuntu搭建ftp服务器配置,虚拟机VMware15 Ubuntu18.04 搭建FTP服务器
  2. 阳泉2021高考成绩查询时间段,阳泉高考时间,2021年阳泉高考具体时间科目安排
  3. C# 创建Word项目标号列表、多级编号列表
  4. JVM之Java栈Java stack
  5. OpenGL-坐标系概念
  6. 我点击一个单选框时另外一个单选框里的内容属性隐藏掉_一个交通工程专业硕士研究生的总结与独白(二):交通生成预测及TransCAD操作...
  7. 十条有用的 Go 技术
  8. 零基础学python图文版-零基础学Python(图文版)
  9. 2017百度之星资格赛:1001. 度度熊保护村庄(floyd最小环)
  10. 用X264编码以后的H264数据
  11. 手机号码状态检测(空号检测)的原理
  12. MySQL8中文手册【持续更新】
  13. Code For Better 谷歌开发者之声——Flutter - Google 开源的移动 UI 框架
  14. 奇安信渗透测试面试题库_奇安信2020渗透测试工程师笔试题
  15. 转载《蜗居》评论 自文学城
  16. 35岁后,互联网数据分析人的出路在哪里?
  17. java连接mongo数据库,并执行db.runCommand命令
  18. 360度全景图是如何生成的?
  19. VS code开发工具的使用教程
  20. 闲聊2022卡塔尔世界杯

热门文章

  1. org.apache.commons.lang.StringUtils
  2. PHP100视频教程2012版解压密码
  3. 一步一步掌握设计模式一(最简单的开始--单例模式^_^)
  4. Python OpenCV人脸识别案例
  5. VUE技术栈学习笔记(https://segmentfault.com/a/1190000012530187)
  6. JAVA中构造器和方法的区别点
  7. 线程入门-使用Thread类
  8. iOS中 动态启动图GIF的简单设置 韩俊强的博客
  9. linux spinlock mutex semaphore
  10. python学习之--习题集