应用层协议原理

概述

  • 从某种角度可以把网络分为运行在基础设施上的分布式应用和为分布式应用提供通信服务的基础设施

  • 网络应用是网络存在唯一理由

应用层的协议是最多、最繁荣的,这离不开网络的设计所考虑的兼容性,不同的系统上的分布式应用,只要遵守相同的协议标准就能通过网络进行通信,在开 发不同系统的的同一款应用时,我们并不需要重写应用层以下的部件。

应用程序的体系结构

分为以下的两种主要的模型:

  1. C/S:客户端 / 服务器模型
    • 服务器端通常有一个固定的公网地址(是所有节点都能访问得到的)。
    • 以server端为主,所有的资源和处理能力都集中在server端。
    • 便于集中管理,但是对于中心服务器的要求比较大,需要具备比较大的带宽和处理能力。
    • 集中式通病,单点故障,当一个集中服务器瘫痪之后,整个网络直接gg。
    • 可扩展性比较差,每增加一个客户端,服务端就要新增一个连接,当达到一个极限值时便会雪崩式瘫痪。
  2. P2P:端到端系统网络模型
    • 不需要集中式服务器,网络中的所有流量全是在两个对等体(peer)之间传输。
    • 难点在于对等体可以随时离开与加入网络,给网络的管理带来了一定的困难。
    • 在没有中央集中服务器的管理与追踪(track),资源难以定位。
  3. 混合式
    • 在小流量场景之下使用C/S模式,完成节点上线注册、下线注销、资源的查询与定位。
    • 在大流量场景之下使用P2P模式,资源在一对或多个节点组成的网络中传输。

进程间通信要解决的问题

  1. 如何来表示一个分组、分组如何区分不同的进程、以及发送的分组如何寻址定位到目的地。

    • 主机之间使用IP地址来标识与定位。
    • 同一个主机上的进程使用传输层提供的端口号(port)来区分。
  2. 应用怎么使用下层(传输层)提供的服务。

    • 在层间界面的SAP(服务访问点)使用应用程序接口(socket API)将所要传输的应用报文转给下层。
    • 穿越SAP所需要携带的信息:
      • 发的报文 ----> 我是谁
      • 谁发的 --------> 我在哪
      • 发给谁 --------> 要往哪去
    • 穿越层间信息的代表:socket
      • socket本质上是一个类似于文件句柄的整数,它所代表的内存的一块区域中存储了一个会话关系中所必要的信息,当有了socket之后传输信息时只需要消息本身就行了
      • TCP socket代表了一个(src.ip, src.port, dst.ip, dst.port)四元组所组成的会话关系。
      • UDP socket与TCP不同,因为是无连接的协议,socket中用一个(src.ip, src.port)二元组来代表,所以带穿越SAP时需要带上(dst.ip, dst.port)
  3. 进程对之间通信使用什么样的格式

    • 由应用层协议具体制定,内容包括交换报文的类型,各种类型的语法(报文中的各字段以及如何描述这些字段)、字段的语义、及报文发送的时序和收到响应的动作。

传输层提供的服务

  1. 可以从四个方面来要求:

    • 可靠数据传输:不重、不漏、不错、不乱。
    • 吞吐量:通常由多个链路中吞吐量最小的一节来决定。
    • 定时:保证最高时延,提供及时的服务。
    • 安全性:在TCP中可以使用在应用层的安全套接字(SSL)来提供。
  2. 因特网提供的服务(实际中):

    • TCP:面向连接的服务,提供可靠性和安全性的保障。
    • UDP:无连接,不提供任何保障。
    • 对于吞吐量(带宽)和定时不提供任何保证
posted @ 2021-05-18 10:33  yiweiw  阅读(193)  评论(0)    收藏  举报