计算机网络第七章网络服务和应用层协议第7章网络服务和应用层协议7.1域名系统DNS7.1.1DNS基础7.1.2Internet的域名结构7.1.3域名服务器7.1.4域名解析7.1.5DNS报文第7章网络服务和应用层协议7.2电子邮件系统7.2.1电子邮件系统概述7.2.2SMTP协议7.2.3邮件读取协议:POP3和IMAP47.2.4电子邮件格式7.2.5基于统一资源定位符(URL)7.3.4万维网文档7.3.5HTTP协议7.3.6搜索引擎第7章网络服务和应用层协议7.4文件传输协议FTP7.4.1FTP概述7.4.2FTP工作原理7.4.3匿名FTP服务7.4.4FTP使用7.4.5简单文件传输协议TFTP第7章网络服务和应用层协议7.5动态主机配置协议DHCP7.5.1DHCP的产生背景7.5.2DHCP的报文格式7.5.3工作过程7.6远程登录协议Telnet7.6.1Telnet的基本概念7.6.2Telnet的工作原理7.6.3Telnet的使用第7章网络服务和应用层协议7.7无线应用协议WAP7.7.1WAP概述7.7.2WAP协议栈7.7.3WAP2.07.8P2P应用协议7.8.1P2P概述7.8.2P2P的应用应用层协议应用层以下的各层提供了可靠的传输服务,应用层将在此基础上,为我们提供各式各样的网络应用。为使各种应用能够工作,应用层也需要支持多种协议,每一种协议都是为了解决某一类问题而设计的。通常是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成需要的服务,应用层规定了应用进程在通信时应遵循的协议。7.1域名系统DNS7.1.1DNS基础域名系统(DomainNameSystem,DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供了主机名字和IP地址之间的转换及有关电子邮件的选路信息。每个站点都保留自己的信息数据库,同时运行一个服务器程序供Internet上其它的域名系统查询,DNS提供了服务器和客户端之间相互通信的协议,通常也将提供域名解析服务的主机称为域名服务器。7.1.2Internet的域名结构在TCP/IP互联网上采用的是层次树状结构的命名方法,通常称之为域树结构,其一般的结构是由主机名和主机名所在域的名字共同组成的。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域(domainname)。域的结构由若干个分量组成,分量之间用点隔开,一般的形式为:{….三级域名.二级域名.顶级域名}7.1.2Internet的域名结构域名只是个逻辑概念,并不反映出域名所代表的机器的物理位置。域名可以和IP地址进行转换,但转换过程中,域名当中的点(.)和点分十进制IP地址中的点是没有关系的}顶级域名TLD(TopLevelDomain)(1)地理模式:指代表不同国家或地区的顶级域,如CN表示中国、UK表示英国、PR表示法国等。(2)组织模式:.com(公司和企业).net(网络服务机构).org(非赢利性组织).edu(美国专用的教育机构().gov(美国专用的政府部门).mil(美国专用的军事部门).int(国际组织)二级域名域在国家顶级域名下注册的二级域名将由该国家的域名管理机构确定。在我国,现将二级域名划分为“类别域名”和“行政区域名”两大类。其中“类别域名”有7个,ac(科研机构)、com(工、商、金融等企业)、edu(教育机构)、gov(政府机构)、mil(国防机构)、net(提供互联网络服务的机构)、org(非盈利性的组织);“行政区域名”34个,包括了我国的各省、自治区、直辖市。因特网的域名空间因特网的域名空间7.1.3域名服务器一个域名服务器不但能够进行一些域名到IP地址的转换,而且还必须知道其它一些域名服务器的信息一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区的不同划分方法举例域名服务器有以下四种类型根域名服务器(rootnameserver)顶级域名服务器(TLDserver)权限域名服务(authoritativenameserver)本地域名服务器(localnameserver)根域名服务器根域名服务器是最高层次的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。当一个本地域名服务器无法解析一个域名时,就会直接找到根域名服务器,然后根域名服务器会告知它应该去找哪一个顶级域名服务器进行进一步的解析。目前全世界共有一百多个根域名服务器。顶级域名服务器(即TLD服务器)顶级域名服务器负责管理在本顶级域名服务器上注册的所有二级域名。当收到DNS查询请求时,能够将其管辖的二级域名转换为该二级域名的IP地址,或者是下一步应该找寻的域名服务器的IP地址。权限域名服务器DNS采用分区的办法来设置域名服务器,每一个区都设置有服务器,这个服务器称为权限服务器,它负责将其管辖区内的主机域名转换为相应的IP地址,在其上保存有所管辖区内的所有主机域名到IP地址的映射。本地域名服务器本地域名服务器对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。提高域名服务器的可靠性为了提高域名服务器的可靠性,一般都会将DNS域名服务器的数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其它的是辅助域名服务器。当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更新数据只能在主域名服务器中进行,这样可以保证数据的一致性。7.1.4域名解析一个域名服务器不但能够进行一些域名到IP地址的转换,而且还必须知道其它一些域名服务器的信息一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。域名的解析过程DNS设计成客户机/服务器模式的应用程序。当某个应用进程需要把域名解析为对应的IP地址时,它将调用解析程序,成为DNS的客户方,并将欲解析的主机域名放在DNS请求报文中,然后使用UDP用户数据报将其发往本地域名服务器。本地域名服务器对其进行对应查询,如果查找成功,就将结果放入DNS回答报文中,同样使用UDP用户数据报将返回给请求方。在域名解析过程中,可以有递归查询和迭代查询两种方式以供选择。递归查询当某个主机有域名解析请求时,它总是首先向本地域名服务器发出查询请求,如果本地域名服务器知道查询结果,那么它将把结果返回给请求者;如果本地域名服务器不知道查询结果,它将作为DNS客户方向根域名服务器发出查询请求。然后由根域名服务器去完成接下来的查询。递归查询迭代查询当根域名服务器收到本地域名服务器的查询请求时,它根据查询请求告诉本地域名服务器下一步应该去查询的顶级域名服务器的IP地址;接着本地域名服务器到该顶级域名服务器进行查询,若顶级域名服务器知道结果,那么它会把结果传送给本地域名服务器,否则它会告诉本地域名服务器下一步应该查询的权限域名服务器的IP地址。本地域名服务器就这样进行迭代查询,直到查到所需的IP地址,然后把结果返回给发起查询的主机迭代查询高速缓存技术主机和每个域名服务器都维护一个高速缓存,存放最近查询过的域名以及从何处获得域名映射信息的记录。当有域名解析请求时,首先在自己的高速缓存中查找,若没有才转向其它的域名服务器。为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。高速缓存的使用可大大减轻根域名服务器的负荷,使因特网上的DNS查询请求和回答报文的数量大为减少。7.1.5DNS报文DNS有两种类型的报文:查询报文和响应报文查询报文包括首部和问题记录。响应报文包括首部、问题记录、回答记录、授权记录以及附加记录。报文由12字节的首部和4个长度可变的字段组成。DNS报文格式DNS报文格式(1)QR(查询/响应)。定义报文类型的1位子字段。0表示查询报文,1表示响应报文。(2)Opcode。这是4位子字段,定义查询的类型,通常值为0表示标准查询,值为1表示反向查询,值为2表示服务器状态请求。(3)AA(授权回答)。1位子字段,值为1时表示域名服务器是权限服务器,只用在响应报文中。(4)TC(截断的)。1位子字段,表示是否是可截断的。(5)RD(要求递归)。1位子字段,表示期望递归。(6)RA(递归可用)。1位子字段,表示可用递归。(7)保留。3位子字段,保留未用,置为000。(8)Rcode(返回码)。4位子字段,表示在响应中的差错状态,只有权限服务器才能做出这个判断。通常为0表示没有差错,3表示域名差错。7.2电子邮件系统7.2.1电子邮件系统概述电子邮件(ElectronicMail,简称E-mail)是Internet上使用最多、较受用户欢迎的应用之一。电子邮件的发送方将邮件发送至ISP的邮件服务器,放入特定的收信人邮箱中,收信人可以登录到自己邮箱所在的ISP邮件服务器收取邮件。。7.2.1电子邮件系统概述电子邮件的相关标准经过几代竞争和更迭,现在较为通用的是,发送邮件使用的是简单邮件传送协议(SimpleMailTransferProtocol,SMTP),读取邮件使用的是邮局协议(PostOfficeProtocol,POP3)和因特网报文存取协议(InternetMessageAccessProtocol,IMAP4)。电子邮件系统体系结构电子邮件系统特点在SMTP(POP3和IMAP4)当中,传输层上调用的是TCP协议,使用TCP协议的理由是明显的,即保障可靠性。电子邮件的交付过程并不保证是实时的。可以看到,在发送方邮件服务器上有一个邮件缓存,新到的邮件首先要“排队”,直到发送方邮件服务器认为可以发送时才进行发送,这给邮件的投递过程带来了一定的延时,这种延时本身要比分组在路由器当中转发时的延时大的多。7.2.2STMP协议SMTP协议是发送邮件时使用的协议,在整个的发送流程中会使用到两次,即在发送方和发送方邮件服务器之间以及两个邮件服务器之间。SMTP规定了14条命令和21种响应信息。使用SMTP协议传送邮件共有3个阶段,分别是连接建立、报文传送以及连接终止连接建立发送方的邮件首先被放入发送方邮件服务器(MTA客户)的邮件缓存,MTA客户定期会扫描邮件缓存,如发现有待发邮件,就使用SMTP的熟知端口25与接收方服务器(MTA服务器)的SMTP服务器建立TCP连接。在连接建立后,MTA服务器会发出“220Serviceready”以表示服务就绪。然后MTA客户向MTA服务器发送HELO命令,并附上发送方的主机名。MTA服务器若有能力接收邮件,则回答:“250OK”。若MTA服务器暂时不可用,则回答“421Servicenotavailable”。报文传送MTA客户发送MAILFROM命令,后面跟有发信人的邮件地址。若MTA服务器已准备好接收邮件,则回答“250OK”;否则,返回一个代码,指出原因。客户发送一个或多个RCPT命令,后面跟有收件人的邮件地址(有几个收件人就发送几个命令)。每发送一个命令都会从MTA服务器返回相应的信息。接下来客户发送DATA命令,对报文的传送进初始化,表示将要开始传送邮件的内容了,若MTA服务器返回的响应代码是354就表示可以传输,若MTA服务器不能接收邮件,则返回相应的代