2020/1/301计算机网络教程(第2版)第9章应用层应用层是网络体系结构中的最高层。应用层直接面向用户应用,为用户提供对网络资源方便的访问服务。每个应用层协议都是为了解决某一类应用问题,如文件传输、电子邮件、网站访问等等。应用层的具体内容就是规定应用进程在通信时所遵循的协议。2020/1/302第9章应用层9.1域名系统DNS9.1.1域名系统概述9.1.2因特网的域名结构9.1.3用域名服务器进行域名解析9.2文件传送协议9.2.1概述9.2.2FTP的基本工作原理9.2.3简单文件传送协议TFTP9.3远程登录TELNET9.4电子邮件9.4.1概述9.4.2简单邮件传送协议SMTP9.4.3电子邮件的信息格式9.4.4邮件读取协议POP3和IMAP9.4.5通用因特网邮件扩充MIME9.5万维网域名系统DNS9.1.1域名系统概述9.1.2因特网的域名结构9.1.3用域名服务器进行域名解析2020/1/304应用层协议的特点每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。2020/1/305网络应用模式应用进程之间的通信模式通常可以分为两大类:客户/服务器模式(C/S模式,即Client/Server模式)对等模式(P2P模式,即Peer-to-Peer模式)。绝大多数的应用进程采用的是客户/服务器模式2020/1/3061.客户服务器方式客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户/服务器模式所描述的是进程之间服务和被服务的关系。客户是服务的请求方,服务器是服务的提供方。1.客户/服务器模式运行客户程序资源子网通信子网运行服务器程序AB客户服务器客户A向服务器B发出请求服务,而服务器B向客户A提供服务。2020/1/308客户软件的特点被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。不需要特殊的硬件和很复杂的操作系统。2020/1/309服务器软件的特点一种专门用来提供某种服务的程序,可同时处理多个客户端的请求。系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要事先知道客户程序的地址。一般需要强大的硬件和高级的操作系统支持。2020/1/30102.对等模式对等模式(peer-to-peer,简写为P2P)是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。对等模式从本质上看仍然是使用客户/服务器模式,只是对等连接中的每一个主机既是客户又同时是服务器。边缘子网通信子网运行P2P程序运行P2P程序DCEF运行P2P程序运行P2P程序图对等模式2020/1/30129.1.1域名系统概述DNS是域名系统(DomainNameSystem)的缩写,指在Internet中使用的分配名字和地址的机制。域名系统允许用户使用友好的名字而不是难以记忆的数字——IP地址来访问Internet上的主机。名字到IP地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。域名只是个逻辑概念,并不代表计算机所在的物理地点。DNS服务主要基于UDP来实现,端口号=53。2020/1/30139.1.2因特网的域名结构因特网采用了层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。在这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。域名的结构由标号序列组成,各标号之间用点隔开:….三级域名.二级域名.顶级域名各标号分别代表不同级别的域名。例如:顶级域名TLD(TopLevelDomain)(1)国家顶级域名nTLD:如:.cn表示中国,.us表示美国,.uk表示英国,等等。(2)通用顶级域名gTLD:最早的通用顶级域名是:.com(公司和企业).net(网络服务机构).org(非赢利性组织).edu(美国专用的教育机构).gov(美国专用的政府部门).mil(美国专用的军事部门).int(国际组织)2020/1/3015新增加了下列的通用顶级域名.aero(航空运输企业).biz(公司和企业).cat(加泰隆人的语言和文化团体).coop(合作团体).info(各种情况).jobs(人力资源管理者).mobi(移动产品与服务的用户和提供者).museum(博物馆).name(个人).pro(有证书的专业人员).travel(旅游业)因特网的名字空间comnetorgedugovmilcoopbizinfoaerointcnuk…hkjsshbjorgnetgoveducomac…pkufudansjtutsinghua…树根cctvibmhpmot…顶级域名二级域名三级域名mailep四级域名mailcsnetl……seu2020/1/30179.1.3用域名服务器进行域名解析所谓域名服务器,实际上就是装有域名系统的主机。它是一种能够实现名字解析(nameresolution)的分层结构数据库。一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的授权域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区可能等于或小于域,但一定不能大于域。区的不同划分方法举例域163.com区163.com163xuvwty(a)区=域(b)区域域163.com区163.com区y.163.comabcxuvwtycomeduorg根comeduorg根2020/1/3019四种不同类型的域名服务器根域名服务器(rootnameserver)顶级域名服务器(即TLD服务器)权限域名服务器(authoritativenameserver)本地域名服务器(localnameserver)2020/1/3020树状结构的DNS域名服务器根域名服务器org域名服务器com域名服务器edu域名服务器…y.abc.com域名服务器abc公司有两个权限域名服务器权限域名服务器根域名服务器顶级域名服务器abc.com域名服务器2020/1/3021本地域名服务器本地域名服务器对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器。这种域名服务器有时也称为默认域名服务器。2020/1/3022根域名服务器——最高层次的域名服务器——根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。在因特网上共有13个不同IP地址的根域名服务器,它们的名字是用一个英文字母命名,从a一直到m(前13个字母)。2020/1/3023顶级域名(TLD)服务器这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)。2020/1/3024权限域名服务器这就是前面已经讲过的负责一个区的域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。当一个授权域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个授权域名服务器。实际上,许多域名服务器同时充当本地域名服务器和授权域名服务器,所有授权域名服务器总是能够将其管辖的计算机名转换为该计算机的IP地址。2020/1/3025路由器之间的协作从上面我们可以看出,分散在世界各地的域名服务器形成了一个联合协作的系统,需要时域名服务器之间可以协作完成解析,为此:每个域名服务器都知道所有的根域名服务器的IP地址;每个根域名服务器知道所有的顶级域名服务器的IP地址;每个顶级域名服务器知道其下所有二级授权域名服务器的IP地址;每个授权域名服务器又知道其下一级域名服务器的IP地址。2020/1/3026域名的解析过程主机向本地域名服务器的查询一般都是采用递归查询(recursivequery)。递归查询就是如果本地域名服务器不知道被查询域名的IP地址时,那么本地域名服务器就以DNS客户的身份向某个根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。2020/1/3027本地域名服务器向根域名服务器查询主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文。本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。y.abc.com的IP地址⑧顶级域名服务器dns.com权限域名服务器dns.abc.com本地域名服务器dns.xyz.comm.xyz.com根域名服务器③④⑤⑥⑦②迭代查询递归查询①本地域名服务器进行迭代查询本地域名服务器进行递归查询顶级域名服务器dns.com权限域名服务器dns.abc.com本地域名服务器dns.xyz.comm.xyz.com根域名服务器⑦③②递归查询递归查询①y.abc.com的IP地址⑧⑥⑤④……递归查询comabcxyzabcxy因特网uvwxyz.com顶级域名服务器本地域名服务器dns.abc.com授权域名服务器“树根”edu.edu顶级域名服务器y……本地域名服务器dns.xyz.com授权域名服务器m.xyz.com本地域名服务器dns.y.abc.com授权域名服务器t.y.abc.com②③④⑤⑥⑦⑧dns.com①t.y.abc.com的IP地址是什么?2020/1/3031递归与迭代相结合的查询t.y.abc.com④⑤⑥⑦根域名服务器dns.com本地域名服务器dns.xyz.com本地域名服务器dns.abc.com本地域名服务器dns.y.abc.com②③m.xyz.com①IP(t.y.abc.com)=?⑧IP(t.y.abc.com)=(198.54.23.15)2020/1/3032高速缓存(高速缓存域名服务器)每个域名服务器都维护一个高速缓存,存放最近用过的名字和IP地址的映射以及从何处获得该记录的。采用高速缓存可大大减轻根域名服务器的负荷,使因特网上的DNS查询请求和回答报文的数量大为减少。为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天