南京理工大学《计算机网络》课件-第二章 应用层20_第1页
南京理工大学《计算机网络》课件-第二章 应用层20_第2页
南京理工大学《计算机网络》课件-第二章 应用层20_第3页
南京理工大学《计算机网络》课件-第二章 应用层20_第4页
南京理工大学《计算机网络》课件-第二章 应用层20_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章应用层

本章主要学习有关网络应用的原理和实现方面的知识。

主要内容:

•应用层概念:应用层协议、客户机与服务器、进程、套接字(socket)

和运输层接口。

♦应用程序:Web、电子邮件、域名系统DNS及P2P对等文件共享;

•开发网络应用程序的方法:套接字API编程;

2.1应用层协议原理

研发网络应用程序的核心:写出能够运行在不同端系统,并通过网

络相互通信的程序。

例如,Web应用程序:由两个可以相互通信的程序组成。

•浏览器程序:运行在用户主机上;

•Web服务器程序:运行在Web服务器主机上。

其他,如P2P等。

应用程序软件只在端系统运行,不能在网络核心设备上运行C

如图2.1。

2.1.1网络应用程序体系结构

网络应用程序体系结构:由应用程序研发者设计,规定如何.在各种

端系统上组织该应用程序O

类型:

>客户机/服务器体系结构:一个服务器,多个客户机。

•服务器主机:总是打开。为来自许多其他客户机主机的请求提供

服务。

・客户机主机:可以总是打开或有时打开。向服务器主机发出请求。

如,Web应用程序:总是打开的Web服务器为运行在客户机主机上

的浏览器的请求提供服务(接收客户机请求,并发送响应结果)。

特点•.

•客户机之间不能直接通信;

•服务器具有固定、周知的地址,即IP地址。

如图2・2a。

a)客户机/服务器应用程序b)对等应用程序

图2-2a)客户机/服务器体系结构;b)P2P体系结构

生物群巢(serverfarm,凝务器场):创建强大的虚拟服务器。解决

一台服务器主机跟不上所有客户机请求的情况。

>纯P2P结构(peer・to・peer):没有一个总是打开的服务器。任意一对

主机(对等方)可直接通信。如图2-2b。

如,公共域文件共享应用程序Gnutella。

特点:不要求任何主机总是打开;

参与的主机每当加入时都有可能改变其IP地址。

可扩展性。

难于管理。

>客户机/服务器和P2P体系结构的混合:

如:Tapster(MP3文件共享)和即时讯息应用程序。

2.1.2进程通信

进程(process):运行在端系统中的程序。

,相同端系统中进程间通信•,由操作系统控制;

•不同端系统上进程间通信.♦通过跨网络交换报文(message)通信。

♦发送进程:产生报文并向网络发送;

♦接收进程:接收报文,并回送报文。

如图2-1。

1、客户机和服务器进程

•网络应用程序由成对的进程组成,并通过网络相互发送报文。

如,Web应用程序:一个客户机浏览器进程与一个服务器进程交换

报文。

•两个通信进程分别标示为客户机和服务器。

如,Web应用程序:浏览器是一个客户机进程,Web服务器是一个

服务器进程。

P2P文件共享:下载文件的对等方标示为客户机,上载文件的对

等方标示为服务器。一个进程可以是客户机,也可能是服务器。

♦客户机、发起通信(即在会话开始时,开始与其他进程联系)的

进程。

♦服务器・在.会话开始时等待其他进程联系的进程。

如,Web中:一个浏览器进程向某个WebJ艮务器进程发起联系。

客户机服务器

P2P文件共享:对等方A请求对等方B发送某个文件。

客户机服务器

2、套接字

进程通过它的套度字在网络上发送和接收报文。

关系:进程比作房子,套接字是进程的门户。

如图2-3o

♦发送进程:把报文推出门户(套接字)。(发送报文)

・传送报文:通过下面网络把报文传送到目的进程门口。

♦接收进程:通过其门户(套接字)接收。(接收报文)

>套接字(SOC&。:是同一台主机内应用层与运输层之间的接口。

是在网络上建立网络应用程序的可编程接口,也叫应用程序和网络

之间的应用瘗序疹〃4P/(applicationprogrammer'sinterface)o

•应用程序开发者可以控制套接字应用层端的全部;

•对该套接字的运输层端几乎丕能控制(只能选择运输层协议、设

定几个运输层参数等)。

•应用程序开发者选择了一个运输层协议,则应用程序就建立在由

该协议提供的运输层服务之上。

3、进程寻址

•主机上的进程有多个。需要区分每一个进程。

源主机匕的进程向目的主机上的进程发送报文时,应带有接收进程

的识别信息。

•网络中的主机有多个,每个主机上有多个进程。

>进程寻址过程:

确定主机今确定进程

>进程识别信息:

•主初名祢或您统:网络中的哪二个主机。

因特网中,主机用/P幽况进行标识(32位,全球惟一)。

•进程的标识:主机中的哪一个进程。

因特网中,采用裸Z7号(portnumber)。

♦常用的应用程序被指派专门的端口号(周知端口)。

例如:Web服务进程(HTTP协议)月的是80号端口;

邮件服务进程(SMTP协议)用的是25号端口。

♦创建二个新的网络应用程序U、须赋予二t新的遍旦号。

4、用户代理(useragent)

是用户与网络应用程序之间的接口。例如,

•Web应用的用户代理•.是一些浏览器软件。一个通过套接字收发

报文同时提供用户接口的进程。

,电子邮件应用程序用户代理是“邮件阅读器:允许用户进行邮

件的撰写和阅读。

2.1.3应用层协议

应用层协议:定义了运行在不同端系统上的应用程序进程间互相传

递报文的方式。

具体内容:

•交换的报文类型:如请求报文和响应报文;

•各种报文类型的语法:如报文中的各个字段及其详细描述;

•字段的语义:即字段包含信息的含义:

•进程何时、如何发送报文及对报文进行响应的规则。

说明••

・标准文档RFC文档定义的协议,可应用于公共领域。如HTTP。

•专用应用层协议,如P2P使用的协议。

・应用层协议是网络应用的一部分。

例如,Web应用:是一种允许客户机按照需求从Web服务器获得“文

档”的网络应用。

组成包括:HTML、Web浏览器、Web服务器程序,以及一个应用

层协议HTTP(超文本传输协议)等部分。

HTTP定义了在浏览器程序和Web服务器程序间传输的报文格式和

序列。

2.1.4应用所需要的服务

套接字:是应用程序进程和运输协议之间的接口(门户)。

•发送端的应用程序通过该门户发出报文,由运输协议跨越网络将

报文传输到接收进程的门户。

•网络应用需要使用运输协议所提供的服务。运输协议有多种,提

供的服务不同,需适当选择。

应用程序服务要求:

>可靠的数据传输

即无数据丢失。

•数据不能丢失的应用:如文件传输、电子邮件及金融事务等。

•成密税教符丢失走或曲loss-tolerant叩plication):如多媒体应用。

>带宽

有些应用必须以特定的速率传输数据。

•帝第敏感的应物bandwidth-sensitive叩plication):需要特定的带宽

才能正常工作。如,因特网电话、其他多媒体应用;

,岸拴应用(elasticapplication):使用的带宽多或少影响不大。如电

子邮件、文件传输以及Web传输。

>定时

有些应用对数据传输有严格的时间限制。

,交互式实时应用,•对时间敏感,要求端到端时延在几亘耋秒或更

小。如,因特网电话、虚拟环境、视频会议以及多方游戏等。

•非实时应用:端到端时延无约束,时延低更好。

图2-4总结了一些流行的和新兴的因特网应用三方面的要求。

应用数据丢失带宽时间敏感

文件传输不能丢失弹性无

电子邮件不能丢失弹性无

Web文档不能丢失弹性(几kbrt/s)无

实时音物视频容忍丢失音频(几kbrt/s-lMbrt/si是,100ms左右

视短(10kbrt/s-5MbiVs)

样储音刖视频容忍丢失同上是,几秒

交互式游戏容忍丢失几kbit/s-10kb<Vs是,100ms左右

即时讯息不能丢失弹性是或不是

图2.4部分网络应用的要求

2.1.5因特网运输协议提供的服务

两个运输层协议,•用户数据报协议UDP(UserDatagrameProtocol)和

传输控制协议TCP(TransmissionControlProtocol)o

每个协议为调用它们的应用程序提供不同的服务模型。

在创建一个新的因特网应用时,要选择其中一个。

1、TCP月艮务

提供的服务:

>面向连接的服务:三阶段

,建立连接(握手过程):客户机程序和服务器程序之间互相交换控

制信息,在两个进程的套接字之间建立一个TCP连接。

・传输报文:连接是全双工的,即连接双方的进程可以在此连接上

同时进行报文收发。

•拆除连接应用程序报文发送结束。

>可靠的传输服务:通信进程以无差错、按适当顺序交付发送的数据。

拥塞控制,,当发送方和接收方之间的网络出现拥塞时,会抑制发送

进程速率。

TCP协议不适合实时应用。

未提供的服务:

>没有确保最小传输速率:发送进程受拥塞控制机制制约;

>不提供时延保证:数据传输的时间不确定。

结论:TCP协议能保证交付所有的数据,但并不保证这些数据传输

的速率以及期待的传输时延。

2、UDP月艮务

提供最小服务模式运行。

♦无连接:两个进程通信前没有握手过程;

・不可靠数据传输..不保证报文能够被接收,或收到的报文是乱序到

达。

•没有拥塞控制机制••发送进程可以任何速率发送数据;

•不提供时延保证:

适于实时应用。

图2-5列出一些因特网应用及所用的协议。

应用应用层协议下层运输协议

电子晶件SMTP[RFC2821]KP

近程终♦访问Telnet[RFC854]KP

WebHP[RFC2616]TCP

文怫■叫RFC959)TCP

远程文件服务器NFS[McKusik1996]]DDP

濠式多集体通常专用(例如,ReadNetworks)UDP

因将网电话通常专用(例如,Dialpad)通常UDP

2.1.6本书介绍的网络应用

Web、文件传输、电子邮件、目录服务、对等文件共享等五个。

2.2Web应用和HTTP协议

Web产生于20世纪90年代初期。

­改变了人们与工作环境内外的交流方式;

•提升因特网地位;

•生活和工作发生变化;

•方便、快捷得到所需要的信息;

•任何人在Web上发布信息;

•超链接和搜索引擎帮助人们浏览Web站点。

2.2.1HTTP概况

HTTP(超文本传输协议):应用层协议,是Web的核心。

>组成:

客户机程序和服务器程序,分别运行在不同的端系统中,通过交换

HTTP报文进行会话。

HTTP协议定义了报文的格式以及客户机和服务器进行报文交换的

方式。

>Web常用术语:

•Web页(文档):由对象组成。

对象,,是文件。通过一个URL地址来寻址。如HTML文件、JPEG

图形文件、Java小程序等。

♦Mb”页含有二个菱械上(徵区戈企及几个引用对象。

例如,一个Web页包含HTML文本和5个JPEG图形文件(即有6

个对象)。

♦在基本的HTML文件中,通过对象的URL地址来引用。

♦URL地址组成:存放对象的服务器主机名和对象的路径名

如http://www.someS/somedepartment/picture.gif

主机名路径名

•浏览器(客户机):是Web应用的用户代理,用于显示所请求的web

页,提供导航功能和配置属性。

实现了HTTP协议的客户机端。

•Web服务器:用于存贮Web对象(由URL寻址),实现HTTP协议的

服务器端。

HTTP协议定义Web客户机(浏览器)如何向Web站点请求Web页,

以及服务器如何将Web页传送给客户机。

>客户机和服务器之间交互过程:运行ApacheWeb

服务器的服务器

如图2-6o

・客户机:用户请求一个Web

页(如点击一个超链接),浏览器向

服务器发出对该页所含对象的

“HTTP请求报文”;

运行Explorer运行Navigalor

•服务器:接受请求,并用包的PC的Mac

图2dHTTP的请求一响应行为

含这些对象的“HTTP响应报文”响

应。

>HTTP版本:

•HTTP1.():1997年前使用。

•HTTP1.1:1998年以后使用,向下兼容,目前占主导。

说明:

•HTTP协议使用的底层运输协议是TCP。

•HTTP客户机先与服务器建立,TCP连接,然后,浏览器和服务器进程

通过套接字访问TCP:如图2-3

♦客户机的套接字接口是客户机进程与TCR连接之间的「」[户”,

客户机从该套接字接口发送“HTTP请求报文”和“接收响应报文”;

♦服务器的套接字接口是服务器进程与TCP连接之间的“门户”,

服务器从该套接字口接收“HTTP请求报文”和“发送响应报文”。

•TCP提供可靠的数据传输服务:客户机进程和服务器进程发出的每个

HTTP报文能完整地到达对方。

•HTTP是双修物泌服务器不保存关于客户机的任何信息。

Web使用客户机/服务器结构,Web服务器总是打开,有一个固定

史地址,为多个浏览器服务。

2.2.2非持久连接和持久连接

1、非持久连接:

例,从服务器向客户机传送Web页:

设该页含有一个基本HTML文件和10个JPEG图形,11个对象位

于同一个服务器上。HTML文件的URL为:

http://www.someS/someDepartment/home.index

步骤:

①建立TCP连接:客户机在端口号80(HTTP的默认端口)发起一

个到指定服务器的TCP连接;

②客户机发出“HTTP请求报文”(含路径名):通过与该TCP连接

绑定的套接字向服务器发送:

③服务器会送“HTTP响应报文”:通过与该连接绑定的套接字获取

请求报文,从存储器中检索出相关对象,封装成响应报文,通过其套接

字向客户机发送;

@断开TCP连接:服务器通知TCP断开(在确认客户机已经收到响

应报文时真正断开);

⑤客户机收到响应报文,TCP连接关闭。客户机从响应报文中提取

出HTML文件,得到对1()个图形的引用;

⑥对每个对象重复前4步。

浏览器收到Web页后,将该页显示给用户。不同的浏览器显示形式

可能不同,HTTP协议不负责浏览器的解释。

说明:

・每个TCP连接只传输一个请求报文和一个响应报文;

上例中,要建立11个TCP连接。

•浏览器可同时打开多个连接:

并行的TCP连接:并行数大于1。默认打开5〜10个。

串行的TCP连接:最大并行数为1。

请求一个HTML文件所需时间:

即从客户机请求基本HTML文件开始,到用户收到整个文件为止所

花时间。

•往返时延RTT,.一个小分组从客户机到服务器,再回到客户机所

花时间。包括传播时延、排队时延以及处理时延。

如图2.7。

♦“三次握手”过程:

客户机发送一个小TCP报文段到服务器今服务器回送一个小TCP

报文段做出确认和响应玲客户机向服务器返回确认(“请求”与“确认”

结合)

•总响应时间:两个RTT时延加上服务器发送文件的时间

非持久连接缺点:

•服务器负担重每一个请求对象建立和维护一个新的连接。

•每一个对象的传输时延长:包含两个RTT时延,一个用于TCP建

立,一个用于请求和接收对象。

2、持久连接

•服务器在发送响应后保持该TCP连接

相同客户机与服务器之间的后续请求和响应报文通过相同的连接进

行传送。

如,一个Web页的所有对象可以通过一个持久TCP连接传送。

或同一服务器上的多个Web页也可以通过一个持久TCP连接传送给

同一个客户机。

♦连接经一延时间间隔(超时间隔)未被使用、隈先箱就关闭该连接。

持久连接两种方式:

>非流水线方式(withoutpipelining):客户机只能在前一个响应接收到

之后才能发出新的请求。

•客户机为每一个引用对象的请求和接收只使用一个RTT时廷。

•会浪费一些服务器资源:服务器在发送完一个对象,等待下一个

请求时,会出现空闲状态。

>流水线方式(withpipelining):

•客户机可一个接一个连续产生请求(只要有引用就产生),即在前

一个请求接收到响应之前可以产生新的请求。

•服务器二个接二个连续发送相应对象。

特点:

•所有引用对象可能只花费一个RTT时延。

•TCP连接空闲时间很短。

HTTP1.1默认方式:流水线方式的持久连接。

223HTTP报文格式

两种报文:HTTP请求报文、HTTP响应报文。

2.2.4用户与服务器交互:Cookie

HTTP服务器是无状态的。

Cookie目的:允许Web站点跟踪、识别用户;服务器可以限制用户

访问,或把内容与用户身份关联。

2.2.5HTTP内容

•传输Web页面所含对象:如HTML文件、JPEG文件、Java小应用

程序等等。

•可以传输其他类型的文件:如传输XML(可扩充的标识语言)文件。

•P2P文件共享中,作为文件传输协议使用。

•用于流式存储的音频和视频°

2.2.6Web缓存

•Web缓存器(Nebcache):也叫代理服务器(proxyserver)

是能够代表起始旅务麝来满足HTTP请求的网络实体。保存最近请

求过的对象的副本。

起始服务器(originserver):对象起始放置,并且在其中始终保持对

象拷贝的服务器。

客户机通过Web缓存器请求对象:

对用户浏览器进行配置,使用户

的所有HTTP请求均首先指向该代理

服务器

Web缓存器,即浏览器对每一个对

客户机起始

象的请求首先被定向到该Web缓存服务器

器。

客户机起始

服务器

图240京户机通过Web缓存器谙求对象

操作过程:

例:假设浏览器请求对象/campus.gif

Q浏览器:建立一个到该Web缓存器的TCP连接,并向Web缓存器中

的该对象发送一个HTTP请求;

②Meb缓存器:检查本地是否存储了该对象的拷贝。

•有:缓存器就用HTTP响应报文向客户机浏览器转发该对象;

•没有:与该对象的起始服务器打开一个TCP连接。

客户机—fWeb缓存器-f起始服务器

♦Web缓存器在TCP连接上发送获取该对象的请求。

♦起始服务器收到请求,向Web缓存器发送具有该对象的HTTP

响应。

♦Web缓存器接收该对象,存储一份在本地中,并通过HTTP响应

报文向客户机浏览器转发该对象(通过已经建立的TCP连接)。

说明:

>Web缓存器既可以是服务器也可以是客户机:

•当它接收浏览器请求并发回响应时,是服务器;

•当官向起始服务器发出请求并接收响应时,是客户机。

AWeb缓存器由1SP购买并安装:例如,在大学校园网上安装。

Web缓存优点:

•减少对客户机请求的响应时间:

客户机—Web缓存器起始服务器

•减少机构的内部网络与因特网连接链路上的通信量

降低开销,改善各种应用的性能。

例图2・11,包括两个网络:机构的内部网络和因特网。

起始服务器

•机构内部网络•.是一个高速的局域网。Ai

其路由器与因特网上的路由器通过公共因特网

一条1.5Mbps的链路连接。

•起始服务器:与因特网相连,遍布全

球。

机构网络

图2-II机构网络与因特网之间的版为(

假设:

•对象长度为lOOkb,机构内浏览器对对象的平均访问速率为每秒

15个请求;

•机构内的HTTP报文小,可以忽略,不会在网络中以及接入链路

(从机构内部路由器到因特网路由器)上产生通信量;

・从因特网路由器转发HTTP请求报文,到收到其响应报文的时间

平均为2s(因特网时延)。

总的响应时间(浏览器从请求一个对象到接收到的时间):

局域网时延+接入链路时延(两个路由器之间的时延)+因特网时延

•局域网流量强度:

(15请求/s)X(1OOkb/请求)/(1OMbit/s)=O.l5

•接入链路的流量强度(从因特网路由器到机构路由器):

(15请求/s)义(1OOkb/请求)/(1.5Mbit/s尸1

•局域网时延:

强度为().15的通信量最多导致数十毫秒的时延,可以忽略。

・接入链路时延:

流量强度接近1,链路时延会非常大或无限增长。

总响应时间=接入链路时延+因特网时延

造成满足请求的平均响应时间以分钟计,用户很难接受。

改进方法一:增加接入链路的速率,如从1.5Mbps增力口至U10Mbps,使链

路上的流量强度减少到0.15,链路时延也可以忽略了。

总我应玲7%因特网时延=2秒钟

机构必须用较大投资,成本昂贵。

改进方法二:在机构网络中安装一个Web缓存器。如图2/2。

起始服务器

•Web缓存器的命中率・.缓存器满

足请求的比率。通常为0.2〜0.7。

设该机构缓存器的命中率为().4。公共因特网

•局域网时延:由于客户机和缓存1.5Mb/s接入送路

T

器位于同一个高速局域网上,40%的请

|10Mb/$马城网

求几乎会立即得到响应,时延约在

以内。

10ms机构网络机构缓存爆

剩下的60%请求需要通过访问起

图2-12为机构网络添加一台缓存器

始服务器才能满足。

•接入链路时延:

只有60%的请求对象通过接入链路传送,流量强度从1.0减小到0.6。

通常,在1.5Mbps链路上,当流量强度小于().8时,时延很小(约

几十毫秒),可忽略。

平均时延为:0.4X(0.010s)+0.6X(2s+0.01s)=1.21s

响应时延低于第一种解决方案(约2s)。

Web缓存器成本低:通过在PC机上运行公共领域软件。

2.2.7条件GET方法

高速缓存能减少用户感受到的响应时间,但存放在缓存中的对象拷

贝可能是陈旧的。即保存在服务器中的对象可能已经被修改。

条件GET方法:允许缓存器证实其对象都是最新的。例:

>一个代理服务器代表一个请求浏览器,向某个Web服务器发送一个请

求报文:

GET/fruit/kiwi.gifHTTP/I.l

Host:www.exotiquecuisine.coni

>该Web服务器向该缓存器发送携带被请求对象的响应报文:

HTTP/1.1200OK

Date:Mon,7Jul200315:39:29

Server:Apache/1.3.0(Unix)

Last-Modified:Wed,2Jul200309:23:24

Content-Type:image/gif

(datadatadatadatadata・•・)

>缓存器在将对象转发到其他浏览器的同时,也将该对象保存到本地缓

存中(包括对象的最后修改时间)。

>一个星期后,用户再次请求该对象(仍保留在缓存中),为检查位于

Web服务器中的该对象是否已经被修改,缓存器发送一个条件GET:

GET/fruit/kiwi.gifHTTP/1.1

Host:

If-modified-since:Wed,2Jul200309:23:24

告诉服务器,仅当自指定日期之后该对象被修改过,才发送该对象。

>设该对象自指定日期后未被修改,Web服务器向该缓存器发送一个响

应报文:

HTTP/1.1304NotModified

Date:Mon,14Jul200315:39:29

Server:Apache/1.3.0(Unix)

(实体主体为空)

该Web服务器发送一个响应报文,但并没有包含所请求的对象,并

指出该对象未修改,缓存器可以使用该对象的拷贝。

2.3文件传输协议:FTP

FTP会话:位于本地主机上的用户,向远程主机上传或者下载文件。

用户通过一个FTP用户代理与FTP服务器交互,过程如图2-13。

各地文件系统远程文件系统

图"13使用FTm■仅在本地和远程文件系统中移动文件

,用户提供远程主机的主机名:在本地主机的FTP客户机进程与远

程主机FTP服务器进程之间建立一个TCP连接;

,提供用户标识和口令:在该TCP连接上向服务器传送。

•服务器验证通过后,进行文件传送(双向):

将本地文件系统中的文件传送到远程文件系统;

从远程文件系统中得到文件。

FTP与HTTP共同点:都是文件传输协议,并运行在TCP上。

主要区别:

>FTP使用了两个并行的TCP连接・.

•控制连接(controlconnection):用于在两主机间传输控制信息(如

用户标识、口令等);

.TCP控制连接闻口21建

TCP数鬣连指端口20・

FTPFTP

客户机?服务J8

在用户主机与远程主机开始FTP会话前,FTP的客户机与服务器在

21号端口上建立一个用于控制的TCP连接。

FTP的客户机通过该连接发送用户标识和口令,或改变远程目录的

命令。

•数据连接(dataconnection):用于准确传输文件。

当FTP的服务器从该连接上收到一个文件传输的命令后(从远程主

机上读或写),就发起一个到客户机的数据连接。

在该数据连接上准确地传送一个文件并关闭连接。

•控制连接是持久的:在整个用户会话期间一直保持;

数据连接是非持久的:会话中每进行一次文件传输,都需要建立一

个新的数据连接。

>FTP的控制信息是带外传送(out-of-band):

使用分离的控制连接;

HTTP的控制信息是带内传输Hn-bag):

请求和响应都是在传输文件的TCP连接中发送。

>FTP协议是有状态的:

FTP服务器对每个活动用户会话的状态进行追踪,并保留;限制同

时会话的总数。

HTTP协议是无状态的:不对用户状态进行追踪。

2.4因特网中的电子邮件

电子邮件快速,便宜,可以一次发送给多个接收方,包含附件、超

链接、图像、声音、视频等等。

本节讨论电子邮件的核心,即应用层协议。

因特网电子邮件系统的总体结构;用户代理、邮件服务器和简单邮件传

输协议SMTP。如图2-15。

图2J2因特网电子Ml件的总”一述

1、用户代理(useragent)

也怛邮件阅读器。

允许用户阅读、回复、发送、保存和撰写报文。

•当用户完成邮件撰写时,邮件代理向其邮件服务器发送邮件,并

存放在发送队列中。

•当用户想读取一条报文时,邮件代理从其邮件服务器的邮箱中获

取该报文。

用户代理种类:

PUI(图形用户接口)的用户代理:阅读和编写多媒体邮件。如Outlook

等。

•基于文本的用户代理:如Mail等。

2、邮件服务器(mailserver)

是电子邮件体系结构的核心。

每个用户在某个邮件服务器上有一个赧软mailbox),管理和维护发

送给该用户的报文。

邮件发送主要过程:

从发送方用户代理开始一经发送方的邮件服务器-转发到接收方的

邮件服务器一分发到接收方的邮箱中

•若邮件投递失败,发送方的邮件服务器将其保存在一个报文队列

中,以后每30分钟再发送一次,若几天后仍未成功,将该报文删除,并

通知发送方。

•当用户访问自己的邮箱时,邮件服务器对其身份进行验证(用户名

和口令)。

3、简单邮件传送协议SMTP(SimpleMailTransferProtocol)

是因特网电子邮件的主要应用层协议。

使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮

件服务器发送邮件。

包括两部分:

・客户机端:运行在发送方邮件服务器上;

・服务器端:运行在接收方邮件服务器上。

每个邮件服务器上都有SMTP的客户机端和服务器端。

2.4.1SMTP

SMTP是因特网电子邮件应用的核心。

把一封邮件从发送邮件服务器传送到接收邮件服务器的过程:

>发送方:

•启动邮件代理程序,提供接收方的邮件地址,撰写邮件;

•通过用户代理把报文发给其邮件服务器,并放在报文发送队列中;

•邮件服务器上的SMTP客户机端发现了队列中的报文,创建一个

到接收方邮件服务器上的SMTP服务器的TCP连接(在25号端口)。

•客户机和服务器进行初始SMTP握手(指明收发双方的抠件地

址),客户机通过该TCP连接发送报文。

>接收方:

•在接收方的邮件服务器上,SMTP的服务器端接收该报文,并放

入相应邮箱。

•接收方调用用户代理阅读该报文。

说期SMTP•丕使用空间邮件服务器发送邮件,即TCP连接是从发

送方到接收方的直接相连。

如果接收方的邮件服务器没有开机,该邮件仍保留在发送方邮件服

务器上,并在以后进行再次传送。邮件不会在某个中间邮件服务器停留。

2.4.2SMTP与HTTP比较

共同点:

>都用于从一台主机向另一台主机传送文件

•HTTP用于从Web服务器向Web客户机(浏览器)传送文件(对象);

•SMTP用于从一个邮件服务器向另一个邮件服务器传送文件(电子

邮件报文)。

>持久HTTP和SMTP都使用持久连接

区别:

>HTT尸定投协次(pullprotocol):用户使用HTTP从服务器拉取信息。

其TCP连接是由想获取文件的机器发起。

尸溟推协爱(pushprotocol):发送邮件服务器把文件推向接收邮件

服务器,其TCP连接是由要发送文件的机器发起。

>SMTP使用7^ASCII码格式•.

对一些包含了非7位ASCII字符的报文或二进制数据(如图片、声

音),需要按照7位ASCII码进行编码,再传送。

在接收方需要解码还原为原有报文。

HTTP数据没有该限制。

>对含有文本和图形(或其他媒体类型)的文档:

•HTTP把每个对象封装到它自己的HTTP响应报文中;

•电子邮件则把所有报文对象放在一个报文中。

2.4.3邮件报文格式和MIME

MIME(多用途因特网邮件扩展):用于非ASCII数据扩展。

例,发送一个JPEG图形的邮件。

From:alice@crepes.fr

To:bob@

Subject:Pictureofyuiranycrepe.

MIME-Version:1.0

Content-Transfer-Encoding:base64

Content-Type:image/jpeg

(base64encodeddata...........

.........base64encodeddata)

接收的报文:

Received:fromcrepes.frby;12Oct9815:27:39GMT

From:alice0crepea.fr

To:bob?

Subject:Pictureofyummycrepe.

MIME-Version:1.0

Content-Transfer-Encoding:base64

Content-Type:image/jpeg

base64encodeddata......

......base64«ncode<1data

2.4.4邮件访问协议

发送方:用户代理用SMTP将邮件推入其邮件服务器1邮件服务

器再用SMTP将邮件转发到接收方的邮件服务器

接收方:通过其用户代理使用一个邮件访问协议(不是SMTP),从

其邮件服务器(位于某ISP)上取回邮件。

因为取邮件是一个拉操作,而SMTP协议是二个推协议。

邮件访问协议种类:

POP3(第三版的邮局协议)、IMAP(因特网邮件访问协议)以及HTTPo

电子邮件中使用的协议:图2・17

Alice的邮Bob

件照多器的*件服务器

SMTP

图2.14电子邮件协议和它们的通信实体

•SMTP先将邮件从发送方的用户代理传送到发送方的邮件服务器;

•SMTP将邮件从发送方的邮件服务器传输到接收方的邮件服务器;

•接收方的用户代理使用邮件访问协议(如POP3)将邮件从接收方的

邮件服务器取回。

1、POP3

简单、功能有限。

在用户代理(客户机)打开了一个到邮件服务器(服务器)端口110上的

TCP连接后,开始工作。

工作步骤(三阶段):

・特许阶段:用户代理发送用户名和口令使其获得下载邮件的特许。

•事务处理阶段.♦用户代理取回报文,可对邮件进行某些操作。

如做删除标记、取消删除标记、获取邮件统计信息等。

・更新阶段:邮件服务器删除带有删除标记的报文(已被用户取走的

报文不在邮件服务器保留)。

2、IMAP

用户使用POP3将邮件下载到本地主机,建立一个文件夹,将下载

的邮件放入该文件夹,服务器中不再保存。

POP3缺陷:没有给用户提供任何创建远程文件夹并且为报文指派

文件夹的方法。不适用于移动办公用户。

IMAP功能强:

•提供创建文件夹以及在文件夹之间移动邮件的命令;

•提供在远程文件夹查询邮件的命令;

•具有允许用户代理读取报文组件的命令;

•实现起来复杂。

3、基于web的电子邮件

用户使用浏览器收发电子邮件。

>用户代理是普通的浏览器,用户和其远程邮箱之间的通信通过HTTP

进行:

•收件人使用HTTP从他的邮箱中取一个报文到浏览器;

•发件人使用HTTP将电子邮件报文从其浏览器发送到其邮件服务器

上;

>邮件服务器之间发送和接收邮件时,使用SMTP。

>用户可以在远程服务器上以层次目录方式组织报文。

2.5DNS:因特网的目录服务

标识主机的两种方式:

・主机名:由不定长的字母和数字组成。便于记忆。

路由器处理困难。

•IP地址:由4个字节组成,有着严格的层次结构。路由器容易处理。

如IP地址(点分十进制):3。

2.5.1DNS提供的月艮务

报文在网络中传输,使用IP地址。

域名系统DNS(DomainNameSystem)t进行主机名到IP地址的转换。

•一个由分层的DNS服务器实现的分布式数据库;

•允许主机查询分布式数据库的应用层协议;

,是运行BIND(BerkeleyInternetNameDomain)软件的UNIX机器;

・DNS协说运行在UDP之上,使用53号端口。

DNS通常直接由其他的应用层协议(包括HTTP、SMTP和FTP)使

用,以将用户提供的主机名解析为IP地址。用户只是间接使用。

例,某个用户主机上的一个浏览器访问某个Web页,URL为:

/index.html

用户主机要将一个HTTP请求报文发送到Web服务器

,需先得到相应的IP地址。

过程如下:

・用户主机上运行DNS应用的客户机端。

•浏览器从URL中解析出主机地址,传给DNS应用的客户机端。

•DNS客户机向DNS服务器发送一个包含主机名的请求:

•DNS客户机收到一份含有对应主机名的IP地址的回答报文;

•浏览器向该IP地址指定的HTTP服务器发起一个TCP连接。

其他服务:

主机别名、邮件服务器别名、负载分配。

2.6P2P对等文件共享

P2P对等文件共享(peer-to-peerfile-sharing):

位于网络边缘的PC机(对等方peer)互相之间可以直接获取对象。

例,用户Alice使用P2P文件共享应用程序下载MP3的过程:

>在PC机上运行一个P2P文件共享应用软件(一个“对等方”);

>通过ADSL接入因特网;

>使用该应用程序搜索一首MP3歌曲;

>发出指令后,该应用程序显示一张对笠方列表:

•所有对等方在线,并愿意共享该首音乐的MP3拷贝

•对等方都是普通的PC,是因特网用户。

•列表中提供一些附加信息,如接入带宽和下载时间。

>用户选择一个对等方(Bob)并向其请求该MP3文件;

>两个用户之间建立一个直接的TCP连接;

>MP3文件从Bob的PC机向Alice的PC发送;

A下载期间若偶然断开,可尝试从另外对等方继续下载。

说明:每个参与的对等方既是内容的消费者也是内容的发布者。

P2P文件共享特点:

•所有内容没有经过第三方的服务器,而是直接在普通对等方之间传

输;

•P2P利用众多对等方集合中的资源去分发内容,具有高度的可扩展

能力。

•使用客户机/服务器模式:请求的对等方是客户机,被选中的对等方

是服务器。

♦服务器对等方使用文件传输协议向客户机对等方传送。

♦所有的对等方必须既能运行文件传输协议的客户机端程序,又能

运行服务器端程序。

P2P采用HTTP协议传送:

•通过传送“HTTP请求”和"HTTP响应”报文进行。

•对等方既是一个客户机,又是一个瞬时Web服务器。

内容定位体系结构:一个对等方如何确定哪些对等方有所需的东西。

(1)集中式目录

如,第一家在世界范围内从事MP3对等应用程序的商业公司

Napstero

使用一台大型服务器(或服务器场)来提供目录服务。如图2-23所示。

集中式日

录服务*

图2.23使用集中式目录的财等模式

・通知:每个活动的对等方将其IP地址及可共享内容通知目录服务器;

•目录服务器•.收集可共享的对象,并建立一个集中式的动态数据库(对

象名称到IP地址的映射)。

•更新当某个活动的对等方获得新对象或删除对象时,就通知目录服

务器更新。

集中式目录的P2P文件共享使用客户机/服务器与P2P的混合体系结

构。

缺陷:单点故障、侵犯版权、可靠性。

(2)洪泛查询

>对等方先形成一个抽象的逻辑网络(即覆盖网络):

•由所有活动的对等方和

连接的边构成,边表示两个对

等方之间有一个TCP连接

(不是通信链路)。

•该覆盖网络中,一个对

等方所连接的节点少于10

个。

上CE.SIIQ+岫•整/上&

>通过洪泛查询,找到所需对象:图2・24

•某个对等方Alice想得到一个对象。

•向覆盖网络中的每个邻居发送“查询报文”;

•每个邻居接着向它们的邻居转发该报文。

•持续该过程,使得覆盖网络上的每个对等方都能收到该查询。

•如果收到查询的对等方中有被请求对象,就向发起查询的对等方

Alice回发“查询命中”报文。

•可能会收到多个对等方发回的“查询命中”报文,从中选择一个

合适的对等方。

•双方建立一条直接的TCP连接,并通过HTTP报文得到内容。

缺陷:发起的“查询报文”,会在网络中产生很大的流量。

限范围的洪泛查询:在“查询报文”中设置一个计数字段,并给定一个

特定值。

(3)利用不均匀性

覆盖网络:

对等方和它们之间的通信关系形成的一个抽象的逻辑网络。

•指定一定数量的对等方为组长

•普通对等方被指派给一个组长。

•对等方与其组长创建一个TCP连接,并将共享内容告诉组长。

•组长维护着一个数据库,该组的共享内容及相关对等方的IP地址。

>对等方确定到某个特定对象的位置方法:

•向组长发出查询,组长用本组中具有该对象的对等方列表响应;

•或与其他组长联系,请它们向该对等方发送具有该对象的对等方

列表。

2.7TCP套接字编程

网络应用程序的核心:客户机程序和服务器程序。

运行时,分别创建一个客户机进程和一个服务器进程,相互之间通

过丛套接字读写数据进行通信。

网络应用程序类型:

•网络应用程序:由RFC文档所定义的标准协议的实现。

程序必须满足该RFC所规定的规则;使用与协议相关的端口号。

•专用的应用程序:

程序不必符合RFC规则;开发者根据实际应用设计;不要使用RFC

中定义的周知端口号。

说明:研发初期,先选择使用TCP还是UDP。

•TCP:面向连接的,为两个端系统之间的数据流动提供可靠的字

节流通道。

•UDP:无连接的,从一个端系统向另一个端系统发送独立的数据

分组,不对交付提供任何保证。

2.7.1TCP套接字编程

运行在不同机器上的进程彼此通过向套接字发送报文来进行通信。

如图2-26。

由应用M由应用为件

开发看不制开发者控M

由M作用

进程/套接字:房子/门户,即套接字是应用进程和TCP之间的门户。

应用程序开发者在套接字的应用层端可以控制所有东西;不能控制

运输层端。

客户机和服务器程序之间的交互:

裁建立I箜连坂海蚯数雌输。

>客户机程序是连接的发起方;

>服务器必须先准备好,对客户机程序发起的连接做出响应:

•服务器程序事先已经在系统中运行:

•服务器程序的某个套接字已经打开,准备接收客户机程序发起的

连接(敲门)。

①建立TCP连接:

•客户机进程向服务器发起一个TCP连接:

创建一个套接字,指定相应服务器的进程地址(IP地址和端口号)。

•建立一个TCP连接:

当服务器听到客户机的连接请求(敲门)时,创建一个新套接字,

经过“三次握手”,客户机套接字和服务器套接字之间建立一个TCP连

接(直接的虚拟管道)。

②传送数据:

•TCP连接是客户机和服务器套接字之间的一个直接的虚拟管道。

•客户机进程向它的套接字发送任意比特的数据;

•TCP保证服务器进程能够按发送顺序接收(通过连接套接字)到每一比

特数据。

•客户机进程可以从它的套接字中接收数据,服务器进程也可以向它的

连接套接字发送数据。

“户机道程原务H进株

欢我推字

连接It接字

^(stream):流入和流出进程的字符序列。

输入流(inputstream):与该进程相连的输入源(如键盘),或是套

接字(来自因特网的数据通过该套接字流入)。

输出流(outputstream):与该进程相连的输出源(如监视器),或

是套接字(数据通过该套接字流向因特网)。

2.7.2Java客户机/服务器应用程序例

客户机和服务器经TCE、连接进行通信。例:

・客户机从标准输入(键盘)读取一行字符并通过其套接字向服务

器发送。

•服务器从其连接套接字读取一行数据;

•将该行字符转换成大写;

•将修改的行通过其连接套接字再发回给客户机。

•客户机从其套接字中读取修改的行,并将该行在其标准输出(监视

器)上显示。

图2-28显示客户机与服务器主要的与套接字相关的活动。

“务居客户机

(在M毗tifitr)

对人解求创建

我接字I1口。x

wclcooMSocket■

客户机务*应用程序使用面向连接的运•♦务

客户机端:创建了三个流

和一个套接字,如图2-29

所示。

•套接字:

clientSocket;

•InFromUser输入

流:连接到标准输入(键

盘);

•XnFromServers输入流:与套接字连接。从网络来的字符流入

inFromServer流。

•outToSerws输出流:与套接字连接,客户机发送到网络的字符流

入至ljoutToServerSo

客户机应用程序代码TCPClientjavaz

importjava.io.*;

.*;

classTCPClient{

publicsstaticvoidmain(Stringargv[])throwsException

(

Stringsentence;

StingmodifiedSentence;

BufferedReaderinFromUser=newBufferedReader(

newInputStreamReader(System.in));〃键盘输入

SocketclientSocket=newSocket(,,hostname,',6789);

〃初始化客户机和服务器间的TCP连接

DataOutputStreamoutToserver=newDataOutputStream(

clientsocket.getoutpuStreamO);

//outToserver流提供了到套接字的输出

BufferedReaderinFromServer二

newBufferedReader(newInputStreamReader(

clientSocket.getlnputStreamO));

//inFromServer流提供了来自套接字的输入

sentence=inFromUser.readLine();

//将用户输入的一行读到sentence对象中

outToServer.writeBytes(sentence+'\n');

//将输入的内容发送到outToServer流中,通过套接字进入TCP

管道发送

modifiedSentence=inFromServer.readLine();

〃将客户机返回的字符串经输入流inFromServer到

modifiedSentence中

System.out.println("FROMSERVER:"+

modifiedSentence);

〃将modifiedSentence中内容显示

clientSocket.close();

)

)

服务器端的应用程序代码TCPServer.java:

importjava.io.*:

.*;

classTCPServer{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论