应用层

应用层

应用层体系结构目前有两种

  • 客户-服务器体系

    在客户-服务器体系里面,一直打开的主机被称为服务器,请求服务的主机为客户。在这个体系里面只能由客户向发起请求。但在这个体系里面两个客户之间不能直接通信。

  • P2P体系

    在P2P体系里面,所有的主机都可以相互发起请求,并且两个主机之间是直接通信的,不需要经过服务器

在现在的网络体系中,应用层这两种体系一般是混合使用。

进程通信

在应用层实现通信不是两个主机上的应用程序,而是一个进程进程是在主机上运行的程序,实现通信的是两个主机上的进程,同时主机上运行着多个进程。两个主机上的进程互相交换报文的过程就是网络通信。

不管是客户-服务器体系还是P2P体系,在两个进程进行通信的过程中总会存在一个客户端和一个服务器端。客户端就是发起通信请求的主机,服务器等待请求的主机。在客户-服务器体系中客户一直都是客户端,而服务器一直是服务器端。但在P2P体系中,因为每个主机相互之间都可以发起通信,因此主机既可以是客户端也可以是服务器端。

在进程之间进行通信时,因为进程只存在与应用层,当报文从应用层传输到网络的其他层时就需要一个接口。这个接口就是套接字(socket)。网络应用程序将报文传输给套接字接口,套接字接口在将报文传输给网络,当报文传输到另一个主机的进程时,就需要套接字接口把报文从网络传输给网络应用程序。

通过使用套接字接口,网络应用程序就只需要关注报文在应用层的活动,而不需要关注它在网络中是如何传输的,这些都是运输层所要完成的工作,这样网络应用程序就不会干预到运输层,实现应用层和运输层的隔离。

虽然网络应用程序不会干预到运输层,但通过选择不同的套接字接口,网络应用程序可以选择采用何种协议以及完成怎样的传输要求。

下图就是进程如何使用套接字接口的

进程通过套接字接口通信

进程在传输的报文中要包含两个信息,才能保证报文能被传输到正确的进程

  1. 目的主机的IP地址
  2. 目的主机目的进程的标识符

使用的套接字接口需要包含的服务

  1. 可靠的数据传输

    可靠的数据传输服务是保证传输的报文能够被目的进程接收到,不可靠的数据传输就不能保证目的进程能够接收到传输的报文。对于web服务和文件传输这种应用需求,他就要求能够实现可靠的数据传输。对于视频通信就对数据的可靠传输具有一定的容忍性,它允许丢失一部分数据而不影响服务

  2. 吞吐量

    吞吐量是运输层协议是否能够保证一个最低的传输速率,保证使用的服务的传输速率有传输速率要求,对于文件上传这类服务,对吞吐量就没有要求。

  3. 定时服务

    定时要求就是报文的端到端时延要低于一定的时间,这种要求一般存在于对于实时性有要求服务

  4. 安全性

    安全性就是要求报文在传输时能够进行加密,保证报文被他人获取后不能被直接使用

对于目前的运输层协议,主要有两种

  1. TCP

TCP协议主要有两个特点

  • 面向连接的服务

    TCP协议在传输报文之前会进行握手操作,建立两个进程之间的TCP连接。这条连接时一个全双工的连接,在连接被拆除之前,双方都可以进行报文传输。当报文传输完之后,连接必须被拆除。

  • 提供可靠传输的服务

    这个特点表明,TCP能保证可靠的数据传输。

但TCP协议是没有进行加密,即报文通过套接字接口后,它的报文信息是没有改变的。针对这一点,后面提出了基于加密的TCP连接,即SSH。即报文到达SSH接口后,接口对报文进行加密。然后把加密后的报文传输给TCP接口,在传输到运输层。

同时TCP还具有拥塞控制机制,发送和接收主机之间的网络出现拥塞时,TCP会抑制发送进程。这种机制对进程之间的通信没有好处,但对整个网络会有好处。

  1. UDP

UDP协议不提供可靠的数据传输服务,同时也没用拥塞控制机制,当UDP接收到流量后,他就会向网络进行传输。

从上述描述来开TCP和UDP只关注安全性和可靠的数据传输这两部分的服务。而没有提供吞吐量和定时这两项服务。但是现在的网络应用在设计时就考虑这两方面的需求,从而保证应用尽可能的不受到这两个因素的影响。

应用层协议虽然不关注报文是如何传输的,但它会规定报文的格式,报文的每个字段的含义,报文之间的语法以及报文发送的时间和发送方式。

应用层协议只是网络应用的一部分,而不是网络应用的全部。网络应用包括网络应用程序(客户),服务器以及应用层协议。


应用层
https://guyuefangyuan12.github.io/2024/08/04/应用层/
作者
古月方源
发布于
2024年8月4日
许可协议