
计算机网络-自顶向下方法:第2章 应用层.ppt
158页P&EEP&EE第第2章章 应用层应用层 网络应用是计算机网络的重要功能之一网络应用是计算机网络的重要功能之一ü20世纪世纪80年代:年代:基于文本的电子邮件、文件传输、基于文本的电子邮件、文件传输、文本聊天等等文本聊天等等ü20世纪世纪90年代:年代:Web应用、应用、IP、视频会议等视频会议等ü20世纪末:世纪末:即时讯息、即时讯息、 P2P对等文件共享对等文件共享1 Chapter2P&EEP&EE学习目标和主要内容学习目标学习目标 网络应用的原理和实现方面的知识网络应用的原理和实现方面的知识主要内容主要内容ü应用层概念:应用层概念:应用层协议、客户机与服务器、进程、应用层协议、客户机与服务器、进程、套接字和运输层接口套接字和运输层接口ü应用程序:应用程序:Web、电子邮件、域名系统、电子邮件、域名系统DNS及及P2P对等对等文件共享文件共享ü开发网络应用程序的方法:开发网络应用程序的方法:套接字套接字API编程2 Chapter2P&EEP&EE本章内容2.1 应用层协议原理应用层协议原理2.2 Web和和HTTP2.3 FTP 2.4 电子邮件电子邮件2.5 DNS2.6 P2P 文件共享文件共享2.7 TCP的套接字的套接字 编程编程2.8 UDP的套接字的套接字 编程编程2.9 构建一个构建一个 Web 服务器服务器2.10 小结小结3 Chapter2P&EEP&EE流行的网络应用程序流行的网络应用程序rE-mailrWebr即时讯息即时讯息r远程注册远程注册rP2P文件共享文件共享r多用户网络游戏多用户网络游戏r流式存储视频片段流式存储视频片段r因特网因特网r实时视频会议实时视频会议r大规模并行计算大规模并行计算编制应用程序编制应用程序4 Chapter2P&EEP&EE网络应用程序的研发要点网络应用程序的研发要点r写出能够分别写出能够分别在不同端系统运行在不同端系统运行,并通过网络,并通过网络相互通信相互通信的程序。
的程序 如如Web应用程序,由两个可以相互通信的程序组成应用程序,由两个可以相互通信的程序组成ü浏览器程序:浏览器程序:运行在用户主机上;运行在用户主机上;üWeb服务器程序:服务器程序:运行在运行在Web服务器主机上服务器主机上r应用程序软件只在端系统运行,不需在网络核心设备上应用程序软件只在端系统运行,不需在网络核心设备上运行m网络核心设备无应用层,只有较低层网络核心设备无应用层,只有较低层 如图如图2-15 Chapter2P&EEP&EE本节内容2.1.1 网络应用程序体系结构网络应用程序体系结构2.1.2 进程通信进程通信 2.1.3 应用层协议应用层协议 2.1.4 应用所需要的服务应用所需要的服务2.1.5 因特网运输协议提供的服务因特网运输协议提供的服务2.1.6 本书介绍的网络应用本书介绍的网络应用Web、、文件传输、电子邮件、目录服文件传输、电子邮件、目录服务、对等文件共享等五个务、对等文件共享等五个6 Chapter2P&EEP&EE2.1.1 网络应用程序体系结构网络应用程序体系结构r应用程序体系结构:应用程序体系结构:规定如何在各种端系统上组规定如何在各种端系统上组织应用程序,由研发者设计织应用程序,由研发者设计 。
r 三种类型:三种类型:ü 客户机客户机/ /服务器服务器ü 对等对等 (P2P)ü 客户机客户机/服务器与服务器与P2P的混合的混合7 Chapter2P&EEP&EE1、客户机、客户机/服务器体系结构服务器体系结构服务器服务器:: m总是打开总是打开m为为多个客户机多个客户机请求提供服务请求提供服务m永久的永久的IPIP地址地址m可扩展为服务器场(主机群集)可扩展为服务器场(主机群集) 客户机:客户机:m总是打开或间歇打开总是打开或间歇打开m向服务器发出请求向服务器发出请求m具有动态的具有动态的IPIP地址地址m彼此之间彼此之间不直接通信不直接通信 如如Web应用程序:总是打开的应用程序:总是打开的Web服务器为运行在客户机主机上服务器为运行在客户机主机上的浏览器的请求提供服务(接收客户机请求,并发送响应结果)的浏览器的请求提供服务(接收客户机请求,并发送响应结果) 服务器响应服务器响应 客户请求客户请求8 Chapter2P&EEP&EE2、纯、纯P2P体系结构体系结构((peer-to-peer)) m无(最少)打开无(最少)打开的服务器的服务器m任意端系统任意端系统(对等方)(对等方)可以可以直接通信直接通信m对等方对等方间歇地连接间歇地连接,,IPIP地址地址不固定不固定m例:文件分发、因特网例:文件分发、因特网等。
等可扩展度高、难以管理可扩展度高、难以管理9 Chapter2P&EEP&EE3、客户机、客户机/服务器与服务器与P2P的混合的混合rNapster::MP3文件共享应用程序文件共享应用程序 mP2P::对等方直接交换对等方直接交换MP3文件文件m服务器注册服务器注册/定位:定位:•对等方在中心服务器上对等方在中心服务器上注册内容注册内容•对等方查询相同的中心服务器以对等方查询相同的中心服务器以定位内容定位内容r即时讯息:即时讯息:mP2P:两个用户直接聊天:两个用户直接聊天m服务器检测服务器检测/定位:定位:•用户时,向中心服务器用户时,向中心服务器注册其注册其IP地址地址•用户联系中心服务器以用户联系中心服务器以找到聊天伙伴的找到聊天伙伴的IP地址地址10 Chapter2P&EEP&EE2.1.2 进程通信进程通信r进程进程 (process)(process)::在主机上运行的程序在主机上运行的程序r进程通信:进程通信:ü同一主机中两个进程间的通信:同一主机中两个进程间的通信:由由操作系统操作系统控制;控制;ü不同主机中进程间的通信:不同主机中进程间的通信:通过网络交换通过网络交换报文报文进行。
进行 发送进程:发送进程:产生报文并向网络发送;产生报文并向网络发送; 接收进程:接收进程:接收报文,并回送报文接收报文,并回送报文如图如图2-111 Chapter2P&EEP&EE1、客户机和服务器进程、客户机和服务器进程r网络应用程序由网络应用程序由成对的进程组成成对的进程组成,并通过网络相互发,并通过网络相互发送报文如图如图2-1 r根据功能分别标示为客户机和服务器根据功能分别标示为客户机和服务器ü客户机进程:客户机进程:发起通信的进程发起通信的进程ü 服务器进程:服务器进程:等待其他进程联系的进程等待其他进程联系的进程 如如Web应用程序中,一个客户机浏览器进程向某应用程序中,一个客户机浏览器进程向某个个Web服务器进程发起联系,交换报文服务器进程发起联系,交换报文12 Chapter2P&EEP&EE说明:说明: P2P结构的应用程序也可分别看成是客户机进程结构的应用程序也可分别看成是客户机进程或服务器进程或服务器进程 如,对等方如,对等方A((客户机客户机)请求对等方)请求对等方B((服务器服务器))发送某个文件。
发送某个文件13 Chapter2P&EEP&EE2、套接字、套接字(socket)ü套接字:套接字:同一台主机内同一台主机内应用层与运输层应用层与运输层之间的接口之间的接口 也叫应用程序和网络之间的也叫应用程序和网络之间的应用程序应用程序接口接口API , ,是是在网络上建立网络应用程序的在网络上建立网络应用程序的可编程接口可编程接口进程具有缓存、变量的TCP套接字套接字主机或服务器进程具有缓存、变量的TCP套接字套接字主机或服务器因特网由操作系统控制由应用研发者控制应用层应用层运输层运输层14 Chapter2P&EEP&EE进程与套接字关系进程与套接字关系ü进程类似进程类似房子房子,套接字是进程的,套接字是进程的门门ü进程通过进程通过套接字套接字在网络上发送和接收报文在网络上发送和接收报文进程具有缓存、变量的TCP套接字套接字主机或服务器进程具有缓存、变量的TCP套接字套接字主机或服务器因特网由操作系统控制由应用研发者控制ü发送进程:发送进程:把报文推把报文推出门(套接字)出门(套接字)ü传送报文:传送报文:通过下面通过下面网络把报文传送到目网络把报文传送到目的进程门口。
的进程门口ü接收进程:接收进程:通过其门通过其门(套接字)接收报文(套接字)接收报文 15 Chapter2P&EEP&EE说明说明ü应用程序开发者应用程序开发者可以控制可以控制套接字应用层套接字应用层端的全部;端的全部;ü对套接字的对套接字的运输层端几乎运输层端几乎不能控制不能控制(只能选择运输(只能选择运输层协议、设定几个运输层层协议、设定几个运输层参数等)参数等)ü应用程序开发者选择了一应用程序开发者选择了一个运输层协议,则应用程个运输层协议,则应用程序就建立在由该协议提供序就建立在由该协议提供的运输层服务之上如的运输层服务之上如TCP协议进程具有缓存、变量的TCP套接字主机或服务器进程具有缓存、变量的TCP套接字主机或服务器因特网由操作系统控制由操作系统控制由应用研发者控制由应用研发者控制16 Chapter2P&EEP&EE3、进程寻址、进程寻址ü主机上的进程可以有多个主机上的进程可以有多个ü网络中有多个主机网络中有多个主机,每个主机上有多个进程每个主机上有多个进程r进程识别信息:表示进程识别信息:表示哪台主机上的哪一个进程哪台主机上的哪一个进程 源主机上的进程向目的主机上的进程发送报文时,源主机上的进程向目的主机上的进程发送报文时,应带有接收进程的识别信息(标识)。
应带有接收进程的识别信息(标识)r进程寻址:进程寻址: 根据根据进程识别信息进程识别信息找到相应进程找到相应进程如何识别如何识别进程?进程?确定主机确定主机确定进程确定进程17 Chapter2P&EEP&EE进程识别信息(两部分)进程识别信息(两部分)r主机名称或地址:主机名称或地址:网络中的哪一个主机网络中的哪一个主机 因特网中,用因特网中,用IP地址地址标识标识((32位,全球惟一)位,全球惟一)r进程的标识:进程的标识:主机中的哪一个进程主机中的哪一个进程 因特网中,采用因特网中,采用端口号端口号标识标识(port number)ü常用的应用程序被指派固定的端口号常用的应用程序被指派固定的端口号((周知端口)周知端口) 如,如,Web服务进程服务进程(HTTP协议协议)::80 邮件服务进程邮件服务进程(SMTP协议协议)::25ü创建一个新的网络应用程序时,必须分配一个新的端创建一个新的网络应用程序时,必须分配一个新的端口号18 Chapter2P&EEP&EE4、用户代理(、用户代理(user agent)) 是用户与网络应用程序之间的接口。
是用户与网络应用程序之间的接口如如: :üWebWeb应用的用户代理:应用的用户代理:是一些浏览器软件是一些浏览器软件 一个通过套接字收发报文,并提供用户接口的进程一个通过套接字收发报文,并提供用户接口的进程ü电子邮件应用程序用户代理:电子邮件应用程序用户代理:是是““邮件阅读器邮件阅读器”” 允许用户进行邮件的撰写和阅读允许用户进行邮件的撰写和阅读19 Chapter2P&EEP&EE2.1.3 应用层协议应用层协议 定义了定义了运行在不同端系统上的应用程序运行在不同端系统上的应用程序进程间传进程间传递报文的格式和方式递报文的格式和方式r具体内容:具体内容: ü交换的报文类型:交换的报文类型:如请求报文和响应报文;如请求报文和响应报文;ü各种报文类型的语法:各种报文类型的语法:报文中的各个字段及描述;报文中的各个字段及描述;ü字段的语义:字段的语义:字段包含信息的含义;字段包含信息的含义;ü进程何时、如何发送报文及对报文进行响应的规则进程何时、如何发送报文及对报文进行响应的规则20 Chapter2P&EEP&EE说明说明r公共领域协议:公共领域协议:由标准文档由标准文档RFC定义,如定义,如HTTP。
专用层协议:专用层协议:如如P2P使用的协议使用的协议r应用层协议应用层协议是网络应用的一部分是网络应用的一部分 如如Web应用,客户机从应用,客户机从Web服务器获得服务器获得“文档文档”ü组成:组成:HTML、、Web浏览器、浏览器、Web服务器程序,以及服务器程序,以及一个应用层协议一个应用层协议HTTP(超文本传输协议超文本传输协议)等üHTTP定义了在浏览器程序和定义了在浏览器程序和Web服务器程序间传输的服务器程序间传输的报文格式和序列报文格式和序列 ü其他协议:电子邮件协议其他协议:电子邮件协议SMTP等等等等21 Chapter2P&EEP&EE2.1.4 应用程序所需要的服务应用程序所需要的服务q应用程序间通信:应用程序间通信:由由运输协议运输协议跨越网络将发送进程的跨越网络将发送进程的报文传输到接收进程的门户报文传输到接收进程的门户 ü需要使用运输协议所提供的服务需要使用运输协议所提供的服务ü运输协议有多种,提供的服务不同运输协议有多种,提供的服务不同进程具有缓存、变量的TCP套接字主机或服务器进程具有缓存、变量的TCP套接字主机或服务器因特网由操作系统控制由应用研发者控制22 Chapter2P&EEP&EE应用程序需要什么样的运输服务?应用程序需要什么样的运输服务?r可靠的数据传输(无数据丢失)可靠的数据传输(无数据丢失)ü数据不能丢失的应用:数据不能丢失的应用:如文件传输、金融事务等。
如文件传输、金融事务等ü能容忍数据丢失的应用:能容忍数据丢失的应用:如多媒体应用如多媒体应用 r带宽(数据传输率)带宽(数据传输率)ü带宽敏感的应用:带宽敏感的应用:需要特定的带宽才能正常工作需要特定的带宽才能正常工作 如,因特网、其他多媒体应用如,因特网、其他多媒体应用ü弹性应用:弹性应用:使用的带宽多或少影响不大使用的带宽多或少影响不大 如电子邮件、文件传输以及如电子邮件、文件传输以及Web传输r定时(数据传输的时间限制)定时(数据传输的时间限制)ü交互式实时应用:交互式实时应用:对时间敏感,要求时延小如,因特网对时间敏感,要求时延小如,因特网、视频会议以及多方游戏等视频会议以及多方游戏等ü非实时应用:非实时应用:时延无限制,低更好时延无限制,低更好 23 Chapter2P&EEP&EE典型应用的运输服务要求典型应用的运输服务要求应用程序应用程序文件传输文件传输电子邮件电子邮件Web 文档文档实时音频实时音频/视频视频(因特网(因特网/视频会议)视频会议)存储音频存储音频/视频视频交互式游戏交互式游戏即时讯息即时讯息数据丢失数据丢失不能丢失不能丢失 不能丢失不能丢失 不能丢失不能丢失 容忍丢失容忍丢失 容忍丢失容忍丢失 容忍丢失容忍丢失 不能丢失不能丢失 带宽带宽弹性弹性弹性弹性弹性弹性音频音频: 5kbps-1Mbps视频视频:10kbps-5Mbps同上同上 几几kbps以上以上弹性弹性时间敏感时间敏感不不不不不不是是, 100 ms是是, , 几秒几秒是是, , 100 ms是和不是是和不是24 Chapter2P&EEP&EE2.1.5 因特网运输协议提供的服务因特网运输协议提供的服务两个运输层协议:两个运输层协议:m用户数据报协议用户数据报协议UDPm传输控制协议传输控制协议TCP ü每个协议为调用它们的应用程序提供不同的服务模型。
每个协议为调用它们的应用程序提供不同的服务模型ü在创建一个新的因特网应用时,要选择其中一个在创建一个新的因特网应用时,要选择其中一个 25 Chapter2P&EEP&EE1、、TCP服务服务q两个方面:两个方面:ü面向连接的服务:面向连接的服务:ü可靠的传输服务:可靠的传输服务:26 Chapter2P&EEP&EE面向连接的服务面向连接的服务r划分三阶段划分三阶段ü建立连接(握手过程):建立连接(握手过程): 客户机程序和服务器程序之间互相交换控制信息,客户机程序和服务器程序之间互相交换控制信息,在两个进程的在两个进程的套接字之间建立一个套接字之间建立一个TCP连接连接ü传输报文:传输报文: 连接是连接是全双工全双工的,即连接双方的进程可以在此连的,即连接双方的进程可以在此连接上同时进行报文收发接上同时进行报文收发ü拆除连接:拆除连接: 应用程序报文发送结束应用程序报文发送结束27 Chapter2P&EEP&EE可靠的传输服务可靠的传输服务ü通信进程可以通信进程可以无差错、按适当顺序无差错、按适当顺序交付发送的交付发送的数据。
数据 ü没有数据丢失和重复没有数据丢失和重复28 Chapter2P&EEP&EE拥塞控制拥塞控制 当发送方和接收方之间的网络出现拥塞时,当发送方和接收方之间的网络出现拥塞时,会抑会抑制发送进程速率制发送进程速率 对整个网络有益对整个网络有益29 Chapter2P&EEP&EE未提供的服务未提供的服务ü不确保最小传输速率:不确保最小传输速率:发送进程受拥塞控制机制制约;发送进程受拥塞控制机制制约;ü不提供时延保证:不提供时延保证:数据传输的时间不确定数据传输的时间不确定 TCP协议能保证交付所有的数据,但并不保证这协议能保证交付所有的数据,但并不保证这些数据传输的速率以及期待的传输时延些数据传输的速率以及期待的传输时延 TCP协议协议不适合实时应用不适合实时应用 30 Chapter2P&EEP&EE2、、UDP服务服务提供提供最小服务模式最小服务模式运行ü无连接:无连接:两个进程通信前没有握手过程;两个进程通信前没有握手过程;ü不可靠数据传输:不可靠数据传输:不保证报文能够被接收,或收到的不保证报文能够被接收,或收到的报文是乱序到达。
报文是乱序到达ü没有拥塞控制机制:没有拥塞控制机制:发送进程可以任何速率发送数据发送进程可以任何速率发送数据ü不提供时延保证:不提供时延保证:r适于实时应用适于实时应用31 Chapter2P&EEP&EE因特网应用、应用协议与运输协议因特网应用、应用协议与运输协议 应用应用 应用层协议应用层协议传输协议传输协议电子邮件电子邮件 SMTP TCP远程终端访问远程终端访问 Telnet TCPWeb HTTP TCP文件传输文件传输 FTP TCP远程文件服务器远程文件服务器 NFS UDP或或TCP流媒体流媒体 HTTP、、RTP UDP或或TCP因特网因特网 SIP、、RTP 典型用典型用UDP32 Chapter2P&EEP&EE2.2 Web应用和应用和HTTP协议协议产生于产生于20世纪世纪90年代初期年代初期ü改变了人们与工作环境内外的交流方式;改变了人们与工作环境内外的交流方式;ü提升因特网地位;提升因特网地位;ü生活和工作发生变化;生活和工作发生变化;ü方便、快捷得到所需要的信息(方便、快捷得到所需要的信息(按需操作按需操作););ü任何人在任何人在Web上发布信息;上发布信息;ü超链接和搜索引擎帮助人们浏览超链接和搜索引擎帮助人们浏览Web站点。
站点33 Chapter2P&EEP&EE本节内容2.2.1 HTTP概况概况2.2.2 HTTP连接连接2.2.3 HTTP报文格式报文格式2.2.4 用户与服务器交互:用户与服务器交互:Cookie2.2.5 HTTP内容内容2.2.6 Web缓存缓存 2.2.7 条件条件GET方法方法34 Chapter2P&EEP&EE2.2.1 HTTP概况概况rHTTP(超文本传输协议):(超文本传输协议): 应用层协议,应用层协议,Web的核心r包括两部分:包括两部分:ü客户机程序客户机程序ü服务器程序服务器程序 分别运行在不同的端系统中,通过分别运行在不同的端系统中,通过交换交换HTTP报文报文进行会话进行会话qHTTP协议协议定义了报文的格式以及客户机和服务器定义了报文的格式以及客户机和服务器交换报文的方式交换报文的方式 35 Chapter2P&EEP&EEWeb常用术语常用术语rWeb页页(文档文档)::由若干由若干对象对象组成 对象:对象:是文件是文件通过一个通过一个URL地址地址来寻址如来寻址如HTML文件、文件、JPEG图形文件、图形文件、Java小程序等。
小程序等ü Web页含有页含有一个基本的一个基本的HTML文件及几个引用对象文件及几个引用对象 例如,一个例如,一个Web页包含页包含HTML文本和文本和5个个JPEG图图形文件(即有形文件(即有6个对象)个对象)ü 在基本的在基本的HTML文件中,文件中,每个对象可由每个对象可由URL来寻址 超文本标记语言超文本标记语言 统一资源定位符统一资源定位符 36 Chapter2P&EEP&EEWeb常用术语常用术语üURL::Uniform Resource Locator统一资源定位符统一资源定位符标识万维网标识万维网WWW上的各种文档,全网范围唯一上的各种文档,全网范围唯一üURL地址组成:地址组成: 存放对象的存放对象的服务器主机名服务器主机名和和对象的路径名对象的路径名如如 http:// www.someSchool.edu / somedepartment / picture.gif 主机名主机名路径名路径名37 Chapter2P&EEP&EEWeb常用术语常用术语r浏览器(客户机):浏览器(客户机):是是Web应用的应用的用户代理用户代理,用于显,用于显示所请求的示所请求的Web页,提供导航功能和配置属性。
页,提供导航功能和配置属性 实现了实现了HTTP协议的客户机端协议的客户机端rWeb服务器:服务器:用于存贮用于存贮Web对象(由对象(由URL寻址) 实现实现HTTP协议的服务器端协议的服务器端 HTTP协议协议定义了定义了Web客户机客户机 (浏览器浏览器)如何向如何向Web站点请站点请求求Web页,以及服务器如何将页,以及服务器如何将Web页传送给客户机页传送给客户机38 Chapter2P&EEP&EE客户机和服务器之间交互过程客户机和服务器之间交互过程PC 运行Explorer服务器运行Apache Web服务器Mac 运行NavigatorHTTP 请求HTTP 请求HTTP 响应HTTP 响应r客户机客户机:: 用户请求一个用户请求一个Web页页(如点击一个超链接),浏(如点击一个超链接),浏览器向服务器览器向服务器发出发出对该页所对该页所含对象的含对象的“HTTP请求报文请求报文”r服务器:服务器: 接受请求,回发包含请求接受请求,回发包含请求对象的对象的“HTTP响应报文响应报文”39 Chapter2P&EEP&EE说明说明rHTTP协议使用的协议使用的底层运输协议是底层运输协议是TCP。
r工作过程:工作过程: 创建创建TCP连接连接交换报文交换报文关闭关闭TCP连接连接ü客户机先与服务器客户机先与服务器建立建立TCP连接连接,然后,浏览器和服,然后,浏览器和服务器进程通过务器进程通过套接字访问套接字访问TCP::如图如图2-3ü客户机:客户机:从其套接字接口发送从其套接字接口发送““HTTPHTTP请求报文请求报文””和接和接收收““响应报文响应报文””;;ü服务器:服务器:从其套接字口接收从其套接字口接收““HTTPHTTP请求报文请求报文””和发送和发送““响应报文响应报文””40 Chapter2P&EEP&EE说明说明rTCP提供可靠的数据传输服务:提供可靠的数据传输服务:客户机进程和服务器客户机进程和服务器进程发出的每个进程发出的每个HTTP报文能完整地到达对方报文能完整地到达对方rHTTP是是无状态协议:无状态协议:服务器不保存关于客户机的任何服务器不保存关于客户机的任何信息 Web使用客户机使用客户机/服务器结构,服务器结构,Web服务器总是打开,有一服务器总是打开,有一个固定个固定IP地址,为多个浏览器服务地址,为多个浏览器服务。
41 Chapter2P&EEP&EE2.2.2 HTTP连接连接持久持久HTTP连接连接ü一个一个TCP连接上可以传连接上可以传送送多个多个Web对象对象ü传送多个传送多个请求请求/相应相应对对非持久非持久HTTP连接连接ü每个每个TCP连接上只传送连接上只传送一个一个Web对象对象ü只传送一个只传送一个请求请求/相应相应对对默认方式下使用持久连接默认方式下使用持久连接42 Chapter2P&EEP&EE1、非持久连接、非持久连接 例,客户机向服务器请求传送一个例,客户机向服务器请求传送一个Web页:页:ü含有含有一个基本一个基本HTML文件和文件和10个个JPEG图形图形,,11个对象个对象位于同一个服务器上位于同一个服务器上üHTML文件的文件的URL为:为:http://www.someSchool.edu/someDepartment/home.index43 Chapter2P&EEP&EE工作过程1a. HTTP客户客户初始化一个初始化一个与服务与服务器主机器主机www.someSchool.edu中中HTTP服务器进程的服务器进程的TCP连接连接 2. HTTP客户发送一个客户发送一个HTTP请请求报文求报文 (包含(包含URL)到)到TCP连接套接字,连接套接字, 报文指明客户报文指明客户需要的需要的Web对象-对象-someDepartment/home.index1b. www.someSchool.edu服务器服务器主机中的主机中的HTTP服务器服务器在在80端端口监听来自口监听来自HTTP客户的客户的TCP连接请求连接请求,收到连接请求,收到连接请求, 接接受受, 建立连接建立连接, 通知客户。
通知客户3. HTTP服务器接收请求报文服务器接收请求报文, 产产生一个生一个响应报文响应报文(包含被请(包含被请求对象)求对象), 并发送到其并发送到其TCP连连接套接字接套接字timeTCP连连接接报报文文传传输输44 Chapter2P&EEP&EE5. HTTP客户机接收包含客户机接收包含HTML文件的响应报文,文件的响应报文,显示并解显示并解析析HTML文件,发现文件,发现10个引个引用的用的 jpeg对象对象6. 对对10个个jpeg对象重复步骤对象重复步骤1~~54. HTTP服务器关闭服务器关闭TCP 连接连接time45 Chapter2P&EEP&EE说明:说明:r每个每个TCP连接在服务器返回对象后关闭连接在服务器返回对象后关闭(非持久)(非持久)r每个每个TCP连接连接只传输一个请求报文和一个响应报文只传输一个请求报文和一个响应报文;; 上例中,要建立上例中,要建立11个个TCP连接r浏览器浏览器可同时打开多个可同时打开多个连接:连接:ü并行的并行的TCP连接:并行数大于连接:并行数大于1默认打开默认打开5~~10个ü串行的串行的TCP连接:最大并行数为连接:最大并行数为1。
46 Chapter2P&EEP&EE请求一个请求一个HTML文件所需时间文件所需时间 即即从客户机请求基本从客户机请求基本HTML文件开始,到用户收文件开始,到用户收到整个文件为止所花时间到整个文件为止所花时间r往返时延往返时延RTTRTT:: 一个小分组从客户机到服务器,再回到客户机所一个小分组从客户机到服务器,再回到客户机所花时间 包括传播时延、排队时延以及处理时延包括传播时延、排队时延以及处理时延47 Chapter2P&EEP&EErTCP连接的连接的“三次握手三次握手”过程过程ü客户机发送一个客户机发送一个TCP连接请求连接请求报文报文 ü服务器回送一个服务器回送一个TCP确认响应确认响应报文报文 ü客户机向服务器发送一个包含客户机向服务器发送一个包含“ HTTP请求请求”与与“TCP确认确认”的报文的报文r总响应时间:总响应时间:两个两个RTT时延加时延加上服务器发送文件的时间上服务器发送文件的时间 总计总计 = 2RTT+文件传输时间文件传输时间传输文件传输文件的时间的时间发起发起TCP连接连接RTT请求文件请求文件RTT接收接收文件文件时间时间三次握手三次握手建立建立TCP连接连接 交换报文交换报文48 Chapter2P&EEP&EE非持久连接缺点非持久连接缺点r服务器负担重:服务器负担重:每一个请求对象建立和维护一个新的每一个请求对象建立和维护一个新的连接。
连接r每一个对象的传输时延长:每一个对象的传输时延长:包含两个包含两个RTT时延,一个时延,一个用于用于TCP建立,一个用于请求和接收对象建立,一个用于请求和接收对象49 Chapter2P&EEP&EE2、持久连接、持久连接q服务器在发送响应后保持该服务器在发送响应后保持该TCP连接:连接:ü相同客户机相同客户机与服务器之间的后续请求和响应报文与服务器之间的后续请求和响应报文通过通过相同的连接进行传送相同的连接进行传送 如,一个如,一个Web页页 的所有对象可以通过一个持久的所有对象可以通过一个持久TCP连接传送连接传送ü或或同一服务器上的多个同一服务器上的多个Web页页也可以通过一个持久也可以通过一个持久TCP连接传送给同一个客户机连接传送给同一个客户机r连接经一定连接经一定时间间隔时间间隔(超时间隔超时间隔)未被使用未被使用,服务器就,服务器就关关闭该连接闭该连接50 Chapter2P&EEP&EE持久连接两种方式持久连接两种方式r非流水线方式:非流水线方式:客户机只能在客户机只能在前一个响应接收到之后前一个响应接收到之后才能发出新的请求才能发出新的请求ü客户机为每一个引用对象的请求和接收都使用一个客户机为每一个引用对象的请求和接收都使用一个RTT时延。
时延ü会浪费一些服务器资源:服务器在发送完一个对象,会浪费一些服务器资源:服务器在发送完一个对象,等待下一个请求时,会出现空闲状态等待下一个请求时,会出现空闲状态 51 Chapter2P&EEP&EE持久连接两种方式持久连接两种方式r流水线方式:流水线方式:ü客户机可一个接一个客户机可一个接一个连续产生请求连续产生请求(只要有引用就产(只要有引用就产生),即在前一个请求接收到响应之前可以产生新的生),即在前一个请求接收到响应之前可以产生新的请求ü服务器一个接一个服务器一个接一个连续发送相应对象连续发送相应对象r特点:特点:ü节省节省RTT时延,时延,可能所有引用对象可能所有引用对象只花费一个只花费一个üTCP连接空闲时间很短连接空闲时间很短r 默认方式:默认方式:流水线方式的持久连接流水线方式的持久连接52 Chapter2P&EEP&EE1、、HTTP请求报文请求报文r客户机向服务器发送客户机向服务器发送ASCII文本形式,文本形式,易读 例:例:GET /somedir/page.html HTTP/1.1Host: www.someschool.edu User-agent: Mozilla/4.0Connection: close Accept-language:fr (另外的回车,换行) 请求行请求行(GET, POST, HEAD命令命令)首部行首部行回车,换行指示回车,换行指示报文的结束报文的结束对象对象URL路径名路径名 版本版本 对象主机对象主机浏览器类型浏览器类型非持久非持久方法(命令)方法(命令)——üGET:请求一个对象。
请求一个对象üPOST:提交表单(添加信息)提交表单(添加信息)üHEAD:请求返回对象响应报文首部:请求返回对象响应报文首部返回对象的语言返回对象的语言53 Chapter2P&EEP&EEHTTP请求报文通用格式请求报文通用格式请求行请求行 首部行首部行 实体主体实体主体 方法方法版本版本 首部字段名首部字段名首部字段名首部字段名值值值值54 Chapter2P&EEP&EE2、、HTTP 响应报文响应报文HTTP/1.1 200 OK Connection closeDate: Thu, 06 Aug 1998 12:00:15 GMT 服务器服务器: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... 状态行状态行(版本、状态码、状态短语)(版本、状态码、状态短语)首部行实体:数据,如请求的HTML文件请求成功请求成功关闭连接关闭连接发送日期发送日期对象创建或修对象创建或修改日期改日期对象长度对象长度服务器到客户机的回答服务器到客户机的回答55 Chapter2P&EEP&EEHTTP响应状态码200 OKm请求成功,请求的对象在这个报文后面请求成功,请求的对象在这个报文后面301 Moved Permanentlym请求的对象已转移,请求的对象已转移,新的新的URL在响应报文的在响应报文的Location:首部行中首部行中指定指定400 Bad Requestm请求报文不为服务器理解请求报文不为服务器理解404 Not Foundm请求的文档没有在该服务器上发现请求的文档没有在该服务器上发现505 HTTP Version Not Supportedm服务器不支持请求报文使用的服务器不支持请求报文使用的HTTP版本版本r在服务器到客户机响应报文中的首行。
在服务器到客户机响应报文中的首行56 Chapter2P&EEP&EE自行试验HTTP (客户机侧)1. Telnet 到某个到某个Web服务器上:服务器上:打开到位于打开到位于cis.poly.edu的端口的端口80(默认默认的的HTTP服务器端口服务器端口).键入的任何东西将发送到位于键入的任何东西将发送到位于cis.poly.edu的的80端口端口telnet cis.poly.edu 802. 键入一个键入一个GET HTTP请求:请求:GET /~ross/ HTTP/1.1Host: cis.poly.edu向向HTTP服务器发服务器发送最小的送最小的GET请求请求3. 得到由得到由HTTP服务器发送的响应报文服务器发送的响应报文!57 Chapter2P&EEP&EE2.2.4 用户与服务器交互:用户与服务器交互:Cookie HTTP服务器是服务器是无状态无状态的,不保存客户信息的,不保存客户信息rCookie::允许允许Web站点跟踪、识别用户;服务器可以站点跟踪、识别用户;服务器可以限制用户访问,或把内容与用户身份关联限制用户访问,或把内容与用户身份关联 许多重要的许多重要的Web站点使用站点使用cookies。
r包括四个部分包括四个部分1)在在HTTP响应报文中有一个响应报文中有一个cookie 首部行首部行2)在在HTTP请求报文中有一个请求报文中有一个cookie 首部行首部行3)用户主机中保留有一个用户主机中保留有一个 cookie 文件并由浏览器管理文件并由浏览器管理4) Web站点的后端数据库保存站点的后端数据库保存cookie58 Chapter2P&EEP&EE例mSusan总是从相同的总是从相同的PC访问因特网访问因特网m她首次访问一个特定的电子商务站点她首次访问一个特定的电子商务站点m当起始当起始HTTP请求到达站点时,站点产生一个独特请求到达站点时,站点产生一个独特的的ID,并为,并为ID在后端数据库中生成一个表项在后端数据库中生成一个表项59 Chapter2P&EEP&EE工作过程客户机客户机服务器服务器普通HTTP请求报文普通HTTP响应+Set-cookie: 1678 普通HTTP请求报文cookie: 1678普通HTTP响应报文普通HTTP请求报文cookie: 1678普通HTTP响应报文特定cookie动作特定cookie动作服务器为用户生成ID 1678后端数据库中的表项访问访问Cookie file识别码识别码 1678Cookie file保存保存1678 Cookie file识别码识别码 1678一个星期以后:60 Chapter2P&EEP&EErCookie用途用途ü身份认证身份认证ü虚拟购物车虚拟购物车(跟踪用户购买的物品跟踪用户购买的物品)ü推荐广告推荐广告ü用户会话状态用户会话状态 (Web e-mail)rCookie缺陷缺陷ü站点可以知道用户许多信息站点可以知道用户许多信息ü不利用户隐私保护不利用户隐私保护61 Chapter2P&EEP&EE2.2.5 HTTP内容内容ü传输传输Web页面所含对象:页面所含对象:如如HTML文件、文件、JPEG文件、文件、Java小应用程序等等。
小应用程序等等ü可以传输其他类型的文件:可以传输其他类型的文件:如传输如传输XML(可扩充的标(可扩充的标识语言)文件识语言)文件üP2P文件共享中:文件共享中:作为文件传输协议使用作为文件传输协议使用ü用于流式存储的音频和视频用于流式存储的音频和视频 62 Chapter2P&EEP&EE2.2.6 Web缓存缓存rWeb缓存器缓存器(Web cache)::也叫也叫代理服务器代理服务器 能够代表能够代表起始服务器起始服务器来满足来满足HTTP请求的网络实体请求的网络实体ü保存最近请求过的对象的副本保存最近请求过的对象的副本ü可在客户机或服务器工作,也可在中间系统工作可在客户机或服务器工作,也可在中间系统工作r起始(原始)服务器起始(原始)服务器(origin server)::对象最初存放并对象最初存放并始终保持其拷贝的服务器始终保持其拷贝的服务器目标目标: 代替原始服务器满足代替原始服务器满足HTTP请求63 Chapter2P&EEP&EE使用使用Web缓存器缓存器r用户配置浏览器用户配置浏览器: 所有所有Web 访问经由缓存访问经由缓存r浏览器向缓存发送所有浏览器向缓存发送所有HTTP请求请求m对象在缓存中:对象在缓存中:缓存缓存器返回对象器返回对象m不在:不在:缓存向原始服缓存向原始服务器发出请求,接收务器发出请求,接收对象后转发给客户机对象后转发给客户机客户机代理服务器客户机HTTP 请求HTTP 请求HTTP 响应HTTP 响应HTTP 请求HTTP 响应起始服务器起始服务器客户机通过客户机通过Web缓存器请求对象。
缓存器请求对象64 Chapter2P&EEP&EE具体操作过程具体操作过程r浏览器:浏览器:建立一个到缓存建立一个到缓存的的TCP连接,并向缓存发连接,并向缓存发送一个对该对象送一个对该对象HTTP请求请求rWeb缓存器:缓存器:检查本地是否检查本地是否有该对象的拷贝有该对象的拷贝ü有:有:就用就用HTTP响应报文向响应报文向浏览器转发该对象浏览器转发该对象例:假设浏览器请求对象例:假设浏览器请求对象 http://www.someschool.edu/campus.gif客户机代理服务器客户机HTTP 请求HTTP 请求HTTP 响应HTTP 响应HTTP 请求HTTP 响应起始服务器起始服务器65 Chapter2P&EEP&EE 缓存在缓存在TCP连接上发送获取连接上发送获取该对象的请求该对象的请求 起始服务器收到请求,向缓起始服务器收到请求,向缓存发送该对象的存发送该对象的HTTP响应响应 缓存接收该对象,存储一份缓存接收该对象,存储一份在本地中,并通过在本地中,并通过HTTP响响应报文向浏览器转发该对象应报文向浏览器转发该对象(通过已经建立的(通过已经建立的TCP连接)连接)。
客户机代理服务器客户机HTTP 请求HTTP 请求HTTP 响应HTTP 响应HTTP 请求HTTP 响应起始服务器起始服务器ü没有:没有:与该对象的起始服务器打开一个与该对象的起始服务器打开一个TCP连接 客户机客户机 Web缓存器缓存器起始服务器起始服务器66 Chapter2P&EEP&EE说明说明rWeb缓存器既可以是服务器也可以是客户机:缓存器既可以是服务器也可以是客户机:ü当它接收浏览器请求并发回响应时,是当它接收浏览器请求并发回响应时,是服务器服务器;;ü当它向起始服务器发出请求并接收响应时,是当它向起始服务器发出请求并接收响应时,是客户机客户机67 Chapter2P&EEP&EEWeb缓存优点缓存优点r减少客户机请求的响应时间减少客户机请求的响应时间:: 客户机客户机 Web缓存器缓存器起始服务器起始服务器 高速链路高速链路 r减少机构内部网络与因特网连接链路上的通信量:减少机构内部网络与因特网连接链路上的通信量: 降低开销,改善各种应用的性能降低开销,改善各种应用的性能。
68 Chapter2P&EEP&EE例例1,无,无Web缓存缓存r包括两个网络:包括两个网络:机构的内部机构的内部网络和因特网网络和因特网 ü机构内部网络机构内部网络::是一个高速是一个高速的局域网的局域网 其路由器与因特网其路由器与因特网上的路由器通过一条上的路由器通过一条1.5Mbps的链路连接的链路连接ü起始服务器:起始服务器:与因特网相连,与因特网相连,遍布全球遍布全球起始服务器公共因特网公共因特网机构网络机构网络10 Mbps LAN1.5 Mbps 访问链路69 Chapter2P&EEP&EE假设假设ü平均对象长度为平均对象长度为100kbü机构内浏览器对原始服机构内浏览器对原始服务器上对象的平均请求务器上对象的平均请求率率= 15/secü机构内机构内的的HTTP报文小,报文小,忽略忽略ü从因特网路由器转发从因特网路由器转发HTTP请求报文,到收到请求报文,到收到其响应报文的时间平均其响应报文的时间平均==2s(因特网时延)(因特网时延) 起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路70 Chapter2P&EEP&EE总的响应时间总的响应时间 浏览器从请求一个对象到接收到的时间:三部分和浏览器从请求一个对象到接收到的时间:三部分和ü局域网时延局域网时延ü接入链路时延接入链路时延(两个路由器间两个路由器间)ü因特网时延因特网时延起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路71 Chapter2P&EEP&EEü局域网时延:局域网时延:与流量强度有关(与流量强度有关(比特到达率比特到达率/推出率推出率)) (15请求请求/s)×(100kb/请求请求)/(10Mbit/s)=0.15 强度为强度为0.15的通信量最多数十毫秒的时延,可的通信量最多数十毫秒的时延,可忽略忽略ü接入链路时延:与接入链路时延:与接入流量强度接入流量强度 (路由器之间路由器之间)有关有关 (15请求请求/s)×(100kb/请求请求)/(1.5Mbit/s)=1 强度接近强度接近1,链路,链路时延非常大时延非常大或无限增长。
或无限增长ü总响应时间总响应时间=接入链路时延=接入链路时延+因特网时延因特网时延 =(分钟=(分钟 +2 sec )) 请求时间长,用户难接受请求时间长,用户难接受72 Chapter2P&EEP&EE改进方法一改进方法一ü增加接入链路的速率:增加接入链路的速率: 如从如从1.5Mbps增加到增加到10Mbps,使链路上的流量强,使链路上的流量强度减少到度减少到0.15,链路时延也可以忽略了链路时延也可以忽略了 总响应时间总响应时间=因特网时延因特网时延=2秒钟秒钟ü投资较大,成本昂贵投资较大,成本昂贵73 Chapter2P&EEP&EE改进方法二改进方法二 在机构网络中安装在机构网络中安装一个一个Web缓存缓存器起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路机构缓存器üWeb缓存器的命中率:缓存器的命中率:缓存缓存器满足请求的比率器满足请求的比率((0.2~~0.7)ü设命中率为设命中率为0.474 Chapter2P&EEP&EE改进方法二改进方法二起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路机构缓存器ü局域网时延:局域网时延:客户机和缓客户机和缓存器位于同一局域网,存器位于同一局域网,40%的请求几乎会立即得的请求几乎会立即得到响应,时延约到响应,时延约10ms。
剩下的剩下的60%请求需要请求需要通过访问起始服务器才能通过访问起始服务器才能满足100kb/10Mbps75 Chapter2P&EEP&EEü接入链路时延:接入链路时延: 只有只有60%的请求对象通的请求对象通过接入链路传送,流量强过接入链路传送,流量强度从度从1.0减小到减小到0.6 通常,在通常,在1.5Mbps链路链路上,当流量强度小于上,当流量强度小于0.8时,时,时延很小,可忽略时延很小,可忽略起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路机构缓存器Web缓存器减少响应时延,成本低缓存器减少响应时延,成本低 ü平均时延为:平均时延为: 0.4×(0.01s)+0.6×(0.01s+2s)=1.21s0.01s2s76 Chapter2P&EEP&EE2.2.7 条件条件GET方法方法r高速缓存:高速缓存:ü减少响应时间;减少响应时间;ü存放在缓存中的对象拷贝可能是旧的存放在缓存中的对象拷贝可能是旧的即保存在起始即保存在起始Web服务器中的对象可能已经被修改服务器中的对象可能已经被修改。
r条件条件GET方法:方法:ü使使缓存器能够证实其保存的对象是否为最新缓存器能够证实其保存的对象是否为最新ü如果缓存中是最新对象版本,可继续使用,如果缓存中是最新对象版本,可继续使用,起始起始Web服务器服务器就不需重新发送该对象就不需重新发送该对象77 Chapter2P&EEP&EE条件条件GET方法使用方法使用rWeb服务器回发服务器回发响应报文响应报文:包括对象的最后修改时间:包括对象的最后修改时间 Last-modified::date1r缓存检查缓存检查Web服务器中的该对象是否已被修改,发送服务器中的该对象是否已被修改,发送一个一个条件条件GET请求报文请求报文:: If-modified-since:: date1ü告诉服务器,仅当告诉服务器,仅当自指定日期之后该对象被修改过,自指定日期之后该对象被修改过,才发送该对象才发送该对象ü若若Web服务器中的该对象未被修改,则响应报文含有服务器中的该对象未被修改,则响应报文含有 304 Not Modified,并且实体为空并且实体为空78 Chapter2P&EEP&EE例缓存器缓存器服务器服务器304 Not Modified实体为空实体为空对象未修改对象未修改GET /fruit/kiwi.gif HTTP/l.1Host: HTTP/1.0 200 OKLast-modified::date1 缓存器将对象转发到浏览器,缓存器将对象转发到浏览器,并保存对象到本地(包括对象并保存对象到本地(包括对象的最后修改时间)。
的最后修改时间) 一周后,用户再次请求该一周后,用户再次请求该对象(仍保留在缓存中),对象(仍保留在缓存中),缓存发送一个条件缓存发送一个条件GETGET,检,检查该对象是否已被修改查该对象是否已被修改GET /fruit/kiwi.gif HTTP/l.1Host: If-modified-since:: date1对象未修改,缓存可以继续使对象未修改,缓存可以继续使用该对象的拷贝,并转发给用用该对象的拷贝,并转发给用户浏览器户浏览器79 Chapter2P&EEP&EE2.3 文件传输协议:文件传输协议:FTP 本地主机上的用户,向远程主机上传或者下载文件本地主机上的用户,向远程主机上传或者下载文件ü 用户通过一个用户通过一个FTP用户代理用户代理与与FTP服务器交互服务器交互文件传输FTP服务器FTP用户接口FTP客户机本地文件系统远程文件系统主机上的用户上传上传下载下载80 Chapter2P&EEP&EE文件传输过程ü用户提供远程主机的主机名:用户提供远程主机的主机名:在本地主机的在本地主机的FTP客户机客户机进程与远程主机进程与远程主机FTP服务器进程之间服务器进程之间建立建立TCP连接连接;;ü提供用户标识和口令:提供用户标识和口令:在该在该TCP连接上向服务器传送。
连接上向服务器传送ü服务器验证通过后,进行文件传送(双向):服务器验证通过后,进行文件传送(双向): 将本地文件系统中的文件传送到远程文件系统(将本地文件系统中的文件传送到远程文件系统(上传上传)) 或从远程文件系统中得到文件(或从远程文件系统中得到文件(下载下载))文件传输FTP服务器FTP用户接口FTP客户机本地文件系统远程文件系统主机上的用户81 Chapter2P&EEP&EEFTP与与HTTP比较比较 都是文件传输协议,并运行在都是文件传输协议,并运行在TCP上 ü FTP使用了两个并行的使用了两个并行的TCP连接连接:: 控制连接:控制连接: 数据连接:数据连接:FTP客户机FTP服务器TCP 控制连接端口 21TCP 数据连接端口2082 Chapter2P&EEP&EE控制连接控制连接用于在两主机间用于在两主机间传输控制信息传输控制信息(如用户标识、口令等)(如用户标识、口令等)üFTP会话开始前,会话开始前,FTP的客户机与服务器在的客户机与服务器在21号端口号端口上上建立üFTP的客户机通过该连接发送用户标识和口令,或改的客户机通过该连接发送用户标识和口令,或改变远程目录的命令。
变远程目录的命令FTP客户机FTP服务器TCP 控制连接端口 21TCP 数据连接端口2083 Chapter2P&EEP&EE数据连接数据连接 用于准确用于准确传输文件传输文件ü当服务器收到一个文件传输的命令后当服务器收到一个文件传输的命令后(从远程主机上读从远程主机上读或写或写),,在在20端口端口发起一个到客户机的数据连接发起一个到客户机的数据连接ü在该数据连接上传送一个文件并关闭连接在该数据连接上传送一个文件并关闭连接m控制连接是持久的控制连接是持久的::在整个用户会话期间一直保持;在整个用户会话期间一直保持;m数据连接是非持久的数据连接是非持久的::会话中每进行一次文件传输,会话中每进行一次文件传输,都需要建立一个新的数据连接都需要建立一个新的数据连接FTP客户机FTP服务器TCP 控制连接端口 21TCP 数据连接端口2084 Chapter2P&EEP&EEü FTP的控制信息是的控制信息是带外带外传送传送((out-of-band):): 使用分离的控制连接;使用分离的控制连接; HTTP的控制信息是的控制信息是带内带内传输传输(in-band):: 请求和响应都是在传输文件的请求和响应都是在传输文件的TCP连接中发送。
连接中发送üFTP协议是协议是有状态有状态的:的: FTP服务器对每个活动用户会话的状态进行追踪,服务器对每个活动用户会话的状态进行追踪,并保留;限制同时会话的总数并保留;限制同时会话的总数 HTTP协议是协议是无状态无状态的:的:不对用户状态进行追踪不对用户状态进行追踪85 Chapter2P&EEP&EEFTP命令命令, 响应响应命令示例命令示例:r经控制信道以经控制信道以ASCII 文本发文本发送送üUSER usernameüPASS passwordüLIST返回当前目录中的文件返回当前目录中的文件列表列表üRETR filename获取获取(get) 文件文件üSTOR filename 存储存储 (puts)文件到远程主机文件到远程主机返回码示例:返回码示例:r状态码和短语状态码和短语(如在如在HTTP中中的那样的那样)ü331 Username OK, password requiredü125 data connection already open; transfer startingü425 Can’t open data connectionü452 Error writing file86 Chapter2P&EEP&EE2.4 因特网中的电子邮件因特网中的电子邮件 电子邮件快速、多方接收,包含附件、超电子邮件快速、多方接收,包含附件、超链接、图像、声音、视频等等。
链接、图像、声音、视频等等 本节讨论电子邮件的核心,即本节讨论电子邮件的核心,即应用层协议应用层协议87 Chapter2P&EEP&EE因特网电子邮件系统的总体结构因特网电子邮件系统的总体结构三部分:三部分:ü用户代理用户代理ü邮件服务器邮件服务器ü简单邮件传输协议简单邮件传输协议SMTP用户邮箱用户邮箱输出输出报文队列报文队列邮件邮件服务器服务器用户用户代理代理用户用户代理代理用户用户代理代理邮件邮件服务器服务器用户用户代理代理用户用户代理代理邮件邮件服务器服务器用户用户代理代理SMTPSMTPSMTP电子邮件地址电子邮件地址用户邮箱名用户邮箱名@主机名主机名88 Chapter2P&EEP&EE1、用户代理、用户代理(user agent)ü当用户完成邮件撰写时,当用户完成邮件撰写时,邮件邮件代理向其邮件服务器发送邮件代理向其邮件服务器发送邮件,,并存放在发送队列中并存放在发送队列中ü当用户想读取一条报文时,当用户想读取一条报文时,邮邮件代理从其邮件服务器的邮箱件代理从其邮件服务器的邮箱中获取该报文中获取该报文用户邮箱用户邮箱输出输出报文队列报文队列邮件邮件服务器服务器用户用户代理代理用户用户代理代理用户用户代理代理邮件邮件服务器服务器用户用户代理代理SMTP 邮件阅读器。
邮件阅读器允许用户阅读、回复、发送、允许用户阅读、回复、发送、保存和撰写报文保存和撰写报文q种类:种类:üGUI(图形用户接口):阅读和编写多媒体(图形用户接口):阅读和编写多媒体邮件如Outlook、、Foxmail等89 Chapter2P&EEP&EE2、邮件服务器、邮件服务器(mail server)ü邮箱:邮箱:发送给用户的报文发送给用户的报文ü报文队列:报文队列:用户要发出的邮件报文用户要发出的邮件报文用户邮箱输出报文队列邮件服务器用户代理用户代理用户代理邮件服务器用户代理SMTPr邮件发送主要过程:邮件发送主要过程:ü邮件邮件保存保存到发送方报文队列到发送方报文队列ü通过通过SMTP协议协议转发转发到接收方邮件服到接收方邮件服务器,保存到相应邮箱中务器,保存到相应邮箱中•若投递失败,发送方将其保存在一个若投递失败,发送方将其保存在一个报文队列中,以后每报文队列中,以后每30分钟发送一分钟发送一次,若几天后仍未成功,将该报文次,若几天后仍未成功,将该报文删除,并通知发送方删除,并通知发送方•用户访问自己邮箱时,邮件服务器对用户访问自己邮箱时,邮件服务器对其身份进行验证其身份进行验证(用户名和口令用户名和口令)。
90 Chapter2P&EEP&EE3、简单邮件传送协议、简单邮件传送协议SMTP 从发送方的邮件服务器向接收方的邮件服务器发从发送方的邮件服务器向接收方的邮件服务器发送邮件ü应用层协议应用层协议ü使用使用TCP可靠数据传输服务可靠数据传输服务r包括两部分:包括两部分:ü客户机端:客户机端:在发送方邮件服务器上运行;在发送方邮件服务器上运行;ü服务器端:服务器端:在接收方邮件服务器上运行在接收方邮件服务器上运行每个邮件服务器上都有每个邮件服务器上都有SMTP的客户机端和服务器端的客户机端和服务器端91 Chapter2P&EEP&EE本节内容本节内容2.4.1 SMTP2.4.2 SMTP与与HTTP比较比较2.4. 3 邮件报文格式和邮件报文格式和MIME2.4. 4 邮件访问协议邮件访问协议92 Chapter2P&EEP&EE2.4.1 SMTP 1) Alice启动邮件代理,提供接启动邮件代理,提供接收方的邮件地址,撰写邮件收方的邮件地址,撰写邮件 2) 用户代理把报文发给其邮件用户代理把报文发给其邮件服务器,放在发送队列中服务器,放在发送队列中 3) SMTP的客户机侧创建与的客户机侧创建与Bob的邮件服务器的的邮件服务器的TCP连接连接4) SMTP通过通过TCP连接发送报文连接发送报文5) Bob的邮件服务器接收并将该的邮件服务器接收并将该报文放入报文放入Bob的邮箱的邮箱6) Bob调用其用户代理来读报文调用其用户代理来读报文用户代理邮件服务器邮件服务器用户代理123456 把一封邮件从发送邮件服务器传送到接收邮件服务把一封邮件从发送邮件服务器传送到接收邮件服务器的过程:器的过程: 如如Alice 向向 Bob发送报文发送报文SMTPBobAlice93 Chapter2P&EEP&EE2.4.1 SMTP 1) Alice启动邮件代理,提供接启动邮件代理,提供接收方的邮件地址,撰写邮件收方的邮件地址,撰写邮件 2) 用户代理把报文发给其邮件用户代理把报文发给其邮件服务器,放在发送队列中服务器,放在发送队列中 3) SMTP的客户机侧创建与的客户机侧创建与Bob的邮件服务器的的邮件服务器的TCP连接连接4) SMTP通过通过TCP连接发送报文连接发送报文5) Bob的邮件服务器接收并将该的邮件服务器接收并将该报文放入报文放入Bob的邮箱的邮箱6) Bob调用其用户代理来读报文调用其用户代理来读报文用户代理邮件服务器邮件服务器用户代理123456 把一封邮件从发送邮件服务器传送到接收邮件服务把一封邮件从发送邮件服务器传送到接收邮件服务器的过程:器的过程: 如如Alice 向向 Bob发送报文发送报文SMTPBobAlice94 Chapter2P&EEP&EE说明r客户使用客户使用TCP来可靠传输邮件报文来可靠传输邮件报文到服务器端到服务器端口号口号25。
ü建立建立TCP连接:连接:ü握手:握手: 指明收发双方的邮件地址指明收发双方的邮件地址ü邮件邮件报文的传输报文的传输ü结束:结束:关闭关闭TCP连接连接95 Chapter2P&EEP&EErSMTP不使用中间邮件服务器发送邮件,不使用中间邮件服务器发送邮件,即即TCP 连接是从发送方到接收方的直接相连连接是从发送方到接收方的直接相连 如果接收方的邮件服务器没有开机,该邮如果接收方的邮件服务器没有开机,该邮件仍保留在发送方邮件服务器上,并在以后进件仍保留在发送方邮件服务器上,并在以后进行再次传送行再次传送邮件不会在某个中间邮件服务器邮件不会在某个中间邮件服务器停留96 Chapter2P&EEP&EE共同点共同点ü都用于从一台主机向另一台主机传送文件都用于从一台主机向另一台主机传送文件 ♦ HTTP用于从用于从Web服务器向服务器向Web客户机客户机(浏览器浏览器)传送传送文件文件 (对象对象);; ♦ SMTP用于从一个邮件服务器向另一个邮件服务器传用于从一个邮件服务器向另一个邮件服务器传送文件送文件(电子邮件报文电子邮件报文)ü 持久持久HTTP和和SMTP都使用持久连接。
都使用持久连接 97 Chapter2P&EEP&EE区别区别rHTTPHTTP是是拉协议拉协议::用户使用用户使用HTTP从服务器从服务器拉取拉取信息 其其TCP连接连接是由想获取文件的机器是由想获取文件的机器发起 SMTPSMTP是是推协议推协议::发送邮件服务器把文件发送邮件服务器把文件推向推向接收邮件服务器接收邮件服务器,其,其TCP连接连接是由要发送文是由要发送文件的机器发起件的机器发起 98 Chapter2P&EEP&EE区别区别r SMTPSMTP使用使用7 7位位ASCIIASCII码格式:码格式: 对一些包含了对一些包含了非非7位位ASCII字符字符的报文或二的报文或二进制数据进制数据(如图片、声音如图片、声音),,需要按照需要按照7位位ASCII码进行码进行编码,再传送编码,再传送 在接收方需要解码还原为原有报文在接收方需要解码还原为原有报文 HTTPHTTP数据没有该限制数据没有该限制r对含有文本和图形对含有文本和图形 ( (或其他媒体类型或其他媒体类型) )的文档:的文档:üHTTP把把每个对象封装每个对象封装在它各自的在它各自的HTTP响应报文中响应报文中发送发送ü电子邮件则把电子邮件则把所有报文对象放在一个报文中。
所有报文对象放在一个报文中99 Chapter2P&EEP&EE邮件报文格式邮件报文格式r首部行(首部行(收发人、主题收发人、主题))mTo:mFrom:mSubject:r主体主体m““报文报文””, , 均为均为ASCII 字符字符首部首部主体主体空行100 Chapter2P&EEP&EE MIME(多用途因特网邮件扩展)(多用途因特网邮件扩展)ü SMTP只传送只传送7位的位的ASCII码üSMTP不能传送可执行文件或其他的二进制对象不能传送可执行文件或其他的二进制对象 MIME::用于非用于非ASCII数据传输将非数据传输将非ASCII数据数据编码后传输,接收方再解码还原编码后传输,接收方再解码还原ü增加新的增加新的MIME邮件首部邮件首部ü采用某种编码采用某种编码101 Chapter2P&EEP&EE 例:传输一个例:传输一个jpeg图形图形 From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data 多媒体数据类型,多媒体数据类型,子类型,子类型,声明参数声明参数使用数据编码的方法使用数据编码的方法MIME 版本编码数据编码数据base64编码编码:用于:用于二进制文件二进制文件jpeg格式的静止图像格式的静止图像102 Chapter2P&EEP&EE 接收的报文接收的报文 From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data Received: from cress.fr by hamburger.edu;12 oct 98 15:27:39 GMT添加一个添加一个Received: 首部行首部行103 Chapter2P&EEP&EE2.4.4 邮件访问协议邮件访问协议r发送方:发送方:用户代理用用户代理用SMTP将邮件推入其邮件服务器将邮件推入其邮件服务器 邮件服务器再用邮件服务器再用SMTP将邮件转发到接收方的邮件将邮件转发到接收方的邮件服务器服务器r接收方:接收方:通过其用户代理使用一个通过其用户代理使用一个邮件访问协议邮件访问协议(不(不是是SMTP),从其邮件服务器上取回邮件。
从其邮件服务器上取回邮件 取邮件是一个拉操作,而取邮件是一个拉操作,而SMTP协议是一个推协议协议是一个推协议 用户代理发送方邮件服务器用户代理SMTP访问协议访问协议接收方邮件服务器SMTP104 Chapter2P&EEP&EEr邮件访问协议:邮件访问协议:从服务器获取邮件从服务器获取邮件r种类:种类:POP3(第三版的邮局协议第三版的邮局协议)IMAP(因特网邮件访问协议因特网邮件访问协议)HTTP105 Chapter2P&EEP&EE1、、POP3 简单、功能有限简单、功能有限 在用户代理打开了一个到邮件服务器在用户代理打开了一个到邮件服务器(服务服务器器)端口端口110上的上的TCP连接后,开始工作连接后,开始工作106 Chapter2P&EEP&EE工作步骤(三阶段):工作步骤(三阶段):ü特许阶段特许阶段::用户代理发送用户名和口令获得下用户代理发送用户名和口令获得下载邮件的特许载邮件的特许身份认证身份认证))ü事务处理阶段:事务处理阶段:用户代理取回报文,可对邮件用户代理取回报文,可对邮件进行某些操作进行某些操作 如做删除标记、取消删除标记、获取统计如做删除标记、取消删除标记、获取统计信息等。
信息等ü更新阶段:更新阶段:邮件服务器删除带有删除标记的报邮件服务器删除带有删除标记的报文,结束文,结束POP会话107 Chapter2P&EEP&EE2、、IMAP rPOP3缺陷:缺陷:用户读取邮件后,服务器不再保存用户读取邮件后,服务器不再保存rIMAP:: 功能强功能强ü在用户的在用户的PC机上运行机上运行IMAP客户程序,然后与客户程序,然后与ISP的邮的邮件服务器上的件服务器上的IMAP服务器程序服务器程序建立建立TCP连接连接ü用户在自己的用户在自己的PC机上就可以操纵邮件服务器的邮箱,机上就可以操纵邮件服务器的邮箱,就像在本地操纵一样,是一个就像在本地操纵一样,是一个联机协议联机协议 ü未发出删除命令前,一直保存在邮件服务器未发出删除命令前,一直保存在邮件服务器ü实现起来复杂实现起来复杂108 Chapter2P&EEP&EE3、基于、基于web的电子邮件的电子邮件 1995年年12月月Hotmail 引入该技术引入该技术用户使用浏览器收用户使用浏览器收发电子邮件发电子邮件r 用户代理是普通的浏览器,用户和其远程邮箱之间的用户代理是普通的浏览器,用户和其远程邮箱之间的通信通过通信通过HTTP进行:进行:ü 发件人使用发件人使用HTTP 将电子邮件报文从其浏览器发送将电子邮件报文从其浏览器发送到到其邮件服务器上;其邮件服务器上;ü 收件人收件人使用使用HTTP从其邮箱中取一个报文从其邮箱中取一个报文到浏览器;到浏览器;r 邮件服务器之间发送和接收邮件时,使用邮件服务器之间发送和接收邮件时,使用SMTP。
r 用户可以在远程服务器上以层次目录方式组织报文用户可以在远程服务器上以层次目录方式组织报文 如,如,Hotmail 、、 Yahoo、、Mail等109 Chapter2P&EEP&EE2.5 DNS: 因特网的目录服务因特网的目录服务r标识主机的两种方式:标识主机的两种方式:ü主机名:主机名:由不定长的字母和数字组成便于记忆由不定长的字母和数字组成便于记忆 如如 路由器处理困难路由器处理困难üIP地址:地址:由由4个字节组成,有着严格的层次结构个字节组成,有着严格的层次结构 路由器容易处理路由器容易处理 如如IP地址(点分十进制):地址(点分十进制):121.7.106.83 网络号网络号 主机号主机号110 Chapter2P&EEP&EE2.5.1 DNS提供的服务提供的服务 报文在网络中传输,使用报文在网络中传输,使用IP地址r域名系统域名系统DNS (Domain Name System)::进行主进行主机名到机名到IP地址的转换地址的转换ü一个由分层的一个由分层的DNS服务器实现的服务器实现的分布式数据库分布式数据库ü允许主机查询分布式数据库的应用层协议;允许主机查询分布式数据库的应用层协议;111 Chapter2P&EEP&EE说明说明ü运行运行BIND软件的软件的UNIX机器;机器;üDNS协议运行在协议运行在UDP之上,使用之上,使用53号端口。
号端口üDNS通常通常直接由其他的应用层协议直接由其他的应用层协议 (包括包括HTTP、、SMTP 和和FTP)使用,使用,以将用户提供的主机名以将用户提供的主机名解析为解析为IP地址用户只是间接使用用户只是间接使用112 Chapter2P&EEP&EEr例,某个用户主机上的一个浏览器访问某个例,某个用户主机上的一个浏览器访问某个Web页页,, www.someschool.edu/index.html 用户主机要用户主机要将一个将一个HTTP请求报文发送到请求报文发送到Web服务器服务器www.someschool.edu,需先得到相应的,需先得到相应的IP地址r过程如下:过程如下:ü用户主机上运行用户主机上运行 DNS应用的客户机端应用的客户机端ü浏览器从浏览器从URL中解析出主机地址,传给中解析出主机地址,传给DNS客户机端客户机端üDNS客户机向客户机向DNS服务器发送一个包含主机名的请求;服务器发送一个包含主机名的请求;üDNS客户机收到含有对应主机名的客户机收到含有对应主机名的IP地址的回答报文;地址的回答报文;ü浏览器向该浏览器向该IP地址指定的地址指定的HTTP服务器发起一个服务器发起一个TCP连连接。
接增加一定时延增加一定时延113 Chapter2P&EEP&EEDNS服务服务r主机名到主机名到IPIP地址的转换地址的转换r主机别名主机别名m规范名和别名:通过规范名和别名:通过DNS可以得到主机别名对应的可以得到主机别名对应的规范主机名及规范主机名及IP地址r邮件服务器别名邮件服务器别名r负载分配负载分配114 Chapter2P&EEP&EE2.6 P2P 文件共享文件共享 位于网络边缘的位于网络边缘的PC机机(对等方对等方peer)互相之间可以直互相之间可以直接获取对象接获取对象例例,用户,用户Alice使用使用P2P文件共享应用程序下载文件共享应用程序下载MP3说明:说明:每个参与的对等方既是内容的消费者也是内容的每个参与的对等方既是内容的消费者也是内容的发布者(发布者(下载同时也向其他用户上载下载同时也向其他用户上载)115 Chapter2P&EEP&EE过程过程r 在在PC机上运行一个机上运行一个P2P文件共享应用软件文件共享应用软件(对等方对等方);;r 通过通过ADSL间歇地与接入因特网(无固定间歇地与接入因特网(无固定IP地址)地址)q 使用该应用程序搜索一首使用该应用程序搜索一首MP3歌曲;歌曲;q 显示一张有该首歌曲的对等方列表:显示一张有该首歌曲的对等方列表:ü所有对等方,并愿意共享该首音乐的所有对等方,并愿意共享该首音乐的MP3拷贝拷贝ü对等方都是普通的对等方都是普通的PC,是因特网用户。
是因特网用户 ü列表中提供一些附加信息,如接入带宽和下载时间列表中提供一些附加信息,如接入带宽和下载时间r选择一个对等方(选择一个对等方(Bob)并向其请求该)并向其请求该MP3文件;文件;ü 两个用户之间建立一个直接的两个用户之间建立一个直接的TCP连接;连接;ü MP3文件从文件从Bob的的PC机向机向Alice的的PC发送;发送;ü下载期间若偶然断开,可从其他对等方继续下载下载期间若偶然断开,可从其他对等方继续下载116 Chapter2P&EEP&EEP2P文件共享特点文件共享特点r直接在对等方间传输:直接在对等方间传输:所有内容不经过第三方服务器所有内容不经过第三方服务器r高度的可扩展能力:高度的可扩展能力:利用众多对等方集合中的资源去分利用众多对等方集合中的资源去分发内容发内容r使用客户机使用客户机/服务器模式:服务器模式:请求的对等方是客户机,被请求的对等方是客户机,被选中的对等方是服务器选中的对等方是服务器ü服务器对等方使用文件传输协议向客户机对等方传送服务器对等方使用文件传输协议向客户机对等方传送 ♦ 通过传送通过传送“HTTP请求请求”和和“HTTP响应响应”报文进行。
报文进行ü所有的对等方必须既能运行文件传输协议的客户机端程所有的对等方必须既能运行文件传输协议的客户机端程序,又能运行服务器端程序序,又能运行服务器端程序♦ 对等方既是一个客户机,又是一个瞬时对等方既是一个客户机,又是一个瞬时Web服务器117 Chapter2P&EEP&EE内容定位体系结构内容定位体系结构 一个对等方如何确定哪个对等方有所需要的内容一个对等方如何确定哪个对等方有所需要的内容1)集中式目录)集中式目录((2)查询洪泛)查询洪泛((3)利用不均匀性()利用不均匀性( KaZaA))118 Chapter2P&EEP&EE((1))集中式目录r目录服务器目录服务器( (大型服务器或服大型服务器或服务器场务器场) ):提供目录服务提供目录服务 收集可共享的对象,收集可共享的对象,建立集中式的动态数据库建立集中式的动态数据库(对象(对象名称到名称到IPIP地址地址的映射)的映射)集中式目录服务器对等方AliceBob111123 源于源于Napster公司(第一家世界范围内从事公司(第一家世界范围内从事MP3对等应用程序)设计。
对等应用程序)设计119 Chapter2P&EEP&EE主要工作主要工作r通知通知::对等方启动时,将其对等方启动时,将其IPIP地址及可共享内容通知目地址及可共享内容通知目录服务器;录服务器;r查询内容:查询内容:用户查询需要共用户查询需要共享的对象享的对象 如,如, Alice 查询某首歌查询某首歌r获取内容:获取内容:来自来自Bobr更新更新::当当对等方获得新对象对等方获得新对象或删除对象时,通知目录服或删除对象时,通知目录服务器更新务器更新对等方AliceBob111123通知和更新通知和更新集集中中式式目目录录服服务务器器查询查询文件传输文件传输属于客户机属于客户机/服务器与服务器与P2P的混合结构的混合结构120 Chapter2P&EEP&EE 集中式目录存在的问题r单点故障单点故障r性能瓶颈性能瓶颈r侵犯版权侵犯版权r可靠性:可靠性:文件传输是分散的,但定位内容的过程是高度文件传输是分散的,但定位内容的过程是高度集中的121 Chapter2P&EEP&EE((2)查询洪泛:)查询洪泛:Gnutellaü是一个公共域文件共享应用程序。
是一个公共域文件共享应用程序ü全分布方式:无中心服务器全分布方式:无中心服务器ü许多许多Gnutella客户机客户机实现协议:运行在对等方实现协议:运行在对等方r实现:实现: ü对等方先形成一个抽象的逻辑网络(对等方先形成一个抽象的逻辑网络(覆盖网络覆盖网络):):ü通过通过洪泛查询洪泛查询,找到所需对象:,找到所需对象: 如,某个对等方如,某个对等方Alice想得到一个对象想得到一个对象122 Chapter2P&EEP&EE特点特点ü设计简单设计简单ü扩展性差扩展性差ü“查询报文查询报文”在网络中产生很大的流量在网络中产生很大的流量q限范围的洪泛查询:限范围的洪泛查询:ü在在“查询报文查询报文”中设置一个计数字段,并给定一个特中设置一个计数字段,并给定一个特定值ü可能减少对等方数量可能减少对等方数量123 Chapter2P&EEP&EE覆盖网络覆盖网络ü 如果对等方如果对等方X和和Y间间有有一条一条TCP连接连接,则存在,则存在一条边一条边ü 所有活动对等方和边所有活动对等方和边形成覆盖网络形成覆盖网络ü 边不是物理链路边不是物理链路ü 一个对等方所连接的一个对等方所连接的节点少于节点少于10个。
个124 Chapter2P&EEP&EE洪泛查询洪泛查询查询查询命中查询查询查询命中查询查询查询命中文件传输文件传输:HTTPü向覆盖网络中的每个邻居向覆盖网络中的每个邻居发送发送“查询报文查询报文”;;ü每个每个邻居再向邻居转发邻居再向邻居转发,使覆,使覆盖网络上的每个对等方都能收盖网络上的每个对等方都能收到该查询;到该查询;ü如果收到查询的对等方中有被如果收到查询的对等方中有被请求对象,沿反向路径请求对象,沿反向路径回发回发“查询命中查询命中”报文;报文;•可能收到多个对等方发回的可能收到多个对等方发回的“查询命中查询命中”报文报文•选择一个对等方,双方建立一选择一个对等方,双方建立一条直接的条直接的TCP连接,并通过连接,并通过HTTP报文得到内容报文得到内容 125 Chapter2P&EEP&EE 对等方对等方X加入加入ü对等方对等方X维持一张对等方列表(维持一张对等方列表(IP地址)地址)üX试图与列表上的对等方建立试图与列表上的对等方建立TCP,直到与,直到与Y建立连接建立连接üX向向Y发送发送Ping报文报文;;Y向邻居转发向邻居转发Ping报文报文ü所有收到所有收到Ping报文的报文的对等方对等方Z用用Pong报文响应报文响应((IP地址)地址)üX收到多个收到多个Pong报文,建立多个报文,建立多个TCP连接,即多个边连接,即多个边126 Chapter2P&EEP&EEKaZaA 与与Gnutella类似,类似,无专用服务器,但对等方地无专用服务器,但对等方地位不平等。
位不平等r实现:实现:ü对等方先形成一个对等方先形成一个层次的层次的覆盖网络覆盖网络ü通过通过查询查询,找到所需对象找到所需对象 127 Chapter2P&EEP&EE层次覆盖网络层次覆盖网络r每组包括若干个组员,一个组长每组包括若干个组员,一个组长m组员与其组长有一个组员与其组长有一个TCP连连接,接,将共享内容告诉组长将共享内容告诉组长m组长维护一个数据库,该组组长维护一个数据库,该组的共享内容及相关对等方的的共享内容及相关对等方的IP地址m相关组长之间建立相关组长之间建立TCP连接连接r组长追踪其所有子节点上的内容组长追踪其所有子节点上的内容普通对等方组长对等方在覆盖网络中的邻居关系对等方根据通信关系划分若干组,组成层次结构对等方根据通信关系划分若干组,组成层次结构128 Chapter2P&EEP&EEKaZaA: 查询查询 对等方确定到某个特定对象的方法:对等方确定到某个特定对象的方法:ü向组长发出查询,组长用本组中具有该对象的对等方向组长发出查询,组长用本组中具有该对象的对等方列表响应;列表响应;ü或与其他组长联系,请它们向该对等方发送具有该对或与其他组长联系,请它们向该对等方发送具有该对象的对等方列表。
象的对等方列表 129 Chapter2P&EEP&EEKaZaA特点特点r层次覆盖网络层次覆盖网络r查询流量不大查询流量不大r设计技巧设计技巧ü请求排队请求排队:限制并行上载数量:限制并行上载数量ü激励优先权:激励优先权:上载文件比下载文件多的用户优先上载文件比下载文件多的用户优先ü并行下载:并行下载:从多个对等方请求并下载同一个文件的不从多个对等方请求并下载同一个文件的不同部分130 Chapter2P&EEP&EE2.7 TCP套接字编程套接字编程r网络应用程序的核心:网络应用程序的核心:客户机程序和服务器程序客户机程序和服务器程序 运行时,分别创建一个客户机进程和一个服务器进运行时,分别创建一个客户机进程和一个服务器进程,相互之间通过程,相互之间通过套接字读写数据套接字读写数据进行通信进行通信r网络应用程序类型:网络应用程序类型:ü通用应用程序通用应用程序::通过通过RFC文档所定义的标准协议来实现文档所定义的标准协议来实现 程序必须满足该程序必须满足该RFC所规定的规则;使用与协议相所规定的规则;使用与协议相关的端口号如关的端口号。
如Web应用应用ü专用的应用程序:专用的应用程序: 程序不必符合程序不必符合RFC规则;开发者根据实际应用设计;规则;开发者根据实际应用设计;不能使用不能使用RFC中定义的周知端口号中定义的周知端口号131 Chapter2P&EEP&EE说明说明 研发初期,先选择运输层协议:研发初期,先选择运输层协议:üTCP:: 面向连接的,为两个端系统之间的数据流动提供面向连接的,为两个端系统之间的数据流动提供可靠的字节流通道可靠的字节流通道üUDP:: 无连接的,从一个端系统向另一个端系统无连接的,从一个端系统向另一个端系统发送独发送独立的数据分组,不对交付提供任何保证立的数据分组,不对交付提供任何保证 132 Chapter2P&EEP&EE2.7.1 TCP套接字编程套接字编程 运行在不同机器上的运行在不同机器上的进程彼此通过套接字传递报文进程彼此通过套接字传递报文来进行通信来进行通信r进程进程/套接字:套接字:房子房子/门户,即套接字是应用进程和门户,即套接字是应用进程和TCP之间的门户。
之间的门户 程序开发者可以控制应用层端所有东西;不能控程序开发者可以控制应用层端所有东西;不能控制运输层端制运输层端r TCP服务服务: 从一个进程到另一个进程的从一个进程到另一个进程的可靠字节传输可靠字节传输由操作系统控制进程 具有缓存,变量的TCP套接字由应用程序研发者控制主机或服务器进程 具有缓存,变量的TCP套接字由操作系统控制主机或服务器internet由应用程序研发者控制133 Chapter2P&EEP&EE客户机和服务器程序之间的交互客户机和服务器程序之间的交互 先建立先建立TCP连接,再进行数据传输连接,再进行数据传输ü客户机程序是连接的发起方;客户机程序是连接的发起方;ü服务器必须先准备好,对客户机程序发起的连接做出服务器必须先准备好,对客户机程序发起的连接做出响应:响应: ··服务器程序事先已经在系统中运行;服务器程序事先已经在系统中运行; ··服务器程序的服务器程序的一个套接字(欢迎套接字)已经一个套接字(欢迎套接字)已经打开打开,准备接收客户机程序发起的连接(敲门)准备接收客户机程序发起的连接(敲门)。
具体过程:具体过程:134 Chapter2P&EEP&EE建立建立TCP连接连接ü客户机进程向服务器发起一个客户机进程向服务器发起一个TCP连接连接:: 创建一个本地套接字创建一个本地套接字,指定相应服务器进程的地址,指定相应服务器进程的地址((IP地址和端口号)地址和端口号)ü建立一个建立一个TCP连接:连接: 当服务器听到客户机的连接请求(敲门)时,当服务器听到客户机的连接请求(敲门)时,创建一创建一个新套接字,个新套接字,经过经过“三次握手三次握手”,客户机套接字和服务器,客户机套接字和服务器套接字之间建立一个套接字之间建立一个TCP连接(直接的虚拟管道)连接(直接的虚拟管道)135 Chapter2P&EEP&EE传送数据传送数据rTCP连接为客户机和服务器了一个直接的传输管道连接为客户机和服务器了一个直接的传输管道r可靠的可靠的, 顺序的顺序的,字节流的传输字节流的传输136 Chapter2P&EEP&EE术语术语ü流:流:流入或流出某进程的一串字符序列流入或流出某进程的一串字符序列ü输入流:输入流:来自某个输入源(如键盘)、或某个套接字来自某个输入源(如键盘)、或某个套接字(因特网的数据流入套接字)。
因特网的数据流入套接字)ü输出流:输出流:到某个输出源(如显示器)、或某个套接字到某个输出源(如显示器)、或某个套接字(数据通过套接字流向因特网)数据通过套接字流向因特网)137 Chapter2P&EEP&EE2.7.2 Java应用程序示例应用程序示例 客户机和服务器经客户机和服务器经TCP连接进行通信连接进行通信ü客户机从客户机从键盘读键盘读一行字符,通过套接字向服务器发送一行字符,通过套接字向服务器发送ü服务器服务器从套接字读取数据;从套接字读取数据;ü将该行字符转换成大写将该行字符转换成大写;;ü将修改的行通过其连接套接字再回发给客户机将修改的行通过其连接套接字再回发给客户机ü客户机客户机从其套接字中读取修改的行,并将该行在显示从其套接字中读取修改的行,并将该行在显示器器上显示上显示138 Chapter2P&EEP&EE客户机客户机/服务器程序交互服务器程序交互等待入连接请求等待入连接请求connectionSocket =welcomeSocket.accept()生成欢迎套接字生成欢迎套接字,port=xwelcomeSocket = ServerSocket()生成套接字生成套接字,与与 hostid连接连接, port=xClientSocket = Socket()关闭关闭connectionSocket读回答读回答ClientSocket关闭关闭ClientSocket服务器服务器 (运行在 hostid上上)客户机客户机发送请求发送请求ClientSocket读请求读请求connectionSocket写回答写回答connectionSocketTCP connection setup139 Chapter2P&EEP&EE客户机端客户机端r创建了三个流和一个套接字,创建了三个流和一个套接字,如图如图所示。
所示ü套接字:套接字:clientSocket ;;üInFromUser输入流:输入流:连接到连接到键盘;键盘;üInFromServers输入流:输入流:与套与套接字连接从网络来的字符接字连接从网络来的字符üoutToServers输出流:输出流:与套接与套接字连接,客户机发送到网络字连接,客户机发送到网络的字符客户机processoutToServer到网络到网络来自网络来自网络inFromServerinFromUser键盘键盘显示器显示器进程进程clientSocket输入流输入流输入流输入流输出流输出流TCP套接字套接字套接字套接字140 Chapter2P&EEP&EE客户机客户机 : (TCPClient.java)import java.io.*; import .*; class TCP Client { public static void main(String argv[ ]) throws Exception { String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket ClientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream()); 产生输入流产生输入流产生客户机套接字产生客户机套接字, 与服务器连接与服务器连接生成输出流与生成输出流与套接字联系套接字联系产生输入流、输出流、套接字产生输入流、输出流、套接字输入输入发送发送接收接收显示显示141 Chapter2P&EEP&EE BufferedReader inFromServer = new BufferedReader(new InputStreamReader(ClientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM Server: " + modifiedSentence); ClientSocket.close(); } } 产生与套接字产生与套接字联系的输入流联系的输入流向服务器发送行向服务器发送行从服务器读行从服务器读行显示内容显示内容键盘输入键盘输入142 Chapter2P&EEP&EE服务器服务器: (TCPServer.java )import java.io.*; import .*; class TCP Server { public static void main(String argv[]) throws Exception { String ClientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 在端口在端口6789 生成生成欢迎套接字欢迎套接字,监听,监听创建一个连创建一个连接套接字接套接字 生成输入流,生成输入流,与套接字联系与套接字联系产生输入流、输出流、套接字产生输入流、输出流、套接字接收接收发送发送143 Chapter2P&EEP&EE DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); ClientSentence = inFromClient.readLine(); capitalizedSentence = ClientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } } } 从套接字读入客从套接字读入客户机来的数据户机来的数据 生成输出流,生成输出流,与套接字联系与套接字联系向套接字输出向套接字输出数据到客户机数据到客户机循环结束,返回并等待另循环结束,返回并等待另一个客户机连接一个客户机连接144 Chapter2P&EEP&EE2.8 UDP套接字编程套接字编程üUDPUDP是一种无连接的服务,即是一种无连接的服务,即在两个进程之间没有创建在两个进程之间没有创建管道时所需的初始握手阶段管道时所需的初始握手阶段。
ü进程之间的数据传递以进程之间的数据传递以分组分组为单位进行为单位进行ü分组中含目的进程地址(分组中含目的进程地址(主机主机IPIP地址和端口号地址和端口号)ü提供不可靠的传输服务提供不可靠的传输服务145 Chapter2P&EEP&EE编程说明:编程说明:ü通信进程之间没有初始握手,通信进程之间没有初始握手,不需要欢迎套接字不需要欢迎套接字;;ü没有流没有流与套接字相联系;与套接字相联系;ü发送主机将信息字节发送主机将信息字节封装生成分组封装生成分组,再发送;,再发送;ü接收进程接收进程解封收到的分组解封收到的分组,获得信息字节获得信息字节146 Chapter2P&EEP&EE客户机客户机/服务器程序交互服务器程序交互关闭关闭ClientSocket服务器服务器 (运行在运行在hostid上上)从从ClientSocket读应答读应答创建套接字创建套接字ClientSocket = DatagramSocket()客户机客户机创建地址创建地址 (hostid, port=x,使用使用 ClientSocket 发送数据报请求发送数据报请求 对入请求创建套接字对入请求创建套接字port=xServerSocket= DatagramSocket()从从ServerSocket读请求读请求向向ServerSocket写应答写应答指定客户机主机地址、端口号指定客户机主机地址、端口号147 Chapter2P&EEP&EE客户机:客户机:客户机process客户机 UDP 套接字sendPacket到网络来自网络receivePacketinFromUser键盘显示器clientSocketUDP分组输入流输入流UDP分组UDP套接字ü一个套接字一个套接字ClientSocket:发送和接收分组。
发送和接收分组ü一个输入流一个输入流InfromUser:与标准输入联系(键盘)与标准输入联系(键盘) 接收分组接收分组 (字节流字节流)发送分组发送分组 (字节流字节流)148 Chapter2P&EEP&EE客户机客户机 (UUDPClient.java)import java.io.*; import .*; class UDPSocket { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket ClientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[ ] sendData = new byte[1024]; byte[ ] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); 生成输入流生成输入流生成客户机生成客户机套接字套接字使用使用DNS将主机名将主机名转换为转换为IP地址地址产生输入流、套接字产生输入流、套接字输入输入封装封装发送发送输入输入149 Chapter2P&EEP&EE DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); ClientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); ClientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM Server:" + modifiedSentence); ServerSocket.close(); } } 使用要发送的数据、使用要发送的数据、长度、长度、IP地址、端口地址、端口生成数据报生成数据报向服务器向服务器发送数据报发送数据报从服务器读数据报从服务器读数据报显示显示150 Chapter2P&EEP&EE服务器:服务器:r一个套接字一个套接字serverSocket:发送和接收分组。
发送和接收分组 接收分组接收分组 (字节流字节流)发送分组发送分组 (字节流字节流)serverSocket151 Chapter2P&EEP&EE服务器服务器(UDPServer.java)import java.io.*; import .*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket ServerSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); ServerSocket.receive(receivePacket); 在端口在端口9876生成生成数据报套接字数据报套接字为接收的数据报为接收的数据报生成空间生成空间接收数据报接收数据报产生套接字产生套接字接收接收解封解封发送发送152 Chapter2P&EEP&EE String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); ServerSocket.send(sendPacket); } } } 获得发送方的获得发送方的 IP 地址,端口地址,端口#向套接字写向套接字写出数据报出数据报循环结束,返回等待另循环结束,返回等待另一个数据报一个数据报产生数据报发产生数据报发送给客户机送给客户机153 Chapter2P&EEP&EE2.10 小结小结r应用程序体系结构应用程序体系结构m客户机客户机-服务器服务器mP2Pm混合混合r应用程序服务要求应用程序服务要求:m可靠,带宽,时延可靠,带宽,时延r因特网传输服务模型因特网传输服务模型m面向连接,可靠面向连接,可靠: TCPm不可靠,数据报不可靠,数据报: UDPr特定协议特定协议:mHTTPmFTPmSMTP, POP, IMAPmDNSrP2P文件共享文件共享r套接字编程套接字编程154 Chapter2P&EEP&EE应用层应用层 运输层运输层层层网络层网络层链路层链路层物理层物理层应用层应用层 运输层运输层层层网络层网络层链路层链路层物理层物理层应用层应用层 运输层运输层层层网络层网络层链路层链路层物理层物理层应用程序应用程序155 Chapter2P&EEP&EE进程具有缓存、变量的TCP套接字主机或服务器进程具有缓存、变量的TCP套接字主机或服务器因特网由操作系统控制由应用研发者控制156 Chapter2P&EEP&EE根DNS服务器com DNS 服务器org DNS 服务器edu DNS 服务器poly.eduDNS 服务器umass.eduDNS 服务器DNS 服务器DNS 服务器pbs.orgDNS 服务器分布式、等级制数据库157 Chapter2P&EEP&EE1.简述应用程序体系结构三种类型的特点。
简述应用程序体系结构三种类型的特点2.什么是套接字、用户代理和什么是套接字、用户代理和Web缓存?简述缓存?简述用户进程和套接字的关系用户进程和套接字的关系3.什么是什么是P2P文件共享?简述其内容定位三种方文件共享?简述其内容定位三种方式的特点式的特点158 Chapter2。












