1、广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对

2、通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的或者为广播地址的帧(现在有些也能接收多播地址),然后将它传输给设备驱动

3、广播的问题在于它给那些对广播数据不感兴趣的主机增加了处理负担(需要通过网卡,驱动,IP等一层层的判断),而多播的出现恰好解决了这些问题。通常一台主机会被指定加入一个或多个多播组,网卡也会被告知自己属于哪几个多播组,于是只有属于那几个组的多播数据帧才会被接受,从而大大降低了处理的开销

4、广播地址类型:

1)limited broadcast:255.255.255.255,这个地址用于在主机配置期间,即主机可能还不知道自己的子网掩码甚至IP地址的时候,作为IP数据报中的目的地址,将想要发送的数据发送到本网段中的每台主机。需要注意的是,在任何情况下,它都不会被路由器转发。

2)Net-directed Broadcast:此类地址的主机号字段全置为1,网络号字段为目的网络的网络地址。用于将数据报发送给指定网络的每台主机

3)Subnet-directed Broadcast:此类地址的主机号字段全为1,并且需要知道对应子网的子网掩码,因为子网掩码不同,可能就不再是一个广播地址了。用于将数据发送到指定子网的每台主机

4)All-subnets-directed Broadcast:与Subnet-directed Broadcast不同的是,该广播地址的子网字段也全部置1,表示将数据发送到该网络的所有子网,但是现在一般都不使用这类地址

5、IP地址分类中的D类地址就是多播地址,用点分十进制表示就是224.0.0.0~239.255.255.255,通常那些监听同一个多播地址的主机构成的集合称为host group。host group 中的主机可以跨越多个网络,并且主机可以随时选择加入或退出host group。即使一台主机不属于该host group,也能向group发送信息。

6、类似于TCP/IP中的众所周知的端口,多播地址中也有众所周知的地址用于特定的服务

7、以太网中的MAC地址对应IP多播地址的部分为01:00:5e:00:00:00~01:00:5e:7f:ff:ff,通常在发送一个多播的IP数据报,进入链路层需要确定目的MAC地址时,通常就将IP地址的右23位嵌入到相应的MAC地址中即可,如下图所示。从图中可以看出,IP地址和MAC地址并不是一一对应的,因为IP地址的第5~9位是不确定的。因此在网卡接受完数据帧后,设备驱动层和IP层仍然需要进行筛选操作。

8、多播过程:发送进程将目的地址定为一个组播地址,源主机的设备驱动将其转换成相应的MAC地址并且将其发送。接收端的进程需要告诉它的IP层它想要接受某个组播地址的数据,相应的设备驱动就设置能够接受相应MAC地址的数据帧。这样就完成了通信双方的设置,而这个过程叫做“joining a multicast group”。与UDP不同的是,通常一个多播的IP数据报能够被传输给同一台主机的多个进程,只要它们都加入了上文所说的multicast group就行

9、IGMP(Internet Group Management Protocol):该协议的作用简而言之就是支持多播的路由器为了知道将多播数据报发往哪些端口,所以它需要定期从各个端口发送询问报文,等待主机回答它们各自属于哪些multicast group,由此构建出一张端口和多播地址的关联表,从而能够对多播数据进行分发,解决了跨网段的多播问题。

10、通常主机需要维护一张用于多播的表,表中的内容有组播地址以及对应的网络接口(组播地址与网络接口绑定)以及加入相应组播的进程数目。每当有进程加入一个新的group时,主机就会从相应的网络接口发送一个通知告知组播路由器和其他组播主机,但是以后的进程再加入以及任何进程的退出都不再播报通知。

11、地址224.0.0.1被称为all-hosts group address,询问IGMP报文的目的地址就是它。它的多播组的成员为所属物理网络中所有参与多播的主机(即有进程在参与多播的主机)和路由器。地址在224.0.0.0~224.0.0.255的多播地址要求多播的距离不能超过一跳,即多播路由器不能转发该地址的多播IP数据报,即使该数据报中的TTL不为0

《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP的更多相关文章

  1. 《TCP/IP详解》读书笔记

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  3. TCP/IP详解 卷一(第十三章 IGMP:Internet组管理协议)

    本章将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP) 它让一个物理网络上的所有系统知道主机当前所在的多播组.多播路由器需要这些信息以便知道多播数据报应该向那些接口转发. 跟I ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  5. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  6. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——02

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

随机推荐

  1. solr 学习片段

    全文检索技术——Solr 1 主要内容 1.站内搜索技术选型 2.什么是solr Solr和lucene的区别 3.solr服务器的安装及配置 Solr整合tomcat Solr的演示 4.维护索引 ...

  2. Python科学计算——前期准备

    1.开发环境搭建 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公 ...

  3. ASP.NET Web API获取Model元数据

    using System; using System.Web.Http; using Common; namespace ConsoleApp { internal class Program { p ...

  4. javascript-this,call,apply,bind简述3

    上节介绍了call()和apply()的用法,这节再讨论一下arguments参数和bind函数的用法以及函数柯里化就算是完结了. bind()函数 先看定义: bind()方法会创建一个函数的实例, ...

  5. Lucene实战构建索引

    搭建lucene的步骤这里就不详细介绍了,无外乎就是下载相关jar包,在eclipse中新建java工程,引入相关的jar包即可 本文主要在没有剖析lucene的源码之前实战一下,通过实战来促进研究 ...

  6. 错误:找不到类org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  7. IOS 杂笔-18 (let 与 var)

    var 是 variable的缩写形式,是变量的意思 ,是可改变的,并不是数据类型. let 是常量的意思,不可改变的.

  8. Android 网络编程基础之简单聊天程序

    前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...

  9. UI交互设计的网站

    1.http://www.xueui.cn/other-tutorials/ui-interaction-design.html 2.http://www.3lian.com/edu/2015/12- ...

  10. Objective-C之@class的使用

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...