资源预览内容
第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
第9页 / 共52页
第10页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2讲:应用层,1,第2讲: 应用层,本讲目标: 网络应用层的概念和实现 客户端-服务器范式 服务模型 通过对常用应用层协议的探讨和分析来学习网络协议 教科书参考 第9章,深层次目标 特定协议: http ftp smtp pop dns,第2讲:应用层,2,应用程序和应用层协议,应用程序:沟通, 分布式的进程 运行在网络主机中的 “用户空间” 在应用程序间交换报文 e.g., email, ftp, Web 应用层协议: 应用层的一个“组成部分” 定义应用程序需交换的报文 和所需采取的动作 使用较低层次所提供的通信服务 (TCP, UDP),第2讲:应用层,3,网络应用程序: 一些术语,进程(Process): 主机中运行中的程序. 在某些主机中, 两个进程使用进程间通信 (由 OS管理). 而运行在不同主机上的进程则使用应用层协议进行通信,用户代理(User agent): 软件进程, 是介于用户( above )和网络( below )之间的接口 实现应用级协议 Web: 浏览器 E-mail: OE、Foxmail 流媒体: media player,第2讲:应用层,4,客户端-服务器范式,典型的网络应用都是由两个部分组成: 客户端 和 服务器,客户端: 发起同服务器的联系 (“speaks first”) 一般都从服务器请求服务, Web: 客户端由浏览器实现; e-mail: 通过OE、Foxmial实现,服务器: 向客户端提供所请求的服务 e.g., Web 服务器发送被请求的 Web 页面, 邮件服务器传递 e-mail,第2讲:应用层,5,应用层协议(续),应用程序接口(API: application programming interface) 定义应用层和传输层间的接口 插口(socket: Internet API) 两个进程间的通信, 将数据送入 socket, 或从socket 读出数据,Q: 某个进程如何“认定”另一个 需要与之通信的进程? IP 地址-运行另一个进程的主机所拥有的 “端口号(PORT #)” 允许接收主机来确定的一个标识,本地进程将报文发送给它 教科书p232-234,第2讲:应用层,6,应用进程需要怎样的传输服务?,数据丢失(Data loss) 某些应用 (e.g., audio) 可以容忍某种程度上的数据丢失 其他应用 (e.g., 文件传输, telnet) 要求 100% 可靠的数据传输,实时性(Timing) 某些应用(e.g., IP 电话, 交互式游戏) 要求较低的时延,带宽(Bandwidth) 某些应用(e.g., 多媒体) 对最低带宽有要求 其他应用(“弹性应用”) 则可灵活应用所能得到的带宽,第2讲:应用层,7,常用应用程序对传输功能的要求,应用程序 文件传输 e-mail Web 网页 实时音频/视频 存储音频/视频 交互式游戏 金融应用,数据丢失 不丢失 不丢失 不丢失 允许丢失 允许丢失 允许丢失 允许丢失 不丢失,带宽 弹性 弹性 弹性 音频: 5Kb-1Mb 视频:10Kb-5Mb 同上 几 Kb/s 以上 弹性,实时性 无 无 无 100s msec few secs 100s msec yes and no,第2讲:应用层,8,Internet 的传输协议服务,TCP 服务: 面向连接: 在客户端和服务器进程之间需要建立连接(setup ) 可靠传输 : 在发送和接受进程之间 流量控制: 发送数据的速度决不超过接收的速度 拥塞控制: 当网络超负荷时,束紧发送端口,减缓发送速度 不提供: 实时性, 最小带宽承诺,UDP服务: 在客户端和服务器进程之间实现“不可靠的”数据传输 不提供:连接建立, 可靠性保证,流量控制,拥塞控制,实时性, 最小带宽承诺 Q: 既生喻,何生亮? Why is there a UDP?,第2讲:应用层,9,Internet应用: 应用, 传输协议,应用 e-mail 远程终端访问 Web 文件传输 流媒体 远程文件服务器 IP电话,应用协议 smtp RFC 821 telnet RFC 854 http RFC 2068 ftp RFC 959 专有协议 (e.g. RealNetworks) NSF 专有协议 (e.g., Vocaltec),所依赖的传输协议 TCP TCP TCP TCP TCP or UDP TCP or UDP typically UDP,第2讲:应用层,10,http 协议,http: TCP 传输服务: 客户端启动TCP连接(创建插口) 到服务器, 端口 80 服务器接受来自客户端的 TCP 连接 http 报文(应用层协议报文) 在浏览器 (http client) 和Web服务器(http server)之间进行交换 关闭TCP 连接,http 是 “无状态(stateless)”的 服务器不保留任何访问过的请求信息,保留状态的协议很复杂哟! 过去的历史 (状态) 需要保留 一旦浏览器/服务器崩溃, 它们各自的状态视图就会发生分歧,还需要重新核对,小评论,第2讲:应用层,11,Web: http 协议,超文本传输协议(http: hypertext transfer protocol) 万维网应用协议 客户端/服务器模式 客户端: 浏览器请求、接收、展示 Web对象( objects) 服务器: Web 服务器发送对象对请求进行响应 http1.0: RFC 1945 http1.1: RFC 2068,PC running Explorer,Server running NCSA Web server,Mac running Navigator,http request,http request,http response,http response,第2讲:应用层,12,http 举例,假设用户键入了一个 URL www.someSchool.edu/someDepartment/home.index,1a. http 客户端启动 TCP 连接到www.someSchool.edu上的http 服务器 (进程). Port 80 是 http 服务器的默认端口.,2. http客户端发送 http 请求报文 (包括URL) 进入 TCP 连接插口(socket),1b. 在www.someSchool.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 连接.,time,第2讲:应用层,14,非持续和持续连接,(非持续连接)Non-persistent http/1.0: 服务器分析请求、响应、关闭 TCP 连接 取对象需要2 RTTs TCP 连接 对象请求/传送 每次传送都要受到TCP连接初始化时的慢启动影响 许多浏览器同时打开多个并行的连接来改善性能,(持续连接)Persistent http/1.1的默认设置 在同一TCP 连接上: 服务器分析请求、响应请求,分析新的请求、. 客户端一旦下载到了基本的html文件( base HTML )马上发送对所有引用对象的请求. 较少的 RTTs, 较少的慢启动.,第2讲:应用层,15,http 报文格式: request(请求),two types of http报文: request, response http 请求报文: 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 .,状态行 (协议状态码 状态短语),首部 诸行,数据, 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 连接到 port 80 (默认的http 服务器端口) 位于 202.117.35.70 后续键入的内容将发送到202.117.35.70 的 80 号端口,$telnet 202.117.35.70 80,2. 键入一条 http请求报文:,GET /j1010/hello.htm HTTP/1.0,将该指令键入后 (按两次回车键), 就将此最短之 (但是完整的) GET 请求发到了 http 服务器,3. 请注意观察http服务器发回的响应报文!,第2讲:应用层,20,用户-服务器的交互: 认证(authentication),认证 : 控制对服务器内容的访问 信用认证: 一般通过用户名, 口令进行 无状态: 客户端必须在每次请求前进行认证 authorization: 就是要求在每个请求报文中提交认证的首部行 如果客户端没有提交 authorization: 首部行, 服务器将拒绝访问, 只是在响应报文首部中发送 WWW authenticate:,client,server,普通 http 请求报文,401: 认证要求 WWW authenticate:,第2讲:应用层,21,Cookies: 保存 “状态”,服务器产生一个 # , 服务器认识这个 #, 以备不时之需: 认证 记忆用户的前序访问, 先前的选择 服务器在响应报文中发送 “cookie” 给客户端 Set-cookie: 1678453 客户端可以在后继的请求中发送“cookie” cookie: 1678453,client,server,普通 http 请求报文,普通 http响应报文+ 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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号