《《应用层HTTP协议》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《应用层HTTP协议》PPT课件.ppt(52页珍藏版)》请在三一办公上搜索。
1、第2讲:应用层,1,第2讲:应用层,本讲目标:网络应用层的概念和实现客户端-服务器范式服务模型通过对常用应用层协议的探讨和分析来学习网络协议教科书参考第9章,深层次目标 特定协议:httpftpsmtppop dns,第2讲:应用层,2,应用程序和应用层协议,应用程序:沟通,分布式的进程运行在网络主机中的“用户空间”在应用程序间交换报文e.g.,email,ftp,Web应用层协议:应用层的一个“组成部分”定义应用程序需交换的报文 和所需采取的动作使用较低层次所提供的通信服务(TCP,UDP),第2讲:应用层,3,网络应用程序:一些术语,进程(Process):主机中运行中的程序.在某些主机中
2、,两个进程使用进程间通信(由 OS管理).而运行在不同主机上的进程则使用应用层协议进行通信,用户代理(User agent):软件进程,是介于用户(above)和网络(below)之间的接口实现应用级协议Web:浏览器E-mail:OE、Foxmail流媒体:media player,第2讲:应用层,4,客户端-服务器范式,典型的网络应用都是由两个部分组成:客户端 和 服务器,客户端:发起同服务器的联系(“speaks first”)一般都从服务器请求服务,Web:客户端由浏览器实现;e-mail:通过OE、Foxmial实现,服务器:向客户端提供所请求的服务e.g.,Web 服务器发送被请求
3、的 Web 页面,邮件服务器传递 e-mail,第2讲:应用层,5,应用层协议(续),应用程序接口(API:application programming interface)定义应用层和传输层间的接口插口(socket:Internet API)两个进程间的通信,将数据送入 socket,或从socket 读出数据,Q:某个进程如何“认定”另一个 需要与之通信的进程?IP 地址-运行另一个进程的主机所拥有的“端口号(PORT#)”允许接收主机来确定的一个标识,本地进程将报文发送给它教科书p232-234,第2讲:应用层,6,应用进程需要怎样的传输服务?,数据丢失(Data loss)某些应用
4、(e.g.,audio)可以容忍某种程度上的数据丢失其他应用(e.g.,文件传输,telnet)要求 100%可靠的数据传输,实时性(Timing)某些应用(e.g.,IP 电话,交互式游戏)要求较低的时延,带宽(Bandwidth)某些应用(e.g.,多媒体)对最低带宽有要求其他应用(“弹性应用”)则可灵活应用所能得到的带宽,第2讲:应用层,7,常用应用程序对传输功能的要求,应用程序文件传输e-mailWeb 网页实时音频/视频存储音频/视频交互式游戏金融应用,数据丢失不丢失不丢失不丢失允许丢失允许丢失允许丢失允许丢失不丢失,带宽弹性弹性弹性音频:5Kb-1Mb视频:10Kb-5Mb同上 几
5、 Kb/s 以上弹性,实时性无无无100s msecfew secs100s msecyes and no,第2讲:应用层,8,Internet 的传输协议服务,TCP 服务:面向连接:在客户端和服务器进程之间需要建立连接(setup)可靠传输:在发送和接受进程之间流量控制:发送数据的速度决不超过接收的速度 拥塞控制:当网络超负荷时,束紧发送端口,减缓发送速度不提供:实时性,最小带宽承诺,UDP服务:在客户端和服务器进程之间实现“不可靠的”数据传输不提供:连接建立,可靠性保证,流量控制,拥塞控制,实时性,最小带宽承诺Q:既生喻,何生亮?Why is there a UDP?,第2讲:应用层,9
6、,Internet应用:应用,传输协议,应用e-mail远程终端访问Web 文件传输流媒体远程文件服务器IP电话,应用协议smtp RFC 821telnet RFC 854http RFC 2068ftp RFC 959专有协议(e.g.RealNetworks)NSF专有协议(e.g.,Vocaltec),所依赖的传输协议TCPTCPTCPTCPTCP or UDPTCP or UDPtypically UDP,第2讲:应用层,10,http 协议,http:TCP 传输服务:客户端启动TCP连接(创建插口)到服务器,端口 80服务器接受来自客户端的 TCP 连接http 报文(应用层协议
7、报文)在浏览器(http client)和Web服务器(http server)之间进行交换关闭TCP 连接,http 是“无状态(stateless)”的服务器不保留任何访问过的请求信息,保留状态的协议很复杂哟!过去的历史(状态)需要保留一旦浏览器/服务器崩溃,它们各自的状态视图就会发生分歧,还需要重新核对,小评论,第2讲:应用层,11,Web:http 协议,超文本传输协议(http:hypertext transfer protocol)万维网应用协议客户端/服务器模式客户端:浏览器请求、接收、展示 Web对象(objects)服务器:Web 服务器发送对象对请求进行响应http1.0:
8、RFC 1945http1.1:RFC 2068,PC runningExplorer,Server runningNCSA Webserver,Mac runningNavigator,http request,http request,http response,http response,第2讲:应用层,12,http 举例,假设用户键入了一个 URL,1a.http 客户端启动 TCP 连接到上的http 服务器(进程).Port 80 是 http 服务器的默认端口.,2.http客户端发送 http 请求报文(包括URL)进入 TCP 连接插口(socket),1b.在www.so
9、meSchool.edu 上的http 服务器在 port 80 等待 TCP 的连接请求.“接受”连接并通知客户端,3.http 服务器接收到请求报文,形成 响应报文(包含了所请求的对象,someDepartment/home.index),将报文送入插口(socket),time,(该网页包含文本并引用了10 jpeg 图片),第2讲:应用层,13,http 举例(续.),5.http 客户端接收到了包含html文件的响应报文。分析 html 文件,发现 10 个引用的 jpeg 对象,6.对10 jpeg objects 逐个重复1-5 步,4.http 服务器关闭 TCP 连接.,ti
10、me,第2讲:应用层,14,非持续和持续连接,(非持续连接)Non-persistenthttp/1.0:服务器分析请求、响应、关闭 TCP 连接取对象需要2 RTTsTCP 连接对象请求/传送每次传送都要受到TCP连接初始化时的慢启动影响许多浏览器同时打开多个并行的连接来改善性能,(持续连接)Persistenthttp/1.1的默认设置在同一TCP 连接上:服务器分析请求、响应请求,分析新的请求、.客户端一旦下载到了基本的html文件(base HTML)马上发送对所有引用对象的请求.较少的 RTTs,较少的慢启动.,第2讲:应用层,15,http 报文格式:request(请求),two
11、 types of http报文:request,responsehttp 请求报文:ASCII(可读格式),第2讲:应用层,16,http 请求报文:一般格式,第2讲:应用层,17,http 报文格式:response(响应),HTTP/1.0 200 OK Date:Thu,06 Aug 1998 12:00:15 GMT Server:Apache/1.3.0(Unix)Last-Modified:Mon,22 Jun 1998.Content-Length:6821 Content-Type:text/html data data data data data.,状态行(协议状态码状态
12、短语),首部 诸行,数据,e.g.,被请求的html文件,第2讲:应用层,18,http 响应状态码和短语,200 OK请求成功,被请求的对象在报文中301 Moved Permanently被请求的对象被移动过,新的位置在报文中有说明(Location:)400 Bad Request服务器不懂请求报文404 Not Found服务器上找不到请求的对象505 HTTP Version Not Supported,位于(服务器-客户端)响应报文的第一行.样例:,第2讲:应用层,19,自行测试 http(客户端操作),1.用Telnet 连接测试用的服务器(需要预先登录UNIX):,打开 TCP
13、 连接到 port 80(默认的http 服务器端口)位于 后续键入的内容将发送到 的 80 号端口,$80,2.键入一条 http请求报文:,GET/j1010/hello.htm HTTP/1.0,将该指令键入后(按两次回车键),就将此最短之(但是完整的)GET 请求发到了 http 服务器,3.请注意观察http服务器发回的响应报文!,第2讲:应用层,20,用户-服务器的交互:认证(authentication),认证:控制对服务器内容的访问信用认证:一般通过用户名,口令进行 无状态:客户端必须在每次请求前进行认证authorization:就是要求在每个请求报文中提交认证的首部行如果客
14、户端没有提交 authorization:首部行,服务器将拒绝访问,只是在响应报文首部中发送WWW authenticate:,client,server,普通 http 请求报文,401:认证要求WWW authenticate:,第2讲:应用层,21,Cookies:保存“状态”,服务器产生一个#,服务器认识这个#,以备不时之需:认证记忆用户的前序访问,先前的选择服务器在响应报文中发送“cookie”给客户端Set-cookie:1678453客户端可以在后继的请求中发送“cookie”cookie:1678453,client,server,普通 http 请求报文,普通 http响应报
15、文+Set-cookie:#,cookie-特定的,cookie-特定的,第2讲:应用层,22,Conditional GET:客户端缓存机制,目的:如果客户端缓存了最新的请求对象,则服务器不必重复发送客户端:在http请求报文中声明所缓存拷贝的生成日期If-modified-since:服务器:如果客户端缓存的拷贝是最新的,则在响应报文中不发请求的对象:HTTP/1.0 304 Not Modified,client,server,http请求报文If-modified-since:,对象未经修改,http请求报文If-modified-since:,http响应报文HTTP/1.1 200
16、 OK,对象已经修改,第2讲:应用层,23,Web 缓存:代理服务器(proxy server),用户设置浏览器:Web 访问经由代理服务器 客户端发送所有的 http 请求到代理服务器代理服务器保存了请求的对象:代理服务器返回请求的对象 否则代理服务器从原始服务器请求对象,再将其返回给客户端,目的:满足客户端的请求而无需烦扰原始服务器,client,Proxyserver,client,http request,http request,http response,http response,http request,http response,origin server,origin se
17、rver,第2讲:应用层,24,为何Web缓存?,前提:缓存与客户端比较“接近“(e.g.,在同一网络中)响应时间较短:缓存与客户端比较“接近“减少了往来与远程服务器间的数据流量因为从学校或本地ISP 通往外部的链路往往是网络瓶颈,originservers,public Internet,institutionalnetwork,10 Mbps LAN,1.5 Mbps access link,institutionalcache,第2讲:应用层,25,ftp:文件传输协议,传输文件往来与远程主机客户端/服务器模式客户端:启动传输(无论与往来远程主机)服务器:远程主机ftp:RFC 959f
18、tp 服务器:端口 21,第2讲:应用层,26,ftp:分离的控制,数据连接,ftp客户端在 ftp 服务器的 端口21进行联系,使用TCP作为传输协议打开两个并行的连接:控制:在客户端和服务器之间交换命令,响应。称为带外控制:“out of band control”数据:往来于服务器的文件ftp 维持状态(state):当前目录、先前的认证信息等,第2讲:应用层,27,ftp 命令,响应,样例命令:在控制通道上传送的ASCII文本USER username(登录)PASS password(登录)LIST(返回当前目录中的文件列表)RETR filename(取(gets)文件)STOR
19、filename(存(puts)文件到远程主机),返回码样例状态码和短语(同 http)331 Username OK,password required125 data connection already open;transfer starting425 Cant open data connection452 Error writing file,第2讲:应用层,28,电子邮件,四个重要组件:用户代理 邮件服务器 简单邮件传输协议:smtp邮局协议:pop用户代理写作,编辑,阅读邮件报文e.g.,Foxmail,OE,elm,Netscape Messenger外发,接收的报文存储在邮
20、件服务器中,用户邮箱,外发报文队列,第2讲:应用层,29,电子邮件:邮件服务器,Mail Servers 邮箱 包含了收到的用户邮件(尚未被阅读)报文 队列包含了外发的 邮件报文smtp 协议用在邮件服务器之间发送邮件客户端:将邮件发送到邮件服务器“服务器”:接收和转发邮件,第2讲:应用层,30,电子邮件:smtp RFC 821,使用 tcp 可靠的传送邮件报文,端口25直接传输:发送服务器到接收服务器传输的三个阶段握手(打招呼)报文传输结束命令/响应交互命令:ASCII文本响应:状态码和短语邮件报文必须使用7-bit ASCII表示,第2讲:应用层,31,smtp 交互样例(在UNIX中用
21、telnet),C:MAIL FROM:S:250 okC:RCPT TO:S:250 ok its for C:DATAS:354 ok,send it;end with.C:Hi,I am in XUJI now,Where are you?C:.S:250 Message queuedC:QUITS:221 Goodbye,第2讲:应用层,32,自测 smtp 交互:,$telnet 202.117.35.170 25见到邮件服务器的 220 响应后键入 HELO,MAIL FROM,RCPT TO,DATA,QUIT 命令 上述过程可以不使用用户代理,就能直接将电子邮件发送出去(因为目
22、前大部分邮件服务器的交互过程趋于复杂,本试验不一定都能进行)。,第2讲:应用层,33,smtp:评述,smtp 使用持续连接smtp 要求报文(首部&信体)全部使用 7-bit ASCII码某些代码组合不允许出现在报文中(e.g.,CRLF.CRLF).此类数据必须进行编码(通常使用 base-64 或 quoted printable)smtp 服务器用 CRLF.CRLF 表示邮件报文的结束,与 http的比较:http:pull(拉)email:push(推)都使用 ASCII 命令/响应交互,状态码http:每个对象分装在各自的响应报文中smtp:多个对象在一个多分部的报文中传送,第2
23、讲:应用层,34,邮件报文格式,smtp:交换邮件报文的协议RFC 822:文本报文格式标准:首部诸行,e.g.,To:From:Subject:不同 于 smtp 命令!信体即“报文”,ASCII characters only,header,body,空行,第2讲:应用层,35,邮件格式:多媒体扩展,MIME:multimedia mail extension,RFC 2045,2056在报文首部附加额外的信息声明 MIME 内容类型,第2讲:应用层,36,MIME 类型声明 Content-Type:type/subtype;parameters,Text子类型样例:plain,html
24、Image子类型样例:jpeg,gifAudio子类型样例:basic(8-bit mu-law encoded),32kadpcm(32 kbps coding),Video子类型样例:mpeg,quicktimeApplication需使用其他阅读器的数据子类型样例:msword,octet-stream,第2讲:应用层,37,MIME多分部类型,From:alicecrepes.fr To:bobhamburger.edu Subject:Picture of yummy crepe.MIME-Version:1.0 Content-Type:multipart/mixed;bounda
25、ry=98766789-98766789Content-Transfer-Encoding:quoted-printableContent-Type:text/plainDear Bob,Please find a picture of a crepe.-98766789Content-Transfer-Encoding:base64Content-Type:image/jpegbase64 encoded data.base64 encoded data-98766789-,第2讲:应用层,38,邮件访问协议,SMTP:发送/存储 到接收方的服务器邮件访问协议:从服务器中取信POP:Post
26、 Office Protocol RFC 1939认证(agent server)和下载 IMAP:Internet Mail Access Protocol RFC 1730更多功能(更为复杂)在服务器中操作存储在那里的报文HTTP:Hotmail,Yahoo!Mail,etc.,SMTP,POP3 orIMAP,receivers mail server,第2讲:应用层,39,POP3 协议,认证阶段客户端命令:user:用户名pass:口令服务器响应+OK-ERR交互阶段,客户端:list:列出报文号码retr:用报文号码取信dele:用报文号码删信quit,C:list S:1 498
27、 S:2 912 S:.C:retr 1 S:S:.C:dele 1 C:retr 2 S:S:.C:dele 2 C:quit S:+OK POP3 server signing off,S:+OK POP3 server ready C:user alice S:+OK C:pass hungry S:+OK user successfully logged on,第2讲:应用层,40,自测 pop3交互:,$telnet 202.117.35.70 110见到+OK POP3 server ready 响应后键入 user,pass,list,retr,quit 命令 上述过程可以不使用
28、用户代理,就能察看邮箱中的信件。,第2讲:应用层,41,DNS:域名系统,自然人:诸多定义:身份证,姓名,护照#因特网主机,路由器:IP 地址(32 bit)用于数据报寻址“域名”,e.g.,帮助记忆Q:IP 地址和域名之间如何映射(转换)?,Domain Name System:分布式数据库:由许多域名服务器按层次构成 应用层协议:主机、路由器、域名服务器互相通信进行域名解析(地址/域名翻译)注意:因特网之核心功能,应用层之协议网络“边缘”上之复杂实体,第2讲:应用层,42,DNS name servers,没有服务器能够保存所有 Name-to-IP 地址的映射本地域名服务器:每个 ISP
29、,企业可拥有 本地(默认)域名服务器主机的 DNS 查询首先发往本地域名服务器授权域名服务器:每台主机必须在授权服务器上注册登记可完成域名/地址的转换,为什么不搞集中的DNS?单点失败的问题数据的流通量远程集中式的数据库维护问题难以与时俱进,跟不上发展!,第2讲:应用层,43,DNS:根域名服务器,当本地域名服务器不能解析时,就向根域名服务器查询根域名服务器:如果域名映射未知,则向授权域名服务器查询取得映射将映射返回本地域名服务器,遍布世界各地的13个根域名服务器,第2讲:应用层,44,简单 DNS 举例,主机 ctec.要求 的IP 地址 1.联系本地域名服务器,2.如有必要 会联系根域名服
30、务器3.如有必要根域名服务器会联系授权域名服务器,requesting host,root name server,authorititive name server,1,2,3,4,5,6,第2讲:应用层,45,DNS 举例,根域名服务器:可能不知道授权域名服务器的地址可能知道中介域名服务器:由它负责联系授权域名服务器,requesting host,root name server,1,2,3,4,5,6,authoritative name server,7,8,第2讲:应用层,46,DNS:迭代查询,递归查询:对根域名服务器造成工作负担如何减负?迭代查询:被查询的服务器直接把可查询的服
31、务器地址报回“不懂这个域名,但可以从这个服务器查到”,requesting host,root name server,1,2,3,4,5,6,authoritative name server,7,8,iterated query,第2讲:应用层,47,DNS:缓存和更新纪录,一旦(任何)域名服务器得知了某个映射,就将其 缓存在一定的时间间隔后缓存的条目将会过期(自动消除)更新/通知 机制由 IETF负责设计RFC 2136,第2讲:应用层,48,DNS 纪录,DNS:存储资源纪录(RR)的分布式数据库,Type=NSname=域(e.g.)value=该域授权域名服务器的 IP 地址,Ty
32、pe=Aname=主机名value=IP 地址,Type=CNAMEName=别名 is reallyvalue=真名,Type=MXvalue=与 name相关的邮件服务器域名,第2讲:应用层,49,DNS 协议,报文,DNS 协议:查询和应答报文,二者格式相同,报文首部identification:16 bit#用于查询,应答报文使用同样的#flags:查询 或 应答希望递归 可以递归授权应答,第2讲:应用层,50,DNS 协议,报文,Name,type fields 查询报文,RRs 响应,来自授权服务器的纪录,其他“帮助”信息,第2讲:应用层,51,本讲小结,应用服务的要求:可靠性,带
33、宽,延迟客户端-服务器范式Internet 传输服务模型面向连接的,可靠的:TCP不可靠的,数据报:UDP,Our study of network apps now complete!,特定协议:httpftpsmtp,pop3dns,第2讲:应用层,52,本讲小结,典型的请求/应答报文交换:客户请求信息或服务服务器用数据,状态码进行响应报文格式:首部:说明数据的信息数据:进行通信的信息,Most importantly:learned about protocols,控制 vs.数据报文in-based,out-of-band集中式 vs.非集中式 无状态 vs.有状态可靠的 vs.不可靠的报文传输“网络边缘上的复杂实体”安全性:认证,