天天看点

计算机网络(2)-----应用层

思维导图

计算机网络(2)-----应用层

    本文是关于因特网的应用层的介绍,主要分为三部分,第一部分引言初步介绍了应用层的框架,原理,使用等内容。第二部分则是对应用层的常用协议例如HTTP,FTP,SMTP等进行介绍。第三部分则描述了网络的域名系统即DNS和P2P应用的部分内容。

一.引言

    此小节主要描述应用层协议的原理,即大体上是如何通讯的。包括框架,进程通信,运输服务等内容,每一层都是比上一层更加的深入一些。

1.1应用程序体系结构

    应用程序的体系结构主要分为两种,它规定了如何在各种端系统上如何组织该应用程序。一种是上一章曾经描述过得客户-服务器体系结构,它会存在一台总是开机的服务器,服务许多被称为客户机的主机的请求。另一种则是P2P体系结构,它不同于客户-服务器体系结构,他对服务器的依赖很小甚至没有,相反,它使应用程序所在的主机直接进行通信,进行通信的主机称为对等方。

1.2 进程通信

    应用程序的体系结构解决了如何组织程序的问题,那么如何使不同主机间的程序进行通讯呢?在第一章中,我们知道,两台主机间的通讯是靠报文的传输进行的。如果两台主机间的应用程序需要进行数据的交互的话,那么,进行通讯的实际上是进程。每对通讯进程其中的一个被称为客户,即发起通讯的一方。另一个被称为服务器,即等待联系的一方。

    通讯进程通过一个被称为套接字(socket)的软件接口向网络发送和接收报文。当一个套接字希望像另一台主机传输数据时,会通过IP和端口号进行寻址,以定位目的主机。IP将在以后的章节中进行讨论。

计算机网络(2)-----应用层

1.3运输服务

    按照五层协议的体系,第一层应用层需要使用第二层所提供的服务。第二层被称为运输层,具体作用便是运输报文,所以应用层会使用到运输层的运输服务。运输层所提供的运输服务主要有两种TCP和UDP,这里做简单介绍,具体讨论在后一章中。

使用TCP协议运输报文主要有以下连个特点:

  • 面向连接的服务:在应用层报文进行流动之前,TCP会让客户机和服务器之间通过‘握手’建立起一个TCP连接。报文通过此                                 TCP连接进行双向收发
  • 可靠的数据传输服务:TCP协议可以无差错,按适当的顺序交付所有发送的报文。
  • 抑制机制:当客户机和服务器之间的网络出现拥塞是,TCP协议会抑制发送进程。

使用UDP协议运输报文则具有以下特点:

  • 无连接服务:即没有‘握手’的过程,
  • 不可靠数据传输服务:即客户会通过套接字发送报文,但是不保证报文会被接收。

    运输层除了可以实现可靠数据传输这一功能外,还可以实现对于安全性的保证。另外,虽然运输层协议没有直接实现固定吞吐量和定时的功能,但是通过特别的设计方法可以实现这两个功能,具体讨论则在以后的章节中介绍。

二.应用层协议

    应用协议定义了运行在不同端系统上的应用程序之间如何相互传递报文,包括报文的类型,语法,字段等。本节主要讨论了HTTP,FTP,电子邮件(SMTP)等应用层协议。

2.1HTTP

    HTTP全名为超文本传输协议,他是Web的核心,使用TCP作为支撑运输协议,主要功能是定义了请求和发送Web页面的方式,实现Web页面的传输。

2.1.1基本原理

    我们用一个例子来描述HTTP协议的实现原理。 客户机的应用程序(Web浏览器)会向Web服务器请求一个Web页面,Web页面则由Web对象组成,比如HTML基本文件,图片等。服务器接收此请求后,会将Web对象一次传输给浏览器。此外,服务器不会储存任何有关该客户的状态信息,这被称为无状态协议。

    由于使用TCP协议运输报文,而一个Web页面会由多个Web对象构成,所以,我们必须考虑到对每一个Web对象都重新建立一个TCP连接(非持续连接)还是只使用一个TCP连接传输所有Web对象(持续连接)。

    由于每次重新建立TCP连接都要进行三次握手,如下图,所以非持续连接每次都会有重复的连接操作,消耗大量时间,并对服务器和客户机带来严重的负担。而持续连接不必如此,只需一次‘三次握手’,当次TCP连接长时间不被使用时才会被断开。HTTP协议既可以使用非持续连接,也可以使用持续连接,但默认会使用持续连接。

计算机网络(2)-----应用层

2.1.2报文格式

HTTP协议有请求报文和响应报文两种报文,其格式也略有差别。

HTTP协议的请求报文的格式如下图:

计算机网络(2)-----应用层

请求行包括方法字段,URL,和版本号,首部行会指明需要实现的功能和信息,实体主体则可能会保存表单的提交内容。

请求行的方法字段有以下五个:

  • GET:使用GET时,URL字段会带有请求对象的标志,实体主体为空,若要提交表单,数据则被置于URL中。
  • POST:使用POST时,实体主体中会包含提交表单的内容。
  • HEAD:使用HEAD时,服务器只进行响应,不返回请求对象
  • PUT:向Web服务器上传对象
  • DELETE:向Web服务器删除对象

HTTP协议的响应报文格式如下图:

计算机网络(2)-----应用层

状态行包括版本号,状态码和短语,例如 200  OK : 请求成功,404 Not Found :请求文档不在服务器。首部行功能同请求报文一样,指明一些功能和信息。实体体则包含了所请求的对象。

2.1.3 cookie

    上文中说到,HTTP是无状态的,而一些Web站点需要保存浏览器的访问信息,所以就有了cookie技术,他的主要原理就是在某个浏览器初次访问一个Web站点时,会在网站的数据库中插入此浏览器的信息,例如一个编号。而返回的响应报文的首部行中会包括一条cookie信息,cookie信息则会被储存额在浏览器的固定位置的cookie文件中。当次浏览器再次访问次网站时,会提取此信息并插入在请求报文中,此时网站接收到这个请求后,会在后台的数据库中根据cookie查找特定的信息。如下图:

计算机网络(2)-----应用层

2.1.4 Web缓存

    Web缓存通过使用Web缓存器(代理服务器)来实现,代理服务器拥有自己的存储器,以储存最近常用的请求响应信息。具体的实现原理是通过一些配置是客户机的请求被转接到代理服务器中,代理服务器则会搜索自己存储的内容看看是否有请求需要的响应信息,如果有则返回此响应报文,如果没有则回向初始服务器转发请求,收到响应报文后再本地留下副本,然后将此响应报文返回给客户机。

计算机网络(2)-----应用层

    使用代理服务器会产生一个问题,即如果初始服务器中的页面同代理服务器中的页面不一致怎么办,比如,在代理服务器储存了一次副本后,初始服务器中的页面被修改了。解决办法则是使用条件GET,条件GET指方法字段是GET,并在首部行中包含If-Modified-Since.如果有这个首部行,那么当代理服务器接收到请求后会向初始服务器发送一个报文以确定此文件是最新的,如果是,响应报文中则不含有实体体,如不不是则含有。确定的方法则依据首部行中的Last-Modified 即最后修改时间确认。

2.2 FTP

FTP全名为文件传输协议,主要功能是实现文件的传输(不仅仅是HTML),依然使用TCP连接。

    FTP与HTTP不同,FTP会使用两个并行TCP连接,一个称为控制连接,一个称为数据连接。控制连接用于传输控制信息,例如账号,密码等。数据连接则主要负责发送实际的文件。FTP也会在整个会话期间保存用户的状态。

计算机网络(2)-----应用层

2.3 电子邮件

2.3.1基本组成

整个电子邮件系统有三部分组成,即用户代理(常用的电子邮件软件,例如FoxMail),邮件服务器,简单邮件传输协议SMTP。

  • 用户代理:负责邮件的阅读,回复,转发等操作。
  • 邮件服务器:接收用户代理A发送的邮件,并将之发送给用户代理B的邮件服务器,每个邮件服务器都有邮箱,维护客户的                          邮件,此后,用户代理B便可以从B的邮件服务器接收邮件了。
  • SMTP:全名为简单邮件传输协议,邮件的内容会被解释为ASCII码,并且一般不使用中间服务器发送邮件,即使两个邮件                  服务器位于地球的两端。
计算机网络(2)-----应用层

2.3.2 SMTP报文格式

由下图可知,SMTP报文的主要包括首部和主体两部分。首部中含有From,To必须信息,主体则是邮件的内容。

计算机网络(2)-----应用层

2.3.3邮件访问协议

当邮件服务器B接收到邮件服务器A发送的邮件后,用户B如何访问此邮件呢?有三种流行的邮件访问协议,即POP3,IMAP,HTTP.

计算机网络(2)-----应用层
  • POP3:第三版邮局协议,有三个工作阶段。特许(用户代理发送账号密码鉴别用户),事务处理(用户代理取回报文),               更新(结束会话,删除有删除标记的报文)
  • IMAP:英特网邮件访问协议,提供了创建文件夹即将邮件在文件夹中移动的功能。
  • HTTP:通过使用浏览器登录邮箱以获取和处理邮件

三.DNS

    DNS全名叫域名系统,他的主要功能就是进行从主机名到IP地址的转换,而他的实现则是通过不同层级的DNS服务器的分布式数据库进行的。

3.1服务器组成

DNS主要有三层DNS服务器上的分布式数据库实现,这三层DNS服务器分别是根DNS服务器,顶级域DNS服务器,和权威DNS服务器。此外,严格来说,本地DNS服务器不算在这个层次中,但是相当的重要

计算机网络(2)-----应用层
  • 根DNS服务器:因特网总共有13个根DNS服务器,他将决定继续查询那个顶级域DNS服务器。
  • 顶级域DNS服务器:负责解析顶级域名(com,org,net,edu等)和国家级域名(cn,uk,fr,ca等)决定使用那个权威                                     DNS服务器
  • 权威DNS服务器:储存主机地址到IP地址的映射
  • 本地DNS服务器:主要起代理作用,请求主机通过本地DNS服务器和其他三个层次的DNS服务器进行交互,如下图:
计算机网络(2)-----应用层

3.2 DNS缓存

    使用DNS缓存的主要目的是减少因特网中到处传输的DNS报文数量和改善延迟性能。其实现的主要方式同Web缓存大同小异,会将DNS相应信息缓存在本地的存储器中。

    存储的DNS信息被称为资源记录(RR),他是包括Name,Value,Type,TTL四个字段的元组。Type决定了Name和Value的映射方式,例如Type = A,表示此RR是标准的主机名到IP的映射,Type = NS,则表示Name是域名,value是获取此映射的权威DNS服务器的主机名等等。TTL则是该记录的生存时间。

3.2.1 DNS报文

DSN报文有查询报文和回答报文,他们的格式是相同的

计算机网络(2)-----应用层

3.2.2 插入DNS记录

额,花钱给注册登记机构。

四.P2P应用

    至今为止,我们接触的都是客户-服务器体系结构,它极大了依赖于服务器,而P2P体系结构对服务器的依赖很小甚至没有。这个小节会讨论立足于此的两种应用设计。

4.1文件分发

4.1.1 P2P体系结构的扩展性

    举例,如下图,若服务器中存在一个文件需要本所有客户机获取,假设传输此文件会消耗服务器和所有客户机的上载速率,使用客户-服务器体系结构将不得不将文件通过服务器一次一次的传输给各个客户机。若使用P2P体系结构,当服务器将文件传输给第一个客户机后,此客户机也可以传输文件,依次递归。。。。

计算机网络(2)-----应用层

4.1.2 BitTorrent

BitTorrent是一种流行的P2P文件分发协议,参与此文件分发的所有对等方的集合被称为一个洪流。每个洪流中都有一个追踪器,当一个对等方加入此洪流时,便会向注册自己,并周期性的通知洪流它人在其中。如下图所示

计算机网络(2)-----应用层

4.2 分布式散列表

    分布式散列表(DHT)可以这样描述,在一个P2P系统中,每个对等方保存的键值对仅占总体的一个子集,我们允许任何的一个对等方用一个特别的键来查询该分布式数据库。分布式数据将定位拥有该键值对的对等方,查询后后返回该键值对。任何的对等方也被允许插入新的键值对。对等方可能会离开或者新加入,若发生这种情况,则需要使用后继(每个对等法储存第一和第二后继,若第一后继退出,使用第二后继作为第一后继,加入新的端系统同理)数据库对DHT进行维护。以下是概念图:

计算机网络(2)-----应用层

注:本篇文章由《计算机网络:自顶向下方法》第二章:应用层  总结而来,由于本人非计算机专业出身,许多知识实在是理解不能,总结有相当多的遗漏,乃是我看不懂所致,更别说其中内容肯定有大量的理解错误,万望大家提出批评,我好改正。

继续阅读