1、Application Layer,2-1,Chapter 2 Application Layer,Computer Networking: A Top Down Approach 6th edition Jim Kurose, Keith Ross Addison-Wesley March 2012,A note on the use of these ppt slides: Were making these slides freely available to all (faculty, students, readers). Theyre in PowerPoint form so y
2、ou see the animations; and can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following:,If you use these slides (e.g., in a class) that you mention their source (after a
3、ll, wed like people to use our book!) If you post any slides on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material.Thanks and enjoy! JFK/KWRAll material copyright 1996-2012J.F Kurose and K.W. Ross, All Rights Reserved,Ap
4、plication Layer,2-2,Chapter 2: outline,2.1 principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS,2.6 P2P applications 2.7 socket programming with UDP and TCP,Application Layer,2-3,Chapter 2: application layer,our goals: conceptual, implementation as
5、pects of network application protocols transport-layer service models client-server paradigm peer-to-peer paradigm,learn about protocols by examining popular application-level protocols HTTP FTP SMTP / POP3 / IMAP DNS creating network applications socket API,Application Layer,2-4,Some network apps,e
6、-mail web text messaging remote login P2P file sharing multi-user network games streaming stored video (YouTube, Hulu, Netflix),voice over IP (e.g., Skype) real-time video conferencing social networking search ,2: Application Layer,5,创建一个网络应用,编写分布式程序,使得可以 运行在不同的端系统上 通过网络相互通信 例如,web服务器软件与浏览器软件 不需为网络核
7、心设备写程序 网络核心设备不运行用户应用 在端系统上开发应用有利于应用的快速研发和部署,2: Application Layer,6,2.1.1 网络应用架构,网络应用架构规定了在各个端系统上组织应用程序的方法: 客户-服务器架构(Client-server) 对等架构(Peer-to-peer ,P2P),2: Application Layer,7,客户-服务器架构,服务器: 一台总是在线的主机,运行着服务器程序 具有永久IP地址 使用主机集群或数据中心提高处理能力 客户机: 需要时与服务器通信 可能间断地连在网络上 通常使用动态IP地址 不与其它客户机直接通信,2: Applicatio
8、n Layer,8,P2P架构,没有总是运行的服务器 任意一对端系统(对等方)间可以直接通信 对等方间断连接,并使用动态IP地址 每个对等方可以请求服务,也可以提供服务Highly scalable but difficult to manage,2: Application Layer,9,2.1.2 进程通信,进程: 主机上运行的程序 在同一个主机中,两个进程使用进程间通信机制(由OS定义)进行通信. 不同主机上的进程通过交换报文进行通信,客户进程: 发起通信的进程 服务器进程: 等待联系的进程,Note: P2P架构的应用同时具有客户进程和服务器进程,Application Layer,
9、2-10,进程与网络的接口-套接字,进程通过套接字(socket)发送和接收报文 套接字类似于一扇门: 发送进程将报文推出门 门外的运输设施(因特网)将报文送到接收进程的门口 套接字是应用层和传输层的接口,也是应用程序和网络之间的API,Internet,controlled by OS,controlled by app developer,transport,application,physical,link,network,process,transport,application,physical,link,network,process,socket,2: Application L
10、ayer,11,进程编址,为了接收报文,每个进程必须有标识主机使用IP地址进行标识 Q: 用进程所在主机的IP地址能否标识进程?,2: Application Layer,12,进程编址,为了接收报文,每个进程必须有标识主机使用IP地址进行标识 Q: 用进程所在主机的IP地址能否标识进程? A: 不能,因为同一个主机上可能运行着许多进程。端口号被用来区分同一个主机上的不同进程。,2: Application Layer,13,进程编址,为了接收报文,每个进程必须有标识主机使用IP地址进行标识 Q: 用进程所在主机的IP地址能否标识进程? A: 不能,因为同一个主机上可能运行着许多进程。端口号被
11、用来区分同一个主机上的不同进程。,进程标识包括: IP地址 与该进程关联的端口号端口号的例子: HTTP server: 80 Mail server: 25,2: Application Layer,14,2.1.3 应用需要什么样的传输服务?,Data integrity 有些应用(如音视频)可以容忍一定程度的数据丢失 有些应用(如文件传输) 要求完全可靠的数据传输,Timing 有些应用(如网络电话,交互式网络游戏)要求延迟保证 有些应用(如邮件传输)对延迟不敏感,Throughput 有些应用(如多媒体)要求保证最低可用带宽 有些应用(称弹性应用) 可以适应各种可能的带宽,Securi
12、ty 加密,数据完整性,,2: Application Layer,15,2.1.4 因特网提供的传输服务,TCP service: 面向连接: 客户进程和服务器进程需要建立连接 发送进程和接收进程之间可靠传输 流量控制: 发送进程不会“压垮”接收进程 拥塞控制: 网络超载时抑制发送进程 不提供: 及时性,最低带宽保证,UDP service: 发送进程和接收进程之间不可靠传输 不提供: 连接建立,可靠传输,流量控制,拥塞控制,及时性,最低带宽保证,Application Layer,2-16,Transport service requirements: common apps,applic
13、ationfile transfer e-mail Web documents real-time audio/videostored audio/video interactive games text messaging,data lossno loss no loss no loss loss-tolerantloss-tolerant loss-tolerant no loss,throughputelastic elastic elastic audio: 5kbps-1Mbps video:10kbps-5Mbps same as above few kbps up elastic
14、,time sensitiveno no no yes, 100s msecyes, few secs yes, 100s msec yes and no,Application Layer,2-17,Internet apps: application, transport protocols,applicatione-mail remote terminal access Web file transfer streaming multimediaInternet telephony,application layer protocolSMTP RFC 2821 Telnet RFC 85
15、4 HTTP RFC 2616 FTP RFC 959 HTTP (e.g., YouTube), RTP RFC 1889 SIP, RTP, proprietary (e.g., Skype),underlying transport protocolTCP TCP TCP TCP TCP or UDPTCP or UDP,2: Application Layer,18,2.1.5 应用层协议,应用层协议定义了: 交换的报文类型, e.g., request, response 报文语法: 报文中的字段及其描述 报文语义 各字段中信息的含义 进程何时及如何发送/响应报文的规则,公共领域协议
16、: 在RFC文档中定义 允许互操作 e.g., HTTP, SMTP专用协议: e.g., Skype,Application Layer,2-19,Chapter 2: outline,2.1 principles of network applications app architectures app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS,2.6 P2P applications 2.7 socket programming with UDP and TCP,2
17、: Application Layer,20,一些术语,Web page由一些对象(object)组成。 对象简单来说就是文件,可以是HTML文件、JPEG图像、Java小程序、音频文件, Web页通常包含一个基本HTML文件,文件中包含若干引用对象。 每个对象通过一个URL进行访问。 Example URL:,2: Application Layer,21,2.2.1 超文本传输协议-HTTP 概述,Web采用客户-服务器模式 client: 浏览器请求、接收和显示web对象 server: Web服务器应客户请求发送对象HTTP协议定义了浏览器和web服务器之间的通信规则HTTP 1.0(
18、RFC 1945)和HTTP 1.1(RFC 2068),PC running Explorer,Server running Apache Web server,Mac running Navigator,HTTP request,HTTP request,HTTP response,HTTP response,2: Application Layer,22,HTTP 概述(续),使用TCP作为传输层协议: 客户发起到服务器 80 端口的 TCP 连接(客户端创建一个套接字) 服务器接受来自客户的TCP连接(服务器端创建一个套接字) 浏览器和服务器交换HTTP报文 (通过各自的套接字) 关闭
19、TCP 连接,HTTP是“无状态的” 服务器不保存有关客户请求的任何信息,Protocols that maintain “state” are complex! past history (state) must be maintained if server/client crashes, their views of “state” may be inconsistent, must be reconciled,aside,2: Application Layer,23,2.2.2 非持久连接和持久连接,非持久 HTTP 在一个TCP连接上最多发送一个对象。 HTTP/1.0 使用非持久
20、连接。,持久 HTTP 在一个TCP连接上可以发送多个对象。 HTTP/1.1 缺省使用持久连接。,2: Application Layer,24,非持久 HTTP,假设用户输入以下URL:http:/www.someSchool.edu/someDepartment/home.index,1a. HTTP客户发起到以下HTTP 服务器进程的连接www.someSchool.edu on port 80。,2. HTTP客户将一个HTTP请求报文(包含URL)写入它的套接字,报文指示希望获取以下对象:someDepartment/home.index,1b. www.someSchool.ed
21、u上的HTTP服务器在端口80等待TCP连接,接受连接,并通知客户。,3. HTTP服务器接收请求报文,构造包含所请求对象的响应报文,将报文写入它的套接字中。,time,(包含文本及 10个Jpeg图像),2: Application Layer,25,非持久HTTP(续),5. HTTP 客户接收包含HTML文件的响应报文,显示HTML文件,解析文件发现有10个引用的jpeg对象。,6. 对于每个jpeg对象,重复步骤 1-5。,4. HTTP 服务器关闭TCP连接,time,2: Application Layer,26,非持久HTTP的响应时间,RTT (Round-Trip Time)
22、: 一个小分组从客户发送到服务器再返回客户的时间。 Response time: 建立TCP连接用时一个RTT 发送HTTP请求至收到响应的前几个字节用时一个RTT 传输文件的时间下载一个对象的时间 = 2RTT+对象传输时间 下载完整网页的时间 = 22RTT(11个对象),2: Application Layer,27,持久 HTTP,非持久HTTP 的问题: 获取每个对象需要2个RTT 每个TCP连接需要消耗操作系统资源 浏览器通常打开多个TCP连接获取引用对象,消耗资源持久 HTTP 服务器在发送响应后保持连接 同一对客户-服务器之间的后续HTTP报文可以在该连接上传输,无流水线方式:
23、 客户仅当收到前一个响应后再发送新的请求 请求每个对象用时1个RTT 请求一个网页用时12RTT 流水线方式: HTTP/1.1缺省使用该方式 客户每解析到一个引用对象就可以发送请求 可在一个RTT时间内请求所有引用对象 请求一个网页用时约3RTT,2: Application Layer,28,2.2.3 HTTP 报文格式,两类HTTP报文: 请求报文,响应报文 HTTP报文由ASCII文本构成HTTP请求报文:,2: Application Layer,29,HTTP请求报文,报头包括:,GET /somedir/page.html HTTP/1.1 Host: www.somescho
24、ol.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (extra carriage return, line feed),请求行,首部行,一个额外的回车换行表示报头结束,2: Application Layer,30,上传表单输入,Post 方法: Web页通常包含表单输入 输入的表单内容放在报文体中上传到服务器,URL 方法: 使用 GET 方法 输入内容放在请求行的URL字段中上传,如:, Application Layer,31,HTTP方法,HTTP/1.0 GET POST HEAD 要求服务器不返回
25、对象,只用一个报文头响应(实体为空),常用于故障跟踪。,HTTP/1.1 GET, POST, HEAD PUT 将文件放在报文实体中,传到URL字段指定的路径 DELETE 删除URL字段指示的文件,2: Application Layer,32,HTTP 响应报文,HTTP/1.1 200 OK Connection: close 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
26、: text/htmldata data data data data .,状态行,首部行,数据,如请求的 HTML文件,2: Application Layer,33,HTTP 响应状态代码,200 OK request succeeded, requested object later in this message 301 Moved Permanently requested object moved, new location specified later in this message (Location:) 400 Bad Request request message not
27、 understood by server 404 Not Found requested document not found on this server 505 HTTP Version Not Supported,A few sample codes:,2: Application Layer,34,Trying out HTTP (client side) for yourself,1. Telnet to your favorite Web server:,Opens TCP connection to port 80 (default HTTP server port) at c
28、is.poly.edu. Anything typed is 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
29、by HTTP server!,2: Application Layer,35,Lets look at HTTP in action,telnet example(自己试一下) Wireshark example(实验),2: Application Layer,36,2.2.4 用户与服务器交互: cookie,许多大型的Web网站都使用cookie Four components: 1) HTTP响应报文中的cookie首部行 2) HTTP请求报文中的cookie 首部行 3) 保存在用户主机的cookie文件,由用户的浏览器管理 4) Web网站的后端数据库,Example: Sus
30、an 总是从她的PC机上网 她第一次访问某个电子商务网站 当HTTP请求报文到达该网站时,网站为其创建: 一个ID 在后端数据库中为该ID建立一个表项,2: Application Layer,37,Cookies: 保存“状态”,client,server,cookie file,one week later:,backend database,2: Application Layer,38,Cookies (continued),What cookies can bring: authorization shopping carts recommendations user session
31、 state (Web e-mail),Cookies 和隐私: Cookies允许网站收集用户的大量信息 you may supply name and e-mail to sites,aside,Where to keep “state”: 服务器端:信息保存在服务器端,返回一个ID给客户 客户端:信息发回客户端,保存在cookie文件中,并随请求报文发送给服务器,2: Application Layer,39,2.2.5 Web缓存(代理服务器),用户设置浏览器:所有HTTP请求首先发往web 缓存 浏览器将HTTP请求发送给web缓存: 对象在web缓存中: web缓存返回对象 对象不
32、在web缓存中:web缓存从原始服务器获取对象,缓存在本地,然后返回给客户,代理服务器: 代表原始服务器满足HTTP请求的网络实体,保存最近请求过的对象的拷贝。,client,Proxy server,client,origin server,origin server,2: Application Layer,40,More about Web caching,Web cache既是服务器又是客户机 Web cache通常由ISP(大学,公司,住宅ISP)提供,Why Web caching? 减少客户请求的响应时间 减少机构接入链路上的流量,2: Application Layer,41,
33、Caching example,Assumptions 平均对象长度 = 1Mb 从机构浏览器到原始服务器的平均请求速率 = 15/sec 从接入路由器到原始服务器的来回延迟(RTT)= 2 sec Consequences LAN利用率 = 15% 接入链路的利用率 = 100% total delay = Internet delay + access delay + LAN delay= 2 sec + minutes + milliseconds,origin servers,publicInternet,institutional network,100 Mbps LAN,15 Mb
34、ps access link,institutional cache,2: Application Layer,42,Caching example (cont),possible solution 提高接入链路带宽至100Mbps consequence LAN利用率 = 15% 接入链路利用率 = 15% Total delay = Internet delay + access delay + LAN delay= 2 sec + msecs + msecs 链路升级的代价高昂,origin servers,publicInternet,institutional network,100
35、 Mbps LAN,100 Mbps access link,institutional cache,2: Application Layer,43,Caching example (cont),possible solution:安装web cache 假设cache命中率为 0.4consequence 40%的请求可被立即满足 60%的请求被原始服务器满足 接入链路利用率减少到60%, 延迟为10msecs total avg delay = Internet delay + access delay + LAN delay = 0.6*(2.01 secs) + 0.4*(msecs)
36、 = 1.2 secs,origin servers,publicInternet,institutional network,100 Mbps LAN,15 Mbps access link,institutional cache,2: Application Layer,44,2.2.6 条件 GET,web cache: 在GET报文中包含以下首部行 If-modified-since: server: 若发现cache中的对象是最新的,响应报文中不包含对象: HTTP/1.0 304 Not Modified server: 若发现cache中的对象过时了,响应报文中包含对象,cach
37、e,server,HTTP request msg If-modified-since: ,object not modified,HTTP request msg If-modified-since: ,HTTP response HTTP/1.0 200 OK ,object modified,2: Application Layer,45,Chapter 2: Application layer,2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, I
38、MAP 2.5 DNS,2.6 P2P file sharing 2.7 Socket programming with UDP and TCP,2: Application Layer,46,FTP: 文件传输协议,用户通过FTP用户代理,从远程主机下载文件或向远程主机上传文件 FTP采用客户-服务器模式 客户:启动传输的一方 使用TCP协议 ftp server: 使用端口21、20,file transfer,local file system,remote file system,user at host,2: Application Layer,47,使用分离的控制连接和数据连接,控
39、制连接: 使用端口21,传送客户命令和服务器响应。 控制连接在整个会话期间一直保持。数据连接: 使用端口20,传输文件 每个数据连接只传输一个文件,发送方用关闭连接表示一个文件传输结束。,建立控制连接,服务器在端口21等待客户,客户使用临时端口号建立连接,建立数据连接(主动模式),客户选择一个临时端口号,在该端口上等待服务器的连接请求客户在控制连接上用PORT命令将临时端口号发送给服务器服务器使用端口20与客户机给出的端口建立连接,有关控制连接与数据连接的问题,Q:为什么将控制连接与数据连接分开? A:不会混淆数据与命令/响应,简化协议设计和实现在传输文件的过程中可以继续执行其它的操作便于控制
40、传输过程(如客户可以随时终止传输)Q:为什么用关闭数据连接的方式结束文件传输? A:允许动态创建文件(不需预先告知文件的大小),2: Application Layer,51,Chapter 2: Application layer,2.1 Principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS,2.6 P2P file sharing 2.7 Socket programming with UDP and TCP,2: Applicatio
41、n Layer,52,2.4.1 电子邮件系统,三个主要组成部分: 用户代理 邮件服务器 简单邮件传输协议,2: Application Layer,53,用户代理,编辑、阅读、回复邮件等 e.g., Outlook, elm, Mozilla Thunderbird 将要外发的邮件发送到用户的邮件服务器 从用户邮箱中取邮件,2: Application Layer,54,邮件服务器,邮件服务器上包含: 用户信箱:存放到来的邮件 发送报文队列:存放要发送出去的邮件 报文传输代理MTA:运行在服务器后台的系统守护进程,负责在邮件服务器之间传输邮件,及将收到的邮件放入用户信箱。,电子信箱,电子信箱
42、: 由计算机上的一个存储区域(如磁盘上的一个文件)组成 每个信箱均被分配了唯一的电子邮件地址电子邮件地址: 由两个部分组成,形如:mailboxcomputer 前者为标识用户信箱的字符串,后者为信箱所在的邮件服务器的名字。,2: Application Layer,56,简单邮件传输协议-SMTP RFC 2821,邮件服务器之间传输邮件采用客户-服务器模式: 客户: 发送邮件的服务器 服务器: 接收邮件的服务器 SMTP使用TCP作为传输层协议,服务器端口为25 发送服务器和接收服务器之间直接传输邮件 SMTP采用命令/响应交互方式: 命令: ASCII文本 响应: 状态码和短语 报文只能
43、包含简单ASCII文本(7位ASCII码),2: Application Layer,57,Scenario: Alice sends message to Bob,1) Alice使用用户代理编辑邮件,发送给 bobsomeschool.edu 2) Alice的用户代理将报文发送给其邮件服务器(使用SMTP) 3) 邮件被置于邮件服务器的发送报文队列中,4) Alice的邮件服务器与Bob的邮件服务器建立TCP连接,然后发送 Alice的邮件 5) Bob的邮件服务器将邮件放置在Bob的信箱中 6) Bob调用他的用户代理阅读邮件,1,2,3,4,5,6,邮件传送阶段(1),连接与握手:
44、MTA客户与MTA服务器在端口25建立TCP连接。 服务器发送服务就绪报文 客户发送HELO报文,用域名标识自己 服务器响应,邮件传送阶段(2),2: Application Layer,59,邮件传送阶段(3),结束传输 客户发送QUIT报文 服务器响应 释放TCP连接,SMTP: final words,SMTP使用持久连接: 可以在一条TCP连接上传输多个报文 一个方向的报文传输结束后,可以在另一个方向上传输报文SMTP 服务器使用“.”表示报文结束(FTP使用关闭连接表示传输结束,HTTP使用长度域表示报文结束)SMTP要求报文(报头和实体)只包含简单ASCII文本(HTTP无此要求)
45、,2: Application Layer,61,Application Layer,2-62,2.4.2 邮件报文格式,RFC 822规定了邮件报文格式 报头由一些首部行组成,如: To: From: Subject: 实体: 只能使用简单ASCII字符,header,body,blank line,如何传输包含非ASCII文本的报文?,现在的电子邮件要求能传输其它语系的文字,甚至非文本信息(如图片、语音等)非ASCII文本形式的数据在发送前必须转换成简单ASCII文本,才能进行传输。非ASCII文本的报文大多具有特殊的数据类型,需要特殊的邮件浏览器(如JPEG图形的解压缩软件)来阅读。,B
46、ase64编码,Base64用来将一个二进制字节序列转换成由ASCII字符序列构成的文本。 每24比特数据划分成4个6比特的单元,每个单元编码成一个ASCII字符,其对应关系为: 025编码成AZ 2651编码成az 5261编码成09 62和63分别编码成和 若最后一组只有8比特或16比特,分别加上后缀和 回车和换行忽略,可以插在任何地方,Base64编码示例,quoted-printable编码,适用于绝大部分都是ASCII字符的报文实体,其编码方法是: 每个ASCII字符保持不变 对于非ASCII字符(大于127的字符),将该字符的十六进制表示用两个ASCII字符标记,前面冠以特殊字符“
47、=” 。,quoted-printable编码示例,多用途因特网邮件扩展协议MIME,扩展了RFC 822,允许实体具有不同的数据类型,并规定了非ASCII文本信息在传输时的统一编码形式 扩充了一些首部行,最重要的是: Content-Transfer-Encoding:实体采用的传输编码形式 Content-Type:实体的数据类型及子类型,2: Application Layer,69,MIME报文格式 RFC 2045, 2056,multimedia data type, subtype, parameter declaration,method used to encode data
48、,MIME version,encoded data,2.4.3 邮件访问,邮件访问方式: 早期:用户登陆到邮件服务器上,直接在服务器上运行一个邮件阅读程序来阅读邮件 今天:用户在终端上安装用户代理,获取和阅读邮件Q:能将用户信箱放在本地终端吗?,2: Application Layer,70,2.4.3 邮件访问,邮件访问方式: 早期:用户登陆到邮件服务器上,直接在服务器上运行一个邮件阅读程序来阅读邮件 今天:用户在终端上安装用户代理,获取和阅读邮件Q:能将用户信箱放在本地终端吗? A:不行,用户终端不可能一直连在因特网上Q:用户代理能使用SMTP从邮件服务器获取邮件吗?,2: Application Layer,71,2.4.3 邮件访问,邮件访问方式: 早期:用户登陆到邮件服务器上,直接在服务器上运行一个邮件阅读程序来阅读邮件 今天:用户在终端上安装用户代理,获取和阅读邮件Q:能将用户信箱放在本地终端吗? A:不能,用户终端不可能一直连在因特网上Q:能用SMTP从邮件服务器中获取邮件吗? A:不能,SMTP是一个“推”协议,只能将邮件从用户代理推送到其邮件服务器。解决方案:设计一个新的协议从服务器获取邮件,