计算机网络——应用层
文章目录一、应用层协议的原理网络应用程序体系结构进程通信可供应用程序使用的运输服务因特网提供的运输服务二、应用层协议的实现过程三、Web应用和HTTP协议HTTP概况非持续连接和持续连接非持续持续HTTP的报文格式CookieWeb缓存条件GETHTTP和HTTPSHTTP 1.0和2.0四、FTP协议的实现机制五、DNS的功能和实现方法DNS提供的服务DNS的工作机理分布式数据库DNS缓存DNS

一、应用层协议的原理
网络应用程序体系结构
客户服务器体系结构:
P2P体系结构:
进程通信
同一主机上进程的通信由操作系统控制完成。
不同主机上进程之间的通信:通过报文交换的方式进行。
套接字:TCP/IP协议栈是在操作系统中实现的,它提供给应用程序一个函数接口,网络应用程序通过调用这个接口,来对需要发送的数据进行封装。
套接字五元组:源IP,目的IP,源端口、目的端口、传输协议。
可供应用程序使用的运输服务
1、可靠数据传输
2、吞吐量(发送进程能够向接收进程发送比特的速率)
3、定时
4、安全性
因特网提供的运输服务
1.TCP
提供:
拥塞控制、流量控制;
不提供:
最小传输速率
时延保证
2.UDP
适用于实时应用
二、应用层协议的实现过程
应用层协议:
定义运行在不同终端系统上的应用程序进程间传递报文的格式和方式。
交换的报文类型、
各种报文类型的语法、
字段的语义。
应用需要的服务:
数据是否需要可靠传输
数据的传输速率是否需要保证
数据的传输时延是否需要保证
三、Web应用和HTTP协议
HTTP概况
Web的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP),它是Web 的核心。
HTTP使用TCP作为它的支撑运输协议。
HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。类似地,服务器从它的套接字接口接收HTTP请求报文和向它的套接字接口发送HTTP响应报文。
因为HTTP服务器并不保存关于客户的任何信息,所以我们说HTTP是一个无状态协议。
非持续连接和持续连接
非持续
其中每个TCP连接在服务器发送一个对象后关闭,即该连接并不为其他的对象而持续下来。值得注意的是每个TCP连接只传输一个请求报文和一个响应报文。
持续
在采用持续连接的情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户 与服务器之间的后续请求和响应报文能够通过相同的连接进行传送。
HTTP的报文格式

HTTP 请求报文的第一行叫做请求行, 其后继的行叫做首部行。
请求行有3个字段:方法字段、URL字段和HTTP版本字段。方法字段可以取几种不同的值,包括GET、POST、HEAD、PUT和DELETE。当浏览器请求一个对象时,使用GET方法,在URL字段带有请求对象的标识。 在本例中,该浏览器正在请求对象/somedir/page. html。其版本字段是自解释的;在本例中,浏览器实现的是HTTP/1. 1版本。
我们仔细看一下这个响应报文。它有三个部分:一个初始状态行, 6个首部行,然后是实体体,实体体部分是报文的主要部分,即它包含了所请求的对象本身。
状态行有3个字段:协议版本字段、状态码和相应状态信息。在这个例子中,状态行指示服务器正在使用HTTP/1.1, 并且一切正常(即服务器已经找到并正在发送所请求的对象)。
我们现在来看看首部行。
Date:首部行指示服务器产生并发送该响应报文的日期和时间。值得 一提的是,这个时间不是指对象创建或者最后修改的时间;而是服务器从它的文件系统中 检索到该对象,插人到响应报文,并发送该响应报文的时间。
Last-Modified:首部行指示了对象创建或者最后修改的日期和时间。Last-Modified:首部行 对既可能在本地客户也可能在网络缓存服务器上的对象缓存来说非常重要。我们将很快详 细地讨论缓存服务器(也叫代理服务器)。
Cookie
一个Web站点通 常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望把内容与用户身份联系起来。为此,HTTP使用了 cookie。cookie技术有4 个组件:
①在HTTP响应报文中的一个cookie首部行;
②在HTTP请求报文中的一个cookie首部行;
③在用户端系统中保留有一个cookie文 件,并由用户的浏览器进行管理;
④位于Web站点的一个后端数据库。
过程:
客户端向服务器发送一个普通HTTP报文,服务器接收到该报文后,生成一个唯一识别码,并以此为索引在其后端数据库中产生一个表项。接下来,服务端发送一个带有SET_COOKIE首部的HTTP响应报文给客户端,浏览器收到该请求报文后,会将服务器主机名和识别码保存到它管理的特定文件中。之后每请求一个WEB页面,浏览器就会查询COOKIE文件并抽取该识别码放到HTTP请求报文中去。
Web缓存
Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。可以配置用户的浏览器,使得用户的所有HTTP请求首先指向Web缓存器。一旦某浏览器被配置,每个对某对象的浏览器请求首先被定向到该Web缓存器。
过程:
浏览器创建一个到WEB缓存器的TCP连接,并向WEB缓存器中的对象发送一个HTTP连接请求,WEB缓存区检查本地储存的对象,如果有,就向浏览器返回该对象。如果没有,他就打开一个与该对象的初试服务器的TCP连接,并发送一个该对象的HTTP请求。在收到该请求后,初试服务器向WEB缓存器发送该HTTP的响应报文。当WEB缓存器接收到该请求后,它在本地储存空间储存一个副本,并向客户的浏览器用HTTP发送该副本。
条件GET
HTTP协议有一种机制,允许缓存器证实它的对象是最新的。这种机制就是条件 GET 方法。如果:①请求报文使用GET方法;并且②请求报文中包 含一个“If -M o d i fi ed -Since:”首部行。
HTTP和HTTPS
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTP 1.0,1.1和2.0
HTTP1.0与HTTP1.1
1.长连接
HTTP1.0需要主动设置connection:keep-alive的连接方式,才能开启长连接。
HTTP1.1默认支持长连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
2.带宽优化
HTTP1.0中header和body必须一起发送,有时会造成浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。
HTTP1.1则在请求头引入了range头信息,允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
3.缓存处理
HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准。
HTTP1.1则引入了例如ETag,If-None-Match等更多可供选择的缓存头来控制缓存策略。
4.HOST头域
HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名。
但随着虚拟主机技术的发展,一台服务器上可以存在多个虚拟主机,共享一个IP地址。
HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
5.新增错误状态码
HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
HTTP2.0新特性
1.多路复用
HTTP2.0采用多路复用的技术,可以做到在一个连接并行的处理多个请求。
2.header压缩
HTTP1.0和1.1的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来压缩需要传输的header大小。
3.服务器推送
客户端对支持HTTP2.0的服务器请求某个资源时,服务器会顺便把一些客户端需要的别的资源一起推送过来,这样只需要一次HTTP通信就可以得到全部资源,提高了性能。
4.解析格式
HTTP1.0和1.1的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
常用HTTP状态码
100~199:信息状态码,表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 , 100(continue)继续发送
200~299:成功状态码,表示成功接收请求并已完成整个处理过程,常用200(OK)成功接收
300~399:重定向状态码,例如,请求的资源已经移动一个新地址,常用302、307和304
400~499:客户端的请求有错误,常用404(Not Found),403(Fobidden)
500~599:服务器端出现错误,常用 500
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
400 客户端请求的语法错误,服务器无法理解
401 请求要求用户的身份认证
404 请求的资源(网页等)不存在
500 - 内部服务器错误
四、FTP协议的实现机制
HTTP和FTP都是文件传输协议,并且有很多共同的特点,例如,它们都运行在TCP上。然而,这两个应用层协议也有一些重要的区别。其中最显著的就是FTP使用了两个并行的TCP连接来传输文件(带外传输),一个是控制连接, 一个是数据连接。
当用户主机与远程主机开始一个FTP会话时,FTP的客户端首先在服务器 21号端口与服务器端发起一个用于控制的TCP连接。FTP的客户端也通过该控制连接发送用户的标识和口令,发送改变远程目录的命令。当FTP的服务器端从该连接上收到一个文件传输的命令后,就发起一个到客户端的TCP数据连接(20端口)。FTP在该数据连接上准确地传送一个文件,然后关闭该连接。在同一个会话期间,如果用户还需要传输另一个文件, FTP则打开另一个数据连接。因而对FTP传输而言,控制连接贯穿了整个用户会话期间, 但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接是非持续的)。
FTP服务器必须在整个会话期间保留用户的状态。特别是,服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上徘徊,服务器必须追踪用户在远程目录树上的当前位置。对每个进行中的用户会话的状态信息进行追踪,大大限制了 FTP同时维持的会话总数。而另一方面,前面讲过HTTP是无状态的,即它不必对任何用户状态进行追踪。
五、DNS的功能和实现方法
DNS提供的服务
识别主机有两种方式,通过主机名或者IP地址。人们喜欢便于记忆 的主机名标识方式,而路由器则喜欢定长的、有着层次结构的IP地址。为了折衷这些不 同的偏好,我们需要一种能进行主机名到I P 地址转换的目录服务。这就是域名系统 (Domain Name System, DNS)的主要任务。DNS是:①一个由分层的DNS服务器(DNS server)实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。
DNS的工作机理
分布式数据库

迭代查询
|
递归查询
|
实践中,从请求主机到本地DNS服务器的査
询是递归的,其余的查询是迭代的
DNS缓存
在一个请求链中,当某DNS服务器接收一个DNS回答(例如,包含主 机名到IP地址的映射)时,它能将该回答中的信息缓存在本地存储器中。
六、电子邮件系统的构成、传输机制和协议
SMTP
首先,客户 SMTP (运行在发送邮件服务器上)在25号端口建立一个到服务器SMTP (运行在接收邮件服务器上)的TCP连接。如果服务器没有开机,客户会在稍后继续尝试连接。一旦连接建立,服务器和客户执行某些应用层的握手,就像人们在互相交流前先进行自我介绍一 样。SMTP的客户和服务器在传输信息前先相互介绍。在SMTP握手的阶段,SMTP客户指 示发送方的邮件地址(产生报文的那个人)和接收方的邮件地址。一旦该SMTP客户和服 务器彼此介绍之后,客户发送该报文。SMTP能依赖TCP提供的可靠数据传输无差错地将 邮件投递到接收服务器。该客户如果有另外的报文要发送到该服务器,就在该相同的TCP 连接上重复这种处理;否则,它指示TCP关闭连接。
SMTP与HTTP的对比
1、HTTP是拉协议,SMTP是推协议
2、SMTP要求每个报文使用7比特ASCII码格式。如果某报文包含了非7比特ASCII字符(如具有重音的法文字符)或二进制数据(如图形文件),则该报文必须按照7比特ASCII码进行编码。HTTP数据则不受这种限制。
3、HTTP把每个对象封装到它自己的HTTP响应报文中, 而SMTP则把所有报文对象放在一个报文之中。
邮件访问协议
SMTP用来将邮件从发送方的邮件 服务器传输到接收方的邮件服务器;SMTP也用来将邮件从发送方的用户代理传送到发送 方的邮件服务器。如POP3这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到 接收方的用户代理。
POP3
POP3是一个极为简单的邮件访问协议,当用户代理(客户)打开了一个到邮件服务器(服务器)端口 110上的TCP连接后,POP3就开始工作了。随着建立TCP 连接,POP3按照三个阶段进行工作:
特许阶段:用户代理发送(以明文形式)用户名和口令以鉴别用户。
事务处理阶段:用户代理取回报文;同时在这个阶段用户代理还能进行如下操作,对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息。
更新阶段:它出现在客户发出了quit命令之后,目的是结束该POP3会话;这时,该邮件服务器 删除那些被标记为删除的报文。
使用POP3访问时,一旦Bob将邮件下载到本地主机后,他就能建立邮件文件夹,并将下载的邮件放人该文件夹中。然后Bob可以删除报文,在文件夹之间移动报文,并査询 报文(通过发送方的名字或报文主题)。但是这种文件夹和报文存放在本地主机上的方式, 会给移动用户带来问题,因为他更喜欢使用一个在远程服务器上的层次文件夹,这样他可以从任何一台机器上对所有报文进行访问。POP3不可能做到这一点,POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。
IMAP
IMAP服务器把每个报文与一个文件夹联系起来;当报文第一次到达服务器时,它与 收件人的INBOX文件夹相关联。收件人则能够把邮件移到一个新的、用户创建的文件夹 中,阅读邮件,删除邮件等。IMAP协议为用户提供了创建文件夹以及将邮件从一个文件 夹移动到另一个文件夹的命令。1MAP还为用户提供了在远程文件夹中查询邮件的命令, 按指定条件去查询匹配的邮件。值得注意的是,与POP3不同,IMAP服务器维护了 IMAP 会话的用户状态信息,例如,文件夹的名字以及哪些报文与哪些文件夹相关联。
IMAP的另一个重要特性是它具有允许用户代理获取报文组件的命令。例如,一个用 户代理可以只读取一个报文的报文首部,或只是一个多部分MIME报文的一部分。当用户 代理和其邮件服务器之间使用低带宽连接的时候,这个特性非常有用(如一个低速调制解调器链路)。使用这种低带宽连接时,用户可能并不想取回他邮箱中的所有邮件,尤其要 避免可能包含如音频或视频片断的大邮件。
七、P2P文件共享原理
P2P的自扩展性

对于客户-服务器体系结构,随着对等方数量的增加,分发 时间呈线性增长并且没有界。然而,对于P2P体系结构,最小分发时间不仅总是小于客 户-服务器体系结构的分发时间,并且对于任意的对等方数量/V,总是小于1小时。因 此,具有P2P体系结构的应用程序能够是自扩展的。这种扩展性的直接成因是:对等方除 了是比特的消费者外还是它们的重新分发者。
BitTorrent
当一个新的对等方Alice加入该洪流时,追踪器随机地从参与对等方 的集合中选择对等方的一个子集(为了具体起见,设有50个对等方),并将这50个对等 方的IP地址发送给Alice。Alice持有对等方的这张列表,试图与该列表上的所有对等方创 建并行的TCP连接。我们称所有这样与Alice成功地创建一个TCP连接的对等方为“邻近 对等方”。在任何给定的时间,每个对等方将具有来自该文件的块子集,并且不同的对等方具有 不同的子集。Alice周期性地(经TCP连接)询问每个邻近对等方它们所具有的块列表。 如果Alice具有L个不同的邻居,她将获得L个块列表。有了这个信息,Alice将对她当前 还没有的块发出请求(仍通过TCP连接)。
因此在任何给定的时刻,Alice将具有块的子集并知道它的邻居具有哪些块利用这 些信息,Alice将作出两个重要决定。第一,她应当从她的邻居请求哪些块呢?第二,她 应当向哪些向她请求块的邻居发送?在决定请求哪些块的过程中,Alice使用一种称为最 稀缺优(rarest first)的技术。这种技术的思路是,针对她没有的块在她的邻居中决定最 稀缺的块(最稀缺的块就是那些在她的邻居中副本数量最少的块),并首先请求那些最稀 缺的块。这样,最稀缺块得到更为迅速的重新分发,其目标是(大致地)均衡每个块在洪 流中的副本数量。
为了决定她响应哪个请求,BitTorrent使用了一种机灵的对换算法。其基本想法是, Alice根据当前能够以最高速率向她提供数据的邻居,给出其优先权。特别是,Alice对于 她的每个邻居都持续地测量接收到比特的速率,并确定以最高速率流人的4个邻居。每过 10秒,她重新计算该速率并可能修改这4个对等方的集合。用BitTorrent术语来说,这4 个对等方被称为疏通。重要的是,每过30秒,她也要随机地选择另外一个邻 居并向其发送块。
端口号总结
HTTP:80
SMTP:25
pop3:110
IMPA:143
FTP:
控制连接:21
数据连接:20
DNS:53
考纲
(1) 应用层协议的原理
(2) 应用层协议的实现过程
(3) Web应用和HTTP协议
(4) FTP协议的实现机制
(5) DNS的功能和实现方法
(6) 电子邮件系统的构成、传输机制和协议
(7) TCP和UDP套接字编程
(8) P2P文件共享原理
更多推荐
迭代查询
递归查询
所有评论(0)