计算机网络第2章应用层第二章应用层2020年1月23日2目录应用层协议原理WEB应用和HTTP协议文件传输协议:FTP因特网中的电子邮件DNS:因特网的目录服务P2P文件共享TCP套接字编程UDP套接字编程构造一个简单的Web服务器第二章应用层2020年1月23日32.1应用层协议原理常见的网络应用第二章应用层2020年1月23日42.1应用层协议原理网络应用所需采用的体系结构客户机/服务器体系结构(C/S)P2P体系结构混合体系结构第二章应用层2020年1月23日52.1应用层协议原理C/S体系结构存在一个总是在线且能够向客户机提供服务的服务器存在一个或者多个主动连接服务器,试图从服务器那里获取所需服务的客户机RequestResponse客户机之间不能相互通信!为提高服务器性能,通常使用主机集群!第二章应用层2020年1月23日62.1应用层协议原理P2P体系结构由多个功能相同的节点构成每个节点都是平等的。既能够为其他节点提供服务,同时也可以享受其他节点提供的服务节点地址可能随时发生变化!P2P结构容易扩展,但也特别难以管理!第二章应用层2020年1月23日72.1应用层协议原理混合体系结构那混合体系结构自然而然就是C/S体系结构和P2P体系结构的混合体喽!第二章应用层2020年1月23日82.1应用层协议原理确定了网络应用的体系结构,现在我们最关心的是——他们之间如何相互通信?在讨论这个问题之前,我们先要了解“进程间通信”。第二章应用层2020年1月23日92.1应用层协议原理进程间通信不同主机上的进程之间通信必须遵守一套共同的规则,从而规范通信双方进程的行为。应用进程与下层网络之间有一套行之有效的服务调用接口。必须能够在整个网络范围内唯一的标识一个进程,这就是进程寻址问题。第二章应用层2020年1月23日102.1应用层协议原理服务调用接口——套接字(socket)因特网进程下层协议套接字进程下层协议套接字主机或服务器主机或服务器由应用程序开发者控制由操作系统控制第二章应用层2020年1月23日112.1应用层协议原理服务调用接口——套接字(socket)套接字对于网络应用进程来说,就代表着整个网络。网络中的任何其它构件,处理等因素对网络应用进程都是透明的。网络应用程序员对他到的“网络”也有一点控制权限,例如:根据应用需求设置一些网络参数可以选择使用什么样的网络传输服务第二章应用层2020年1月23日122.1应用层协议原理面向连接、可靠的服务不可靠的服务连接管理无差错按序交付无连接管理可能出现错误可能乱序速度快、消耗资源少速度慢、消耗资源多服务调用接口——套接字(socket)因特网为应用提供什么样的服务呢?第二章应用层2020年1月23日132.1应用层协议原理进程寻址第二章应用层2020年1月23日142.1应用层协议原理进程寻址第二章应用层2020年1月23日152.1应用层协议原理进程寻址因特网中使用IP地址在整个因特网中唯一的标识一台主机同时,使用端口号(port)在一台主机中唯一的标识一个进程portIP进程标识=32位二进制数16位二进制数+第二章应用层2020年1月23日162.1应用层协议原理不同主机上应用进程之间通信必须遵守的共同规则——应用层协议应用层协议是网络应用程序员能够完全控制的部分应用层协议与应用实现的功能耦合非常紧密,不同的应用往往需要不同的应用层协议。接下来,我将为大家介绍几种非常常用的应用协议。第二章应用层2020年1月23日172.2WEB应用和HTTP协议历史的回顾19世纪70年代,电话的发明,扩展了人类通信的范围,增强了人类通信的实效性20世纪20年代,广播收音机和电视的发明,极大的丰富了人类可获取信息20世纪90年代,WEB的发明,极大的提高了人类主动获取信息的能力广播收音机/电视和WEB的异同点都是广播和按需操作你不能发布电视节目,但可以发布WEB内容第二章应用层2020年1月23日182.2WEB应用和HTTP协议WEB应用的构成WEB服务器:浏览器:协议信息表达的协议——HTML信息传输的协议——HTTP第二章应用层2020年1月23日192.2WEB应用和HTTP协议WEB页面的构成WEB页面对象HTML文件图片文件.gif.jpgJavaapplet音频文件视频文件……protocol://hostname[:port]/pathURL:第二章应用层2020年1月23日202.2WEB应用和HTTP协议HTTP协议客户端/服务器模式客户端:浏览器请求、接收、展示Web对象服务器:Web服务器发送对象对请求进行响应IEIISFireFoxhttp1.0:RFC1945http1.1:RFC2068第二章应用层HTTPRequest2020年1月23日212.2WEB应用和HTTP协议HTTP协议使用的网络传输服务HTTP使用面向连接、可靠的TCP传输服务IEIISTCP套接字----------HTTPResponseHTTPRequestHTTPResponseTCP套接字第二章应用层2020年1月23日222.2WEB应用和HTTP协议HTTP协议使用的网络传输服务HTTP使用面向连接、可靠的TCP传输服务HTTP是无状态协议服务器向客户机发送被请求的对象时,不保存任何关于该客户机的状态信息第二章应用层2020年1月23日232.2WEB应用和HTTP协议HTTP传输模式非持久连接持久连接HTTP的两种传输模式各有什么特点?第二章应用层2020年1月23日242.2WEB应用和HTTP协议HTTP传输模式——非持久HTTP连接假设:套接字----------TCP套接字HTTPRequestHTTPResponseTCP套接字----------TCP套接字HTTPRequestHTTPResponse第二章应用层2020年1月23日252.2WEB应用和HTTP协议HTTP传输模式——持久HTTP连接假设:套接字----------TCP套接字HTTPRequestHTTPResponseHTTPRequestHTTPResponseHTTPRequestHTTPResponseHTTPRequestHTTPResponse第二章应用层2020年1月23日262.2WEB应用和HTTP协议非持久连接VS持久连接IEIIS响应TCP连接HTTP回应发起TCP连接HTTP请求RTTRTT接收整个对象第二章应用层272.2WEB应用和HTTP协议非持久连接VS持久连接非持久连接,请求n个对象的时间Tn是:Tn=n*(2RTT)+传输n个对象所用的总时间持久连接,请求n个对象的时间Tn是:Tn=2RTT+传输n个对象所用的总时间实际上,持久连接所用的时间更少,因为持久连接还可以采用流水线的方式来节省更多的时间。第二章应用层2020年1月23日282.2WEB应用和HTTP协议HTTP报文HTTP请求报文HTTP响应报文第二章应用层2020年1月23日292.2WEB应用和HTTP协议HTTP请求报文——格式请求行首部诸行空行实体主体第二章应用层2020年1月23日302.2WEB应用和HTTP协议GET/somedir/page.htmlHTTP/1.0User-agent:Mozilla/4.0Accept:text/html,image/gif,image/jpegAccept-language:fr(额外的carriagereturn,linefeed)实体主体HTTP请求报文——举例请求行首部诸行空行第二章应用层2020年1月23日312.2WEB应用和HTTP协议HTTP请求报文——方法1.0POST用于向服务器提交表单数据也可以同时请求一个WEB页面特别注意:可以不使用POST方法,而使用GET方法发送表单数据以获取新的WEB页面。GET向服务器请求指定URL的对象HEAD请求服务器返回一个响应报文,但是该报文中并不包含请求的对象。该方法常常用来进行故障跟踪。第二章应用层2020年1月23日322.2WEB应用和HTTP协议HTTP请求报文——方法1.1PUT上传的文件放在实体主体字段中,目标路径由URL字段标明DELETE删除URL字段中指定的文件第二章应用层2020年1月23日332.2WEB应用和HTTP协议HTTP响应报文——格式状态行首部诸行空行实体主体第二章应用层2020年1月23日342.2WEB应用和HTTP协议HTTP/1.0200OKDate:Thu,06Aug199812:00:15GMTServer:Apache/1.3.0(Unix)Last-Modified:Mon,22Jun1998…Content-Length:6821Content-Type:text/htmldatadatadatadatadata...HTTP响应报文——举例状态行首部诸行空行实体主体第二章应用层2020年1月23日352.2WEB应用和HTTP协议200OK请求成功,被请求的对象在报文中HTTP响应报文——常见状态码和短语301MovedPermanently被请求的对象被移动过,新的位置在报文中有说明400BadRequest服务器不理解请求报文404NotFound服务器上找不到请求的对象505HTTPVersionNotSupported服务器不支持请求报文使用的HTTP协议版本第二章应用层2020年1月23日362.2WEB应用和HTTP协议HTTP是无状态的,不保存客户端访问的历史信息网络购物中的“推荐产品”功能论坛发帖中的“身份认证”功能购物车……第二章应用层2020年1月23日372.2WEB应用和HTTP协议WEBCookieCookie的目的:把内容和用户身份关联起来Cookie技术的组成部分:在HTTP响应报文中有一个Cookie首部行在HTTP请求报文中也有一个Cookie首部行在客户端系统中保留Cookie文件,由浏览器负责管理在Web站点有一个后端数据库第二章应用层2020年1月23日382.2WEB应用和HTTP协议WEBCookie——工作流程WEB服务器数据库WEB客户机ID:12345action:CreateID:12345action:……ID:12345action:……Cookie文件ID:12345第二章应用层2020年1月23日392.2WEB应用和HTTP协议WEBCookie——争议Cookie的使用带来了对用户隐私的侵害网站获得了更多的用户信息分析用户的行为模式……第二章应用层2020年1月23日402.2WEB应用和HTTP协议WEB缓存——定义什么是WEB缓存器呢?WEB缓存器(WEBCache)是能够代表原始服务器,满足HTTP请求的网络实体。也叫代理服务器(ProxyServer)。第二章应用层2020年1月23日2.2WEB应用和HTTP协议客户端WEB缓存——工作流程客户端原始服务器WEB缓存器因特网缓存HTTPRequestHTTPResponseHTTPResponseHTTPRequestHTTPResponse第二章应用层2020年1月23日422.2WEB应用和HTTP协议WEB缓存——作用提高客户端访问WEB页面的速度,减少时延减少局域网与外部因特网交换的数据量,在减小出口网络带宽、节约费用的同时,保证了服务质量。第二章应用层2020年1月23日432.2WEB应用和HTTP协议平均对象的大小=100,000bits原始服务器因