距离项目开启已经过去了一段时间,这段时间内自己学习的内容也算挺多的,但是也较容易遗忘,之后应该在空余的时间内多翻翻博客,更加清楚传统计算机网络的运作。
由于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)请求。主机则会响应这个请求,告诉路由器那些组和源是感兴趣的。如果成员资格变动,主机也可以发送主动提供的报告。