1、2: Application Layer,1,第2章 应用层,2.1 应用层协议原理 2.2 Web应用和HTTP协议 2.3 文件传输 : FTP 2.4 Internet中的电子邮件 2.5 DNS2.6 P2P 文件共享 2.7 基于TCP的 Socket程序设计 2.8 基于UDP的 Socket程序设计 2.9 构建一个简单的 Web 服务器,2: Application Layer,2,第2章 应用层,电子邮件 Web 即时通信 远程登录 P2P 文件共享 多用户网络游戏 流式存储的音频和视频,网络电话 实时视频会议 大规模并行计算,2: Application Layer,3,构
2、造一个网络应用,写一个程序 在不同的终端系统上运行 可以在网络上通信 如: Web 服务器软件 -浏览器软件 很少给网络核心设备写软件 网络核心设备上不运行用户应用代码,2: Application Layer,4,2.1 应用层协议原理,2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 应用层协议 2.1.4 应用需要什么样的服务? 2.1.5 由传输层提供的服务,2: Application Layer,5,2.1.1 应用程序体系结构,客户端/服务器结构Client-server对等结构Peer-to-peer (P2P)客户端/服务器和对等结构的混合模型,2: App
3、lication Layer,6,2.1.1 应用体系结构: Client-server,server: 总是在线的主机 永久性IP地址 提供所请求的服务 clients: 和服务器通信 可能是动态IP地址 彼此间不直接通信 请求服务,2: Application Layer,7,2.1.1应用体系结构: 纯P2P,没有永远在线的服务器 任意终端直接通信 对等端可能用不同的IP地址间歇性连接到网络上 example: Gnutella规模很大但难于管理,Pure P2P,2: Application Layer,8,2.1.1应用体系结构:C/S和 P2P的混合,即时通信 在两个用户之间进行通
4、信的系统 分布使用/集中管理: 用户上线时向中心服务器注册他的IP地址 用户联系中央服务器来获取好友的IP,2: Application Layer,9,2.1.2 进程通信,进程(process):运行在主机上的程序 在同一台主机上,两进程使用OS支持的进程间通信方式通信 不同主机上的进程之间通过交换消息进行通信,客户端进程: 发起通信的进程 服务器进程: 等待被连接的进程,注意: P2P 结构的应用程序同时有客户端进程和服务器进程,2: Application Layer,10,2.1.2 进程通信: Socket,进程通过Socket发送/接受消息 socket 是一扇“门”,位于: 应
5、用层和传输层之间 程序设计者和OS之间,Internet,由OS控制,程序设计者操作,2: Application Layer,11,2.1.2进程通信: Socket,每个socket都有一个标示 -port(端口号) 主机通过不同的socket/端口号提供不同的应用服务,2: Application Layer,12,2.1.2 进程通信: 寻址,标示包括 IP地址和端口号(port),二者共同和主机上的进程相关联 IP 地址:32bit, 标示主机 port:16bit, 标示进程(应用程序) 向 web服务器发送HTTP 消息: IP : 202.200.142.46 Port : 8
6、0 向 服务器发送e-mail : IP : 202.200.142.46 Port : 25 向 web 服务器发送HTTP 消息 : IP : 202.43.216.251 Port : 80,2: Application Layer,13,2.1.3 应用层协议,区别“应用”和“应用层协议” 应用: 可通信的、分布式的进程 在网络上的用户空间上运行 Web:浏览器,服务器软件, HTTP Email: 用户代理, 邮件服务器, SMTP 应用层协议: 是一个应用的一部分 规定了消息的类型(请求,响应) 定义了消息的语法,格式 制定了发送/接收消息的规则,2: Application
7、Layer,14,2.1.3 应用层协议,应用电子邮件 远程终端登陆 Web 文件传输 流式多媒体远程文件服务器 网络电话,应用层协议 smtp telnet http ftp proprietary (e.g. RealNetworks) NSF proprietary (e.g., Vocaltec),底层传输协议 TCP TCP TCP TCP TCP or UDPTCP or UDP typically UDP,2: Application Layer,15,2.1.4 应用需要什么样的服务?,Data loss (差错) 需要100% 可靠数据传输的应用: e-mail, ftp 可
8、以容忍一些数据丢失的应用:音频,多媒体(loss-tolerant,容许错误),Bandwidth(带宽) 带宽敏感的应用:多媒体 带宽弹性较大的应用: web, e-mail(可以充分利用其所能得到的大或小的带宽),差错; 带宽 ; 实时性,2: Application Layer,16,2.1.4 What service does an app need?,实时性 时间敏感: 网络电话. ,实时应用. 容许延迟: web,e-mail,2: Application Layer,17,2.1.5 传输层提供的服务,FTP,HTTP,SMTP,DNS,2: Application Layer
9、,18,2.1.5 传输层提供的服务,TCP 服务: 面向连接: 在 client和 server之间建立连接 可靠传输:在发送和接收进程之间进行可靠传输 流量控制: 避免发送方淹没接收方 拥塞控制: 当网络过载时遏制发送方 不提供的服务: 时间和最小带宽保证,UDP 服务: 在发送进程和接收进程间提供不可靠的传输 不提供的服务: 建立连接, 可靠保证, 流量控制, 拥塞控制, 时间和带宽保证,2: Application Layer,19,2.1.3 应用层协议,应用电子邮件 远程终端登陆 Web 文件传输 流式多媒体远程文件服务器 网络电话,应用层协议 smtp telnet http f
10、tp proprietary (e.g. RealNetworks) NSF proprietary (e.g., Vocaltec),底层传输协议 TCP TCP TCP TCP TCP or UDPTCP or UDP typically UDP,2: Application Layer,20,2.2 WWW(World Wide Web),2.2.1 HTTP 概述 2.2.2 非持续性和持续性连接 2.2.3 HTTP 报文格式 2.2.4 用户和服务器的交互 :Cookies 2.2.5 HTTP 内容 2.2.6 Web 缓存,2: Application Layer,21,2.2
11、.1 Web和HTTP,Web 网页包括若干对象 对象的类型可以是 HTML文档, JPEG图片, Java 小应用程序, 音频文件, 每个对象的地址通过URL表示 例如:,浏览器: Web的用户代理 MS Internet Explorer 提供Web服务的服务器称为Web server: Apache; MS Internet Information Server(IIS),2: Application Layer,22,2.2.1 Web: http 协议,http: hypertext transfer protocol超文本传输协议 Web的应用层协议 定义消息格式 ; 怎样发送数据
12、 client/server 模式 TCP ; port 80 无状态协议 http1.0 (非持续连接)http1.1(持续连接),2: Application Layer,23,http 例,假定用户键入 URL http server,1a. 通过80端口向服务器发起连接,4. 关闭TCP连接,2: Application Layer,24,2.2.2 HTTP 连接,非持续性 HTTP 一个TCP连接最多传送一个对象 在 HTTP/1.0中使用,持续性HTTP 在一个TCP连接中可以传送多个对象 在 HTTP/1.1中使用,2: Application Layer,25,2.2.3
13、 http 报文格式: 请求,http报文有两种类型: 请求, 响应 http 请求报文: ASCII (人类可以阅读的格式),GET /somedir/page.html HTTP/1.0 User-agent: IE/5.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr (extra carriage return, line feed),2: Application Layer,26,2.2.3 http 报文格式: 请求,GET /somedir/page.html HTTP/1.0 User-agent: Moz
14、illa/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr,2: Application Layer,27,2.2.3 http 报文格式: 响应,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/htmldata data data data data .,2:
15、Application Layer,28,2.2.3 http 报文格式: 响应,HTTP/1.0 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Last-Modified: Mon, 22 Jun 1998 . Content-Length: 6821 Content-Type: text/htmldata data data data data .,2: Application Layer,29,2.2.3 http 报文格式: 响应,200 OK 请求成功, 所请求的对象在后续的报文中 301 Moved Permanently 请求的对象位置移动
16、了, 新位置在后续报文中 400 Bad Request 服务器无法读取请求报文 404 Not Found 本服务器上没有所请求的文档 505 HTTP Version Not SupportedHTTP版本不支持,server-client 的响应报文的第一行中的部分代码.,2: Application Layer,30,自己尝试一个 HTTP (作为客户端),1. Telnet 一个你喜欢的 Web server:,Opens TCP connection to port 80 (default HTTP server port) at cis.poly.edu. Anything ty
17、ped in sent to port 80 at cis.poly.edu,telnet cis.poly.edu 80,2. Type in a GET HTTP request:,GET /ross/ HTTP/1.1 Host: cis.poly.edu,By typing this in (hit carriage return twice), you send this minimal (but complete) GET request to HTTP server,3. Look at response message sent by HTTP server!,2: Appli
18、cation Layer,31,2.2.3 http message format: respone,2: Application Layer,32,2.2.3 http message format: respone,2: Application Layer,33,telnet 80 GET /index.html HTTP/1.0,2: Application Layer,34,2.2.4 用户-服务器交互: cookies,cookies 可以: 用户身份认证 用户会话状态 (Web e-mail) cookies 能让站点了解“你”,怎样维护 “状态 ”: cookies: 由htt
19、p报文携带信息 cookie 文件存放在用户主机上,由用户的浏览器管理 服务器端有后台数据库,2: Application Layer,35,2.2.4 用户-服务器交互: cookies,server 为该用户创建ID 1678,在后台数据库登记,访问,访问,一周后:,2: Application Layer,36,2.2.6 Web 高速缓存(代理服务器),用户设置浏览器: 通过web cache访问网页 客户端将所有http请求发送给 web cache 如果所请求的对象在 web cache上,则 web cache 在http响应报文中立刻返回该对象,否则,向原始服务器请求该对象,并
20、向客户端返回对象,代理服务器,2: Application Layer,37,2.2.6 Web Caching的优点,优点: 响应时间短: 减少通信量,例: (1) 每个请求对象 100kb(2) 15 个/ 秒 请求(3) 时间延迟 =2秒( 路由器B 发送一个请求到接收到响应) LAN 通信量= (15req./s* 100kb/req.)/10Mb/s = 0.15 接入网通信量= (15req./s* 100kb/req.)/1.5Mbps = 1 若在proxy server命中40, 则 10.6,2: Application Layer,38,2.3 ftp: 文件传输协议,向
21、远程主机 发送/接收 文件 client/server model client: 发起传输 server: 远程主机 ftp server: port 21, 20,2: Application Layer,39,ftp: 控制和数据连接分离,“out of band control” 带外控制 开启两个平行的TCP连接: 控制 ( port 21) : 在客户端和服务器之间交换命令和响应 数据 ( port 20) : 向服务器发送/接收文件的数据 ftp server 维护状态信息: 当前目录,从前的用户记录等,2: Application Layer,40,2.4 电子邮件,2.4.1
22、 SMTP 2.4.2 SMTP 和 http的比较 2.4.3 邮件消息格式和MIME 2.4.4 邮件接收协议: POP3,IMAP,2: Application Layer,41,2.4 电子邮件,三个主要组成部分: 1. 用户代理 2. 邮件服务器 3. 简单邮件传输协议: smtp,1. 用户代理提供菜单图形方式与电子邮件系统交互,读取,显示,发送邮件 例:Outlook,2: Application Layer,42,2.4 电子邮件: 邮件服务器,2. 邮件服务器将消息从出发地传到目的地,是后台运行的系统程序,在系统间传输邮件 邮箱 : 存放收到的邮件 消息队列:存放要发送的邮件
23、 smtp 协议 : 用于邮件服务器间发送邮件 “client”: 发送邮件的服务器 “server”: 接收邮件的服务器,2: Application Layer,43,2.4.1 电子邮件: smtp,基于TCP协议 ,port 25, 客户端到服务器的可靠传输 直接发送: 由发送服务器到接收服务器直接传送(不经过第3个服务器) 3阶段传送: 握手 传送消息 关闭连接 使用命令/响应交互方式 命令: ASCII text 响应: 状态码及简短说明 报文要用 7-bit ASCII编码,2: Application Layer,44,场景: Alice给 Bob发送邮件,1) Alice 使
24、用用户代理编辑邮件,并发送到 bobsomeschool.edu 2) Alice的用户代理将邮件发送到她的邮件服务器,邮件存放到邮件队列中 3) SMTP中的客户端的邮件服务器发起到Bobs邮件服务器的连接,4) SMTP 客户端使用TCP协议发送Alice的邮件 5) Bob的邮件服务器将收到的邮件放进Bob的邮箱 6) Bob 使用用户代理阅读邮件,1,2,3,4,5,6,2: Application Layer,45,2.4.2 smtp 和 http 的比较,http: pull (”拉“数据流) email: push(”推“数据流) Smtp和http都使用 ASCII码和状态代
25、码进行交互 http: 每个对象都封装在不同的响应报文中 smtp: 将所有对象封装在一个报文中(SMTP 使用持续性连接),2: Application Layer,46,2.4.3 邮件消息格式:SMTP(1),SMTP: Simple Mail Transfer Protocol, 简单邮件传输协议 消息格式: 头部行,例如 To: From: Subject:内容 邮件内容,只能用 ASCII 码,2: Application Layer,47,2.4.3 邮件消息格式: MIME(2),MIME: Multipurpose Internet Mail Extension protoc
26、ol多用途因特网邮件扩展协议 在报文头部有一行声明 MIME 类型(图像等要先转化为ASCII码才能发送),Text Image Audio Video Application,2: Application Layer,48,多类型邮件,From: alicecrepes.fr To: bobhamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789-98766789 Content-Transfer-Encoding: quo
27、ted-printable Content-Type: text/plainDear Bob, Please find a picture of a crepe. -98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpegbase64 encoded data . . base64 encoded data -98766789-,2: Application Layer,49,2.4.4 邮件访问协议,邮件访问协议: 从server获取邮件 pull POP: Post Office Protocol (邮局协议)
28、身份认证 (用户代理 服务器) ; 下载 eg. sina IMAP: Internet Mail Access Protocol (因特网邮件访问协议) 性能更好 (更复杂) 可以处理在服务器上存储的邮件 HTTP: Hotmail , Yahoo! Mail, etc.,receivers mail server,Mail 送到接收邮件服务器上,读取邮件有2种方式: 1. 登录到server上,打开mail box 直接阅读。 2. 通过邮件接收器(Outlook)将server上的mail “移至”本地PC上(pop3),2: Application Layer,50,Mail appl
29、ication,2: Application Layer,51,Mail application,2: Application Layer,52,Mail application,2: Application Layer,53,Mail application,,2: Application Layer,54,Mail application,2: Application Layer,55,2.5 DNS: Domain Name System,2.5.1 DNS提供的服务 2.5.2 DNS基本工作原理 集中式设计 层级分布式 DNS: 两种请求方式 回顾: client/server ht
30、tp 示例,2: Application Layer,56,2.5 DNS: Domain Name System,Domain: 域是按某种规则的一些划分。每个域可划分为子域,形成二级域、三级域表示为:.三级域名. 二级域名. 顶级域名 树型结构,2: Application Layer,57,2.5.1 DNS提供的服务,Domain Name System: IP地址和域名的映射 在由名称服务器构成的层次结构中实现的分布式数据库 应用层协议,2: Application Layer,58,DNS server(ipconfig/all),2: Application Layer,59,D
31、NS server(ipconfig/all),2: Application Layer,60,Nslookup,2: Application Layer,61,2.5.2 DNS基本工作原理,集中式设计 一个域名服务器包含所有的映射 问题: 单点故障:一点坏,全网坏 通信容量:巨大的访问量 远距离的集中式数据库:远距离访问延迟大 维护:频繁更新(身份认证,授权等),不可能有一台服务器包含网路上所有的域名到IP的映射,2: Application Layer,62,2.5.2 DNS基本工作原理,(2)层级分布式 根root name servers: 与顶级域名服务器或本地域名服务器相通,响
32、应其请求 顶级域名(TLD)top-level domain name servers: 与local name server相通,响应其请求 权威 authoritative name server: root 中找不到时,root提供一个权威服务器,可能是专用的,也可能是一个local name server 本地local name servers: 直接和用户PC相通的server 每个ISP, 公司都有 local (default) name server 主机的 DNS 请求首先发给local name server 好像一个代理,在层级中转发DNS请求.,两种请求方法: 1.
33、递归查询 2. 迭代查询,2: Application Layer,63,2.5.2 DNS基本工作原理,1. 递归查询,2. 迭代查询,2: Application Layer,64,2.5.3 DNS 报文,请求和响应报文具有相同的报文格式,2: Application Layer,What happened when you click a URL?,(1) browser asks DNS for IP addr. of the URL. (2) DNS replies with IP address.(3) browser makes a TCP connection to IP a
34、ddr.(4) browser sends a GETcommand.,Domain Name server,Client,Server,(5) The URL server sends the file index.html. (6) TCP connection is released.,(7) display,2: Application Layer,66,2.6 P2P file sharing,Server/Client 所有用户和一个服务器通信peer-to-peer 用户之间共享资源,直接通信 存在问题:如何确定哪个计算机上有自己所需要的资源?,集中式目录: Napster,QQ
35、 洪泛式查询: Gnutella 利用不均匀性:KaZaA,2: Application Layer,67,2.6 P2P: (1) 集中式目录,“Napster” 的设计方案 1) 当对等机连网时,告知中央服务器: IP地址 共享资源内容 中央服务器为共享资源建立一个数据库,并维护。 用户通过中央服务器了解享有资源的对等机地址,直接联系对等机传送文件,文件传输是非集中的,但是内容定位过程是高度集中的,2: Application Layer,68,2.6 P2P: (1) 集中式目录,存在问题单点故障 性能瓶颈 版权问题,2: Application Layer,69,2.6 P2P: (2
36、) 洪泛式查询: Gnutella,File transfer: HTTP,完全分布式定位内容没有中央服务器通过已有的TCP连接发送请求报文 对等机转发请求报文 (洪泛式转发),2: Application Layer,70,2.6 P2P: (2) 洪泛式查询: Gnutella,覆盖网: 图 如果对等端X和Y之间有TCP连接,则认为X和Y之间有一条边 所有活动的对等端和边构成覆盖网 “边”并不是实际的物理线路 对给定的对等端,通常在覆盖网上的邻居节点10个。,2: Application Layer,71,Gnutella: 对等端的加入,要加入的对等端X必须首先发现覆盖网中的其他一些对等
37、端: 使用一张候选对等端列表 X顺次尝试和列表中的对等端建立TCP 连接,直到找到Y并建立连接 X 给Y发送一个Ping报文,Y给出ping响应.同时向所有邻居节点转发该Ping报文 所有对等端向X返回一个Pong消息,包含该节点的信息 X接收到其他对等端的Pong消息,并与其他节点建立TCP连接 对等端的离开?,2: Application Layer,72,2.6 P2P: (3) 利用不均匀性: KaZaA,每个对等端要么是“组长”,要么隶属于某个“组” 每个对等端和其组长之间有TCP连接. 组长之间也有TCP连接. 组长在其组员之间遍历内容.,2: Application Layer,
38、73,2.6 P2P: (3) KaZaA: Querying,每个文件都有一个哈希号及其描述 client向组长发送查询关键字 如果匹配则组长发响应 否则转发给其他组长,其他组长在组内遍历内容,匹配则发回响应 用户选择文件进行下载,2: Application Layer,74,Charpter 2 review,review,TCP,UDP,FTP 20,21,Telnet 23,HTTP 80,SMTP 25,DNS 53,2: Application Layer,75,HTTP- hypertext transfer protocol 超文本传输协议 URL - uniform res
39、ource locator 统一资源定位器 IIS - Internet Information Server Internet信息服务器 FTP - file transfer protocol 文件传输协议 SMTP - Simple Mail Transfer Protocol 简单邮件传输协议 MIME - Multipurpose Internet Mail Extension protocol多用途因特网邮件扩展协议 POP - Post Office Protocol 邮局协议 IMAP - Internet Mail Access Protocol 因特网邮件访问协议 DNS
40、- Domain Name System 域名系统 P2P - peer-to-peer 点到点,2: Application Layer,76,2: Application Layer,77,2: Application Layer,78,2.5.3 DNS 记录,DNS: 分布式数据库存储资源记录 (RR),Type=NS name 是域名 value 是查询该域中主机IP地址的权威DNS服务器的主机名,Type=A name 是主机名 value 是主机对应的IP地址,Type=CNAME name 是某个主机的“别名” value 是该主机的规范名,Type=MX value 是和name相关联的邮件服务器的主机名,