计算机网络第六章-——应用层

应用层概述

首先,让我们回顾一下各层之间的关系与功能:

我们可以知道,应用层是解决通过应用进程的交互来实现特定网络应用的问题,也就是对应用程序的通信提供服务。那么具体提供哪些服务呢?

如下:

比如说,我们在浏览器中输入网站域名(www.csdn.net),就可以访问该网站的内容,这就是推动因特网飞速发展的万维网应用。其相关的应用层协议为超文本传送协议HTTP。用户在浏览器地址栏中输入的是域名,而TCP/IP体系的网际层是用IP地址来标识目的主机,从域名到IP地址的转换工作,由属于应用层范畴的域名系统DNS在后台帮用户自动完成,以方便用户的使用。除了万维网应用域名系统外,常见的应用还有动态主机配置DHCP电子邮件文件传送p2p文件共享多媒体网络应用等。
 

网络应用程序

在应用层编写程序,一个重要的原则是要使编写的程序可以在不同的端系统(小到个人计算机、大到昂贵的大型计算机)运行,并且可以通过通信系统来进行传播。例如当用户访问某个网页时,我们电脑上的程序向Web服务器上的程序发送请求,这时候就实现了不同程序之间的简单通信,这种网络应用程序叫做“客户-服务器方式”也叫“CS方式”;还有一种就是利用“P2P方式”(也叫“对等方式”)共享文件实现不同端系统在相似的程序间的传输。

动态主机配置协议DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种用于动态分配IP地址和其他网络参数的协议,它可以 自动计算机配置IP地址、子网掩码、网关等网络参数,从而简化了网络管理和维护。DHCP协议常用于局域网和广域网中,可以帮助管理员有效地管理和配置网络。
大致流程:

DHCP服务器广播

当计算机加入网络时,它会向网络中的DHCP服务器发送广播请求。

DHCP服务器响应

DHCP服务器收到广播请求后,会为计算机分配一个可用的IP地址和其他网络参数,并将这些参数发送给计算机。

计算机配置网络参数

计算机收到DHCP服务器发送的网络参数后,会自动配置网络参数,包括IP地址、子网掩码、网关和DNS服务器等。

  • 当设备(DHCP客户端)连接到网络并需要IP地址时,它会发送一个DHCP发现(Discover)广播请求。这个请求包含了客户端的硬件地址(通常是MAC地址)和其他一些可选信息。
  • DHCP服务器收到发现请求后,会从其地址池中选择一个可用的IP地址,并将其与客户端的硬件地址关联。然后,服务器会向客户端发送一个包含所提供IP地址的DHCP提供(Offer)消息。
  • 客户端收到一个或多个提供消息后,会选择一个DHCP服务器(通常是收到的第一个提供),并向该服务器发送一个DHCP请求(Request)消息,以确认它希望接受提供的IP地址。
  • DHCP服务器收到请求消息后,会将分配给客户端的IP地址及其他网络配置参数(如子网掩码、默认网关、DNS服务器等)记录在一个DHCP应答(Acknowledge)消息中,并将其发送给客户端。此时,服务器会为该IP地址分配一个租约时间,即客户端可以使用该地址的时间段。
  • 客户端收到应答消息后,会根据其中的信息配置自己的网络参数,并开始使用分配的IP地址。在租约时间过半时,客户端会尝试与DHCP服务器联系,以续订租约并保持IP地址的使用。

DHCP客户与DHCP服务器的交互过程:

当启用主机的DHCP后,DHCP客户将广播发送DHCP发现报文封装该报文的,IP数据报的源IP地址为0.0.0.0,这是因为主机目前还未分配到IP地址,因此使用该地址来代替。目的IP地址为广播地址255.255.255.255。之所以进行广播发送,是因为主机现在并不知道网络中有哪几个DHCP服务器,它们的IP地址各是什么,由于是广播的IP数据报,因此网络中的所有设备都会收到该IP数据报,并对其层层解封。解封出封装有DHCP发现报文的UDP用户数据报,对于其它的DHCP客户其应用层没有监听该UDP用户数据报的目的端口67的进程,也就是DHCP服务器进程,因此无法交付DHCP发现报文只能丢弃。而对于DHCP服务器且应用层始终运行着DHCP服务器进程,因此会接受该DHCP发现报文并作出响应。DHCP报文的格式比较复杂,对于DHCP发现报文,我们只需要知道其内部封装有事务ID和DHCP客户端的MAC地址即可
 

DHCP服务器收到DHCP发现报文后,根据其中封装的DHCP客户端的MAC地址来查找自己的数据库,看是否有针对该MAC地址的配置信息如果有则使用这些配置信息来构建并发送DHCP提供报文。如果没有,则采用默认配置信息来构建并发送DHCP提供报文,封装该报文的IP数据报的源IP地址为DHCP服务器的IP地址,目的IP地址仍为广播地址,仍然使用广播地址的原因是主机目前还没有配置IP地址,为了使主机可以收到,只能发送广播。这样一来,网络中的所有设备都会收到该IP数据报,并对其层层解封,解封出封装有DHCP提供报文的UDP用户数据报。对于DHCP服务器且应用层没有监听该UDP用户数据报目的端口68的进程,也就是DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。而对于DHCP客户且应用层运行着DHCP客户进程,因此会接受该DHCP提供报文,并作出相应处理。DHCP客户会根据DHCP提供报文中的事物ID来判断该报文是否是自己所请求的报文。换句话说,如果该事物ID与自己之前发送的DHCP发现报文中封装的是事物ID相等,就要表明这是自己所请求的报文,就可以接受该报文,否则就要丢弃该报文。DHCP提供报文中还封装有配置信息,例如IP地址、子网掩码、地址租期、默认网关、DNS服务器等。需要注意的是DHCP服务器从自己的IP地址池中挑选在租用给主机的IP地址时,会使用ARP来确保所选IP地址未被网络中其他主机占用。

在本例中DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个。一般来说选择先到的。并向所选择的DHCP服务器发送DHCP请求报文,封装该报文的IP数据报的源地址仍为0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器,他首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址,目的IP地址仍为广播地址。这样做的目的是不用向网络中的每一个DHCP服务器单播发送DHCP请求报文,来告知他们是否请求他们作为自己的DHCP服务器。DHCP请求报文中,封装有事物ID,DHCP客户端的MAC地址,接受的租约中的IP地址,提供此租约的DHCP服务器端的IP地址等信息。

在本例中,假设DHCP客户选择DHCP服务器1,作为自己的DHCP服务器,并且DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户发送DHCP确认报文,封装该报文的IP数据报的源IP地址为DHCP服务器1的IP地址,目的IP地址仍为广播地址,DPHP客户收到该确认报文后,就可以使用租用的IP地址了。
 

注意⚠️:

主机在使用所用到的IP地址之前,还会使用ARP检测该IP地址是否已被网络中其他主机占用。

  • 若被占用,DHCP客户会给DHCP服务器发送DACP谢绝报文,来谢绝IP地址租约,并重新发送DHCP发现报文,
  • 若未被占用,则可以使用租约中的IP地址与网络中的其他主机通信了。

DHCP服务器也会在给DHCP客户挑选IP地址时使用ARP检测该IP地址是否已被网络中其他主机占用。

当租用期过了一半或0.875时,DHCP客户会向DHCP服务器发送DHCP请求报文,来请求更新租用期,封装该报文的IP数据报的源IP地址为 DHCP客户之前租用到的IP地址,目的IP地址为PHP服务器的地址

若DHCP服务器未作出反应,则当租用期到期后,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文,来重新申请IP地址

注意⚠️:DHCP客户可以主动提出终止IP地址的租用,只需要向DHCP服务器发送DHCP释放报文段

域名系统DNS


当我们在浏览器地址栏中输入某个Web服务器的域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址,如果没有找到,则会向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地址映射关系的数据库。当DNS服务器收到DNS查询报文号,在其数据库中进行查询,之后将查询结果发送给用户主机。

思考一下:因特网是否可以只使用一台DNS服务器?

接下来介绍域名:

域名

DNS服务器

域名解析

接下来我们介绍域名解析的过程包含以下两种查询方式;

  • 一种是递归查询
  • 另一种是迭代查询

高速缓存

为了提高DNS的查询效率,并减轻根域名服务器的负担,和减少因特网上的DNS查询报文数量,在域名服务器中广泛的使用了高速缓存。

高速缓存用来存放最近查询过的域名,以及从何处获得域名映射信息的记录,如图所示,如果不久前已经有用户查询过域名为y.ABC.COM的IP地址,则本地域名服务器的高速缓存中,应该存有该域名对应的IP地址。当主机向本地域名服务器递归查询该域名时,本地域名服务器就没有必要再向某个根域名服务器进行迭代查询了,而是直接把高速缓存中存放的上次查询结果,即该域名的IP地址告诉用户主机。

需要注意的是,由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器因为每项内容设置计时器,并删除超过合理时间的项,例如每个项目只存放两天。

不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时,从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。

同理,主机也需要保持高速缓存中内容的正确性。
 

注意⚠️:DNS报文是由运输层的UDP协议进行封装,运输层端口号为53。

文件传送协议FTP

FTP客户与服务器之间进行传输需要两个步骤:

  • 控制连接:就是FTP客户要告知FTP服务器建立连接,并且一直保持这个连接
  • 数据连接:进行数据传输

两者都遵循TCP协议,为TCP连接

电子邮件

电子邮件的过程可以分成两部分:

  • 发送方使用SMTP发送邮件

  • 接收方读取POP3取回邮件

发送方使用SMTP发送邮件的具体过程:

接收方使用POP3读取邮件的具体过程:

注意:

SMTP协议只能传送ASCII文本数据,不能传送可执行文件或其他的二进制对象。

也就是说SMTP不能传送带,有图片、音频或视频数据的多媒体邮件,并且许多其他非英语国家的文字,例如中文、俄文,甚至带有重音符号的法文或德文,也无法用SMTP传送。

为解决SMTP传送非ASCII文本的问题,提出了多用途因特网邮件扩展MIME。如图所示SMTP协议只能传送ASCII文本数据,假设发送方发送到电子邮件中包含有非ASCII数据,则不能直接使用SMTP进行传送,需要通过MIME进行转换,将非ASCII数据转换为ASCII数据,然后就可以使用SMTP进行传送了。接收方也要使用MIME对接收到的ASCII数据进行逆转换,这样就可以得到包含有非ASCII数据的电子邮件。
 

基于万维网的电子邮件:

万维网WWW

万维网 WWW (World Wide Web)并非某种特殊的计算机网络。 万维网是一个大规模的、联机式的信息储藏所,英文简称为 Web。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点(也就是所谓的“链接到另一个站点”),从而主动地按需获取丰富的信息。

不同的万维网可以相隔数千公里,但都必须连接在互联网上。每一个万维网站点都存放了许多文档。在这些文档中有一些地方的文字是用特殊方式显示的(例如用不同的颜色,或添加了下划线),而当我们将鼠标移动到这些地方时,鼠标的箭头就变成了一只手的形状。这就表明这些地方有一个链接(link)(这种链接有时也称为超链 hyperlink),如果我们在这些地方点击鼠标,就可以从这个文档链接到可能相隔很远的另一个文档。经过一定的时延(几秒钟、几分钟甚至更长,取决于所链接的文档的大小和网络的拥塞情况),在我们的屏幕上就能将远方传送过来的文档显示出来。

为了方便的访问在世界范围的文档,万维网使用统一资源定位符URL,来指明因特网上任何种类资源的位置,统一资源定位符的一般形式,由以下4个部分组成,分别是协议、主机、端口、路径。

万维网文档一般由HTML, CSS,JavaScript组成

超文本传输协议HTTP

HTTP协议定义了浏览器即万维网客户进程,怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。

其工作流程如下:

请求一个万维网文档所需时间:是该文档的传输时间+两倍往返时间RTT

HTTP协议的特点:

1.HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需建立HTTP连接)

2.HTTP是无状态的:同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同

虽然HTTP是无状态的,但是一些服务器希望识别用户从而提供个性化服务,这里就要了解一个新名词:

Cookie

Cookie是储存在用户主机中的文本文件,能够记录一段时间内某用户的访问记录(用识别码来识别,比如“123456”),并据此提供个性化服务。

具体流程:

  • 用户主机中的浏览器进程,首先与万维网服务器中的服务器进程建立TCP连接
  • 当用户的浏览器进程初次向服务器进程发送HTTP请求报文时,服务器进程就会为其产生一个唯一的Cookie识别码,并以此为索引,在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息
  • 接着就会给浏览器进程发回HTTP响应报文,在响应报文中包含有一个首部字段为 SET Cookie的首部行,该字段的取值就是Cookie识别码
  • 当浏览器进程收到该响应报文之后,就在一个特定的Cookie文件中添加一行,记录该服务器的域名和Cookie的识别码。
  • 当用户再次使用浏览器访问这个网站时,每发送一个HTTP请求报文,浏览器都会从Cookie文件中取出该网站的Cookie识别码,并放到HTTP请求报文的Cookie首部行中,服务器根据Cookie识别码就可以识别出该用户并返回该用户的个性化网页。
     

HTTP报文格式:

万维网缓存与代理服务器:

上图为第一次主机与服务器进行http连接,在第二次及以后的http连接中,当校园网中的某台主机要访问因特网上的原始服务器时,他首先会向校园网中的代理服务器发送请求,若代理服务器中存放有所请求的对象,则代理服务器会向该主机发回包含所请求对象响应。若代理服务器中没有所请求的对象,则代理服务器会向因特网上的原始服务器发送请求,原始服务器将包含有所请求对象的响应,发回给代理服务器,代理服务器将该响应存入WEB缓存,然后给主机发回该响应。因此,可以大大减少R1 到 R2之间的数据传输。并且代理服务器的缓存是有有效日期的,超过有效日期会更新其中的缓存
 

小结:

参考:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值