来自 《计算机网络》之应用层
《计算机网络》之应用层
一、引言
应用层作为和用户交互的最高层,其任务是直接为用户的应用进程提供服务。应用层的具体内容就是规定应用进程在通信时所遵循的协议。因特网的应用层协议有很多,如最为熟知的HTTP(端口号80)和FTP(端口号21)、支持电子邮件的SMTP(端口号25)、域名系统DNS(端口号53)等。下面我们来简单介绍域名系统DNS、万维网WWW (HTTP)和电子邮件 (SMTP/POP3)。
二、域名系统
域名系统DNS (Domain Name System)用来把便于人们使用的机器名字转换为IP地址。
一个域名,以小数点为分隔符,从右往左依次是顶级域名、二级域名、三级域名……顶级域名TLD (TopLevel Domain)有265个(2006.12统计),如国家顶级域名cn/us/uk/jp等和通用顶级域名com/net/org/edu/gov等。注意,www.abc.cn中的”abc”比www.abc.com.cn中的”abc”级别要高。
下面介绍一下域名服务器 (name server)。
域名服务器分为四种:根/顶级/权限/本地域名服务器。前三种构成域名服务器的层次结构:根域名服务器最重要,处于最顶层,存储着所有顶级域名服务器的域名和IP地址;顶级域名服务器负责管理自己的所有二级域名;再往下就都是权限域名服务器的工作了,它管理自己负责的区。请注意,一个域可以分成一个或多个区,每个区由一个权限域名服务器管辖,如:域abc.com可分为区abc.com和区x.abc.com,这时域abc.com比区abc.com大,区abc.com管理域abc.com中除了区x.abc.com的其他内容。不过,当有对x.abc.com的请求时,会先访问区abc.com的权限域名服务器,然后此服务器再引导至区x.abc.com的权限域名服务器,并非直接访问区x.abc.com的权限域名服务器(因为会按顺序先解析到域abc.com)。
而本地域名服务器是干什么的呢?它是专门为一个ISP/大学/组织等的主机服务的。主机的DNS查询请求会统一发送到它的本地域名服务器受理,然后由这个本地域名服务器给予响应(递归查询 recursive query——全权委托此服务器)。“递归”体现在什么地方呢?当本地域名服务器不知道答案时,它会自己去向根域名服务器(一定是根)发送查询请求,反正事情都自己办了,最后给出主机一个结果,“办事还是挺认真负责的”。这与下面的不同。本地域名服务器向根域名服务器的查询是迭代查询 (iterativequery)——为了避免负载过大,根域名服务器只会告诉本地域名服务器下一步该向哪个顶级域名服务器查询,而不会自己包揽剩下的活。本地域名服务器根据它的“指路”,自己再发起下一步查询。后面的也都是迭代的。
其实根域名服务器并不是只能接受迭代查询——当本地域名服务器很“懒”时,就会向根域名服务器发送递归查询,根还是会接受而全权代理的。只是一般情况下都采用迭代查询罢了。
三、万维网
万维网WWW (World Wide Web)是一个大规模的、联机式的信息储藏所,简称Web。它的灵魂就是“链接”,使得因特网上的资源相互连系了起来。
万维网使用统一资源定位符URL (Uniform Resource Locator)来标识WWW上的各种文档,使用超文本传送协议HTTP (HyperText Transfer Protocol)实现链接(使用TCP协议),使用超文本标记语言HTML (HyperText Markup Language)统一显示不同的文档。
URL:<协议>://<主机>:<端口>/<路径>
HTTP:面向事务的无连接、无状态的协议,但使用TCP协议实现可靠传输。HTTP/1.0的特点是每请求一个文档都要重新建立TCP链接和释放TCP链接,而HTTP/1.1作出了改进,使用了持续连接——为TCP连接保留一段时间。
HTML就不说了,一般能看到这篇文章的人都至少了解一点基础,而且网上的教程太丰富了,请利用手中的万维网信息检索系统(分为全文检索和分类检索)自行百度吧!
四、电子邮件
最重要的是简单邮件传送协议SMTP (Simple Mail Transfer Protocol)和邮局协议POP3 (Post Office Protocol version 3) ,都使用TCP连接。前者用于发送方用户代理UA (User Agent)向发送方邮件服务器发送邮件和发送方邮件服务器向接收方邮件服务器发送邮件;后者用于接收方邮件服务器给收件人UA发送邮件。其实就是下面这张图,理解了就结束了。
最后再补充一点内容。由于SMTP只能传送可打印的7位ASCII码,因此提出通用因特网邮件扩充MIME (Multipurpose Internet MailExtensions),可以传送包括多媒体在内的多种数据。它并没有取代SMTP,而是在中间套了一层,如下图。
POP3也有缺点,就是它设置为只要收件方UA读取了邮件,就把邮件删除。因此提出了网际报文存取协议IMAP (Internet MessageAccess Protocol),不仅不主动删除,还提供各种管理功能。可以发现,现在的邮箱都是IMAP的。
DNS
TCP/IP笔记 四.应用层(1)——DNS
1. DNS
DNS(Domain Name System ):域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。
2. 域名结构
通常 Internet 主机域名的一般结构为:
主机名.三级域名.二级域名.顶级域名
2.1 顶级域名 TLD (Top Level Domain)
(1) 国家顶级域名 nTLD:如: .cn 表示中国,.us 表示美国,.uk 表示英国,等等。
(2) 国际顶级域名 iTLD:采用.int。国际性的组织可在 .int 下注册。
(3) 通用顶级域名 gTLD:最早的顶级域名是:
.com 表示公司企业
.net 表示网络服务机构
.org 表示非赢利性组织
.edu 表示教育机构(美国专用)
.gov 表示政府部门(美国专用)
.mil 表示军事部门(美国专用)
2.2 域名服务器
本地域名服务器应该是大型单位或当地的网络运营商拥有;主域名服务器应该归网通、电信这种等级的主干运营商或政府所有;
根域名服务器(Root Name Server)
根域名服务器是网络中的核武,根域名服务器出现故障将会导致大面积,如果所有的RNS瘫痪,那么整个DNS系统就无法工作。
全球的13组根域名服务器,名字从a到m。域名分别为a.rootservers.net,...,m.rootservers.net。RNS中1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本,由互联网域名与号码分配机构ICANN统一管理。
3. DNS解析
(1)host向本地域名服务器的查询一般都是采用递归查询(recursive query)
Recursive Query:如果host(主机)询问的LNS(Local Name Server 本地域名服务器)不知道被查询的IP地址,那么LNS就替代host向RNS查询。
(2)本地域名服务器向根服务器查询一般采用迭代查询(iterative query)
Iterative Query:当RNS收到LNS的查询时,其返回结果为:a.被查询的IP;b.应该向哪一个DNS查询的IP
4. 故障排查
4.1 nslookup(网路查询)
要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
(1)确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
(2)输入nslookup命令后回车,将进入DNS解析查询界面。
(3)命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202.106.0.20。
(4)接下来输入你无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明我们的计算机确实出现了DNS解析故障。
小提示:如果DNS解析正常的话,会反馈回正确的IP地址。
4.2 查询DNS服务器工作是否正常:
这时候我们就要看看自己计算机使用的DNS地址是多少了,并且查询他的运行情况。
(1)通过“开始->运行->输入CMD”后回车进入命令行模式。
(2)输入ipconfig/all命令来查询网络参数。
(3)在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,我们可以更换一个其他的DNS服务器地址即可解决问题。
(4)如果在DNS服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时我们需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
4.3 清除DNS缓存信息法:
(1)通过“开始->运行->输入CMD”进入命令行模式。
(2)在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
(3)执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。
(4)接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
4.4 修改HOSTS(主机)文件法:
(1)进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows 2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
(2)双击HOSTS文件,然后选择用“记事本”程序将其打开。
(3)之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127.0.0.1 localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
(4)将你希望进行DNS解析的条目添加到HOSTS文件中。具体格式是先写该域名对应的IP地址,然后空格接域名信息。
(5)设置完毕后我们访问网址时就会自动根据是在内网还是外网来解析了。
FTP
TCP/IP笔记 四.应用层(2)——FTP
1. FTP(File Transfer Protocol)
文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
1.1 网络环境下复制文件的复杂性:
(1) 计算机存储数据的格式不同。
(2) 文件的目录结构和文件命名的规定不同。
(3) 对于相同的文件存取功能,操作系统使用的命令不同。
(4) 访问控制方法不同。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。
2 两个链接
FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。
好处:
(1)使协议更加简单和更容易实现。
(2)在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。
3 FTP优缺点
3.1 优点:
(1)促进文件的共享(计算机程序或数据)
(2)鼓励间接或者隐式的使用远程计算机
(3)向用户屏蔽不同主机中各种文件存储系统的细节
(4)可靠和高效的传输数据
3.2 缺点:
(1)密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
(2)因为必须开放一个随机的端口以建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题通过使用被动模式的FTP得到了很大解决。
(3)服务器可能会被告知连接一个第三方计算机的保留端口。
FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。
HTTP
TCP/IP笔记 四.应用层(3)——HTTP
1. URL
URL(Uniform Resource Locator) 相当于一个文件名在网络范围的扩展。
1.1 格式
schema://host[:port#]/path/.../[?query-string][#anchor]
scheme 指定低层使用的协议(例如:http, https, ftp)
host HTTP服务器的IP地址或者域名(存放资源的地方)
port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。
path 访问资源的路径
query-string 发送给http服务器的数据
anchor- 锚
2. HTTP
HTTP (HyperText Transfer Protocol),超文本传送协议 。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
2.1 工作过程
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:
GET /chn/yxsz/index.htm。
(6) 服务器 给出响应,把文件 index.htm 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。
注:打开一个网页一般需要多次Request:
(1)首先浏览器获取到index.html页面,然后浏览器就会对index.html进行解析
(2)解析后发现其中还有很多信息,比如图片、css、js等其他引用信息,然后浏览器就会自动对这些信息发出Request请求
(3)当所有的数据都获取完毕后,浏览器就会把网页显示出来。(一般来说,当页面的大体框架获取完成后就会把页面显示出来)
2.2 特点
(1)面向事务的客户服务器协议。
(2)HTTP 1.0 协议是无状态的(stateless)。
同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.
(3)HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
(4)万维网浏览器就是一个 HTTP 客户,而在万维网服务器等待 HTTP 请求的进程常称为 HTTP daemon,有的文献将它缩写为 HTTPD。
(5)HTTP daemon 在收到 HTTP 客户的请求后,把所需的文件返回给 HTTP 客户。
2.3 HTTP消息格式
HTTP有2种消息:
Request(请求报文)——从客户向服务器发送请求报文。
Response(响应报文)——从服务器到客户的回答。
2.3.1 Request
先看Request 消息的结构, Request 消息分为3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之间有个空行, 结构如下图
第一行中的方法(Method)表示请求方法,比如"POST","GET", URL表示请求的资源, Http/version-number 表示HTTP协议的版本号
当使用的是"GET" 方法的时候, body是为空的。
方法:
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.
GET和POST的区别:
(1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
(2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
(3)GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
(4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
2.3.2 Response
状态码:
1xx 表示通知信息的,如请求收到了或正在进行处理。
2xx 表示成功,如接受或知道了。
3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
4xx 表示客户的差错,如请求中有错误的语法或不能完成。
5xx 表示服务器的差错,如服务器失效无法完成请求。
DHCP
DHCP应用层协议
首先,它是一种应用层协议,建立在 UDP 协议之上,所以整个数据包是这样的:
(1)最前面的"以太网标头",设置发出方(本机)的 MAC 地址和接收方(DHCP 服务器)的 MAC 地址。前者就是本机网卡的 MAC 地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
(2)后面的"IP 标头",设置发出方的 IP 地址和接收方的 IP 地址。这时,对于这两者,本机都不知道。于是,发出方的 IP 地址就设为0.0.0.0,接收方的 IP 地址设为 255.255.255.255。
(3)最后的"UDP 标头",设置发出方的端口和接收方的端口。这一部分是 DHCP 协议规定好的,发出方是 68 端口,接收方是 67 端口。
这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。
因为接收方的 MAC 地址是 FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的 IP 地址,才能确定是不是发过自己的。当看到发出方 IP 地址是0.0.0.0,接收方是 255.255.255.255,于是 DHCP 服务器知道"这个包是发过我的",而其他计算机就可以丢弃这个包。
接下来,DHCP 服务器读出这个包的数据内容,分配好 IP 地址,发送回去一个"DHCP 响应"数据包。这个响应包的结构也是类似的,以太网标头的 MAC 地址是双方的网卡地址,IP 标头的 IP 地址是 DHCP 服务器的 IP 地址(发出方)和 255.255.255.255(接收方),UDP 标头的端口是 67(发出方)和 68(接收方),分配给请求端的 IP 地址和本网络的具体参数则包含在 Data 部分。
新加入的计算机收到这个响应包,于是就知道了自己的 IP 地址、子网掩码、网关地址、DNS 服务器等等参数。
小结
之前总结HTTP的时候也顺便总结了DNS的工作原理,这里就不多说了,来看看其他常用的应用层协议吧。
FTP
FTP(文本传输协议)是因特网上使用得最狂饭的文件传送协议。FTP提供交互的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了个计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
FTP提供的功能:
1)提供不同种类主机系统
2)以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
3)以匿名FTP的方式提供公用文件共享能力
FTP采用客户/服务器工作方式,基于TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程有两大部分组成:一个主进程,负责接收心得请求;若干从属进程,负责处理单个请求。
FTP工作原理:
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
NOTE:
(1)PORT其实是Standard模式的另一个名字,又称为Active模式。中文意思是“主动模式。
(2)PASV也就是Passive的简写。中文就是“被动模式。
FTP在工作时使用两个并行的TCP连接,一个是控制连接(21端口),一个是数据连接(20端口)。使用两个不同的端口号可使协议更加简单和容易实现。
当NAT(Network Address Translation)设备以主动模式访问FTP服务器时,由于NAT设备不会聪明的变更FTP包中的IP地址,从而导致无法访问服务器。
电子邮件
简单介绍下电子邮件的发送过程:
1)发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP协议吧邮件传送给发送方邮件服务器。
2)发送方邮件服务器将邮件放入邮件缓存队列中,等待发送。
3)运行在发送方邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收方邮件服务器的SMTP服务器进程发起建立TCP连接。
4)TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接。
5)运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。
6)收信人在打算收信时,调用用户代理,使用POP3协议将自己的邮件从接收方邮件服务器的用户邮箱中的取回。
SMTP
SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。基于TCP连接,端口号是25.
SMTP通信(如发送端邮件服务器与接收端服务器的通信)的过程如下。
1)发送端邮件服务器(以下简称客户端)与接收端邮件服务器(以下简称服务器)的25号端口建立TCP连接。
2)客户端向服务器发送各种命令,来请求各种服务(如认证、指定发送人和接收人)。
3) 服务器解析用户的命令,做出相应动作并返回给客户端一个响应。
4)2)和3)交替进行,直到所有邮件都发送完或两者的连接被意外中断。
POP3
基于TCP连接,端口号是110.
用户从邮件服务器上接收邮件的典型通信过程如下。
1)用户运行用户代理(如Foxmail, Outlook Express)。
2)用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连接。
3)客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。
4)服务端解析用户的命令,做出相应动作并返回给客户端一个响应。
5)3)和4)交替进行,直到接收完所有邮件转到步骤6),或两者的连接被意外中断而直接退出。
6)用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。
IGMP
IGMP(Internet Group Management Protocol)作为因特网组管理协议,是TCP/IP 协议族中负责IP 组播成员管理的协议,它用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IP 主机通过发送IGMP 报文宣布加入某组播组;本地组播路由器通过周期性的发送IGMP 报文轮询本地网络上的主机,确定本地组播组成员信息。
工作原理
IGMP 协议是IP 组播在末端网络上使用的主机对路由器的信令机制,分为两个功能部分:主机侧和路由器侧。IGMP 工作机制如下所述:
1) 接收者主机向所在的共享网络报告组成员关系。
2)处于同一网段的所有使能了IGMP 功能的组播路由器选举出一台作为查询器,查询器周期性地向该共享网段发送组成员查询消息。
3) 接收者主机接收到该查询消息后进行响应以报告组成员关系。
4) 网段中的组播路由器依据接收到的响应来刷新组成员的存在信息。如果超时无响应,组播路由器就认为网段中没有该组播组的成员,从而取消相应的组播数据转发。
5) 所有参与组播传输的接收者主机必须应用IGMP 协议。主机可以在任意时间、任意位置、成员总数不受限制地加入或退出组播组。
6)支持组播的路由器不需要也不可能保存所有主机的成员关系,它只是通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而各主机只需要保存自己加入了哪些组播组。
主机加入组播组的基本过程如下:
1)IGMP 查询器(RouterB)周期性地向共享网段内所有主机以组播方式(目的地址为组播地址)发送普遍组Query 查询消息。该报文的目的地址为224.0.0.1,表示该网段上的所有主机和路由器。
2)网段内所有主机都接收到该普遍组查询消息。如果主机(如HostB 和HostC)希望加入某组播组G1,则以组播方式发送Report 报告。该报文的目的地址为224.0.0.1,报文中携带组播组G1 的地址信息。
3) 网段中所有主机和路由器都接收到该Report 报告,并获知组播组G1 地址信息,此时网段中其它也希望加入该组播组G1 的主机将不再发送针对相同组播组的Report 报告。同时,网段中预备加入另一组播组G2 的主机发送针对组播组G2 的Report 报告以响应普遍组查询消息。
4)经过查询和响应过程后,IGMP 路由器了解到本网段内存在组播组G1 对应的组播组成员,则由组播路由协议生成(*,G1)组播转发项并以此作为组播数据的转发依据。之后,组播路由协议将发起上游路由更新以维护组播转发树。
5)组播源发出的组播数据经过组播路由到达IGMP 路由器,如果IGMP 路由器上存在(*,G1)组播转发项,则转发该组播数据到此共享网段,G1 组播组成员主机接收该数据。
6)IGMPv1 中没有专门定义离开组播组的消息。当主机离开某组播组后,将不再发送以此组播组地址为目的地址的Report 报告。当网段中不再存在该组播组成员后,IGMP 路由器将不能收到任何针对此组播组的Report 报告,则IGMP 路由器删除该组播组对应的转发项。