距离项目开启已经过去了一段时间,这段时间内自己学习的内容也算挺多的,但是也较容易遗忘,之后应该在空余的时间内多翻翻博客,更加清楚传统计算机网络的运作。

由于51要出去玩,更要好好利用好最近的时间。完成自己的每周规划。

并且考虑到最近身体比较虚弱…,应该更加早睡早起!

加油!

广播和本地组播(IGMP和MLD)

在引言中有下面一些比较重要的概念:

广播和组播为应用程序提供了两种服务

  • 数据分组交付至多个目的地 //顾名思义
  • 通过客户端请求/发现服务器 //类似于DHCP

一个广播请求会影响在广播范围内所有可以到达的主机,而组播只影响那些可能对该请求有兴趣的主机

注意,在广播的更高开销和简单性以及组播的效率改善和更多的复杂性之间存在一种平衡。


广播

广播是指将报文发送到网络中的所有可能的接收者。很容易的能够理解广播的概念,就像你拿着大喇叭对所有人喊话一样。所以它并不需要ARP请求来确定每个目的地的MAC地址。

一般而言,使用广播的应用程序使用UDP协议,然后调用一组普通的API来发送流量。并且我们在打算发送广播数据报的时候,要加上一些特殊的标志,这样确认后可以防止误操作而产生大量的广播流量,造成网络拥塞。


组播

组播的意思就是向一个组发送流量。

组播状态必须由主机和路由器来保持,定期的进行更新和删除操作,这样就能够很好的维护一个组。那他是如何更新的呢?我们下面的协议会讲到~

主机地址过滤

过滤发生在每个主机的网络接口卡(NIC)上,

NIC指接收目的地址是接口的硬件地址或者广播地址的那些帧,如果涉及到组播帧,情况会更复杂。它往往被分成两类:

  • 执行基于组播硬件地址的散列值的过滤 //存在散列冲突
  • 侦听组播地址的一张有限表 //超过表所能容纳的更多组播地址时,NIC进入“组播混杂”模式,即所有的流量都会交给主机软件。

组播地址和48位的硬件地址的映射是不唯一的,所以进一步的过滤还是必须的。

这两种类型说到底还是会有一些不必要的数据报被接受,所以还需要设备驱动程序或者高层软件执行检查。

如下图所示:

当NIC接收到帧的时候,它首先会检查是否接收该帧(即检查CRC,MAC地址等),然后交付给设备驱动程序,设备驱动程序查明该帧的类型,例如IP数据包,他就传递到IP层。IP层过滤完成后,便传到TCP或UDP等。然后就查询端口号。其实就是数据报在Internet主机上分解的过程, 如下图:


互联网组管理协议和组播侦听发现协议

两个协议都用于允许组播路由器了解附近主机感兴趣的组,区别在于IPv4使用的是互联网组管理协议(IGMP),而IPV6使用的是组播帧听发现协议(MLD

如何运作

组播路由器定期向每个连接的子网发送IGMP(MLD)请求。主机则会响应这个请求,告诉路由器那些组和源是感兴趣的。如果成员资格变动,主机也可以发送主动提供的报告。

第九章 广播和本地组播(IGMP和MLD)的更多相关文章

  1. 《TCP/IP 详解 卷1:协议》第 9 章:广播和本地组播(IGMP 和 MLD)

    我已经懒了,卷一已经是去年年底看完的,但怎么说卷一的坑开了就要填完啊-- 广播和本地组播(IGMP 和 MLD) 引言 有 4 种 IP 地址,单播(unicast).任播(anycast).组播(m ...

  2. TCP/IP 笔记 - 广播和本地组播

    在之前第二章介绍IP寻址的时候有介绍到,IP地址有4种:单播.组播.广播.任播. 单播,客户端与服务器之间点到点连接通信: 组播,在发送者和多个接收者(如某个特定的分组)之间实现点对多点的连接通信: ...

  3. Java单播、广播、多播(组播)---转

    一.通信方式分类 在当前的网络通信中有三种通信模式:单播.广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点. 单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 ...

  4. Java单播、广播、多播(组播)

    一.通信方式分类 在当前的网络通信中有三种通信模式:单播.广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点. 单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 ...

  5. apue第九章之孤儿进程组

    1. 为什么会有孤儿进程组的概念,APUE没直接写,但是GNU有规定: 孤儿进程组不可以获得终端,这是为了保证控制进程死掉后他的终端可以安全分配给新session.posix要求向新孤儿进程组中停止状 ...

  6. 组播和广播的概念,IGMP的用途

    1.组播和广播的概念 1) 组播 主机之间的通讯模式,也就是加入了同一个组的主机可以接收到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据. 主机可以向路由器请求加入或退出某个 ...

  7. MAC地址的介绍(单播、广播、组播、数据收发)

    MAC地址组成 网络设备的MAC地址是全球唯一的.MAC地址长度为48比特,通常用十六进制表示.MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueI ...

  8. 组播基本概念、IGMP、IGMP监听学习笔记

    前言 一直对组播这个概念迷迷糊糊,特别是交换机处理组播的方式,非常想搞懂但是懒癌发作.这几天终于耐心地看了下有关组播的资料,大致了解了一下同一广播域内组播的相关知识.组播占了计算机网络的一大部分,特别 ...

  9. Android设备一对多录屏直播--(UDP组播连接,Tcp传输)

    原文:https://blog.csdn.net/sunmmer123/article/details/82734245 近期需要学习流媒体知识,做一个Android设备相互投屏Demo,因此找到了这 ...

随机推荐

  1. nginx架构分析之 模块化

    Nginx涉及到的模块分为核心模块.标准HTTP模块.可选HTTP模块.邮件服务模块以及第三方模块等五大类. 核心模块 核心模块是指Nginx服务器正常运行时必不可少的模块,它们提供了Nginx最基本 ...

  2. windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

  3. 共变导数(Covariant Derivative)

    原文链接 导数是指某一点的导数表示了某点上指定函数的变化率. 比如,要确定某物体的速度在某时刻的加速度,就取时间轴上下一时刻的一个微小增量,然后考察速度的增量和时间增量的比值.如果这个比值比较大,说明 ...

  4. 创建git及其初始化

    创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit 初始化一个 ...

  5. Linux利用i节点删除乱码文件

    Linux删除乱码文件 当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了. 但是我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件. ...

  6. 如何安装Ruby(Windows)

    Ruby解释器的安装 1.Windows平台 想尽快安装并运行Ruby,可遵循如下步骤: 1.启动Web浏览器,访问 http://www.ruby-lang.org/en/downloads/ 2. ...

  7. 旧文备份:VC中嵌入NASM编写的汇编函数

    在公司开发的RT下没法使用C库,并且替代库函数没有几个,需要用到setjmp和longjmp函数,没办法,只能自己想办法了,上sourceforge淘换到一个小日本的工程,提供这两个函数的替代源码,名 ...

  8. redis事务中的WATCH命令和基于CAS的乐观锁

    转自:http://blog.sina.com.cn/s/blog_ae8441630101cgy3.html 在Redis的事务中,WATCH命令可用于提供CAS(check-and-set)功能. ...

  9. python基础回顾笔记

    1.知道了什么是编程语言 2.知道了python.C#.Java都是语言的种类 3.python:有很多种 cpython.pypy.jpython... 4.python的执行方式有两种: 解释器 ...

  10. ethereum(以太坊)(十二)--应用(二)__投票(基础总和)

    编写应用合约之前,先弄清它的逻辑,有助于我们更好的部署合约 pragma solidity ^0.4.21; pragma experimental ABIEncoderV2; contract vo ...