1 数据通信模型

​ 在早期的计算机网络中,为了有效的利用计算机,一般将数据通信模型分为以下 3 种方式,决定了数据在网络环境中的管理方式。

  1. 分散式(Decentralized)

    在分散式系统中,用户只负责管理自己的计算机系统,各自独立的系统之间没有资源或信息的交换和共享。就类似一台台没有联网的设备。

    这种模式由于存在大量共享数据的重复存储,除了引起数据冗余之外,也容易导致一个组织内各部门数据的不一致性。同时还会造成硬件、支持和运营维护等成本的大量增加,因此早被淘汰。

  2. 集中式(Centralized)

    在集中式环境中,用一台主计算机保存一个组织的全部数据,而用户则通过设备连接到这台计算机系统并和它通信,从而达到访问数据的目的。

    • 优点:方便数据共享、消除了数据的冗余和不一致性。
    • 缺点:可靠性不如分散式,主机出现故障所有系统全部瘫痪。
  3. 分布式(Distributed)

    分布式是分散式和集中式的混合,类似计算机网络,是分散式的水平交互和集中式的垂直控制相结合的一种模式。

    兼具分散式和集中式的优点,方便数据共享、消除了数据的冗余和不一致性,同样也加强了容错性。

举例:

​ 一般企业管理系统是典型的集中式和分布式的综合体现:

  • 所有数据用专用数据库集中存储,属于集中式。
  • 对数据的处理则由各个部门的软件分别控制,属于分布式。

1.1 C/S 模型

​ C/S(Client/Server)模型也称 C/S 模式,即客户端和服务端模式,是目前大多数网络通信采用的模型。

​ 从程序的角度来说,客户端和服务端通讯,相当于是两个应用程序(进程)在通讯。

1.2 B/S 模型

​ B/S(Browse/Server)模型也称 B/S 模式,是一种基于 Web 的通信模型,使用 HTTP 超文本传送协议通信。

​ B/S 是一种特殊的 C/S 模型,特殊之处是 B/S 的客户端不需要开发,一般是某种浏览器,比如IE、Chrome、QQ 浏览器、360 浏览器等。

​ B/S 模型的优点就是单台计算机可以访问任何一个 Web 服务器,即 Web 服务端可以随意变,但客户端是通用的,不需要针对不同的服务端专门提供客户端应用程序。

1.3 P2P 模型

​ P2P(Peer-to-Peer)模型也称对等互联,每个联网的设备同时运行应用程序的客户端(Client)和服务端(Server),即一个应用程序同时作为客户端和服务端。

​ 优点是通信方便,成本低;缺点是可靠性不如 C/S 模型。

1.4 小结

​ 对于网络游戏开发来说,常采用 C/S 模型进行前后端开发,在服务端的布局上往往使用分布式管理。比如:

  • 服务端的用户数据使用集中式进行管理,玩家的数据存储在数据库应用(SQL Server、MySQL)中。
  • 服务端应用程序使用分布式进行管理,账号服务器、游戏服务器、聊天服务器、跨服 PVP 服务器等分布式管理,这些服务端应用程序都使用数据库中的数据分别进行逻辑处理。

2 网络协议

​ 网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,指计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。

​ 其中,OSI 模型是网络通信的基本规则,TCP/IP 协议是基于 OSI 模型的工业实现。

2.1 OSI 模型

​ OSI 模型(Open System Interconnection Reference Model)指开放式系统互联通信参考模型,是一种概念模型,由 ISO 国际标准化组织(International Organization for Standardization)提出,不同公司均按照 OSI 标准来控制网络互联通信。

​ OSI 模型采用分而治之的设计方法,把网络的功能划分为不同的多个模块,以分层的形式有机地组合在一起。每层有自己的功能,像建筑物一样,每层都需要依靠下一层的支持。用户接触到的都只是最上面的一层,感受不到下面层级的复杂性。

​ OSI 模型把互联通信的过程抽象的分成七个层级:

  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层
image-20250318205747845

2.1.1 下层

image-20250318210753485

(1)物理层

​ 电脑要联网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。

​ 功能:

  • 定义传输模式、定义传输速率、比特同步、比特编码等。
  • 在物理媒介上实现比特流的传输,传送 0 和 1 的电信号。
image-20250318210208315

(2)数据链路层

​ 物理层用物理硬件来传输 0 和 1,但单纯的 0 和 1 没有任何意义,必须规定解读方式,比如多少个电信号算一组?每个信号位的意义?

​ 数据链路层在物理层的上方,确定 0 和 1 的分组方式,并明确信息是发送给哪台计算机的网卡(Mac 地址)。

​ 功能:

  • 将信息构成数据包,称为“帧”。
  • 每一个帧分为两个部分:标头 Head + 数据 Data。
  • 标头包含数据包的一些说明项,比如:发送方和接收方的 Mac 地址,数据类型等。
image-20250318210342515

(3)网络层

​ 通过 Mac 地址定位一台计算机,理论上是可行的,但效率非常低下。

​ 网络层的主要功能与 IP 地址有关。

​ 功能:

  • IP 选址、路由选择。
  • 选择合适的路径用于通信。
  • 它会在上一层的数据基础上添加标头,包含:IP 地址、版本、长度等信息。
image-20250318210455551

(4)传输层

​ 有了 Mac 地址和 IP 地址,已经可以在互联网上任意两台主机上建立通信,但如果没有端口号,无法准确的在应用程序之间进行通信。

​ 传输层用于建立端口到端口的通信。

​ 功能:

  • 建立、管理和维护端到端的连接。
  • 为端到端连接提供可靠的传输服务。
  • 在上一层的数据基础上添加标头,包含:发送方接收方的端口信息、协议信息等。
image-20250318210630388

2.1.2 上层

image-20250318211427311

(1)应用层

​ 应用层为最上层,和用户直接交互的联网应用程序就属于这一层,比如浏览器,游戏等。

​ 功能:

  • 为应用程序提供服务。
  • 决定使用哪种协议(规则)处理数据,进行传输。
  • 在原始数据的基础上添加标头,包含:协议信息等。

​ 常用的协议(规则):FTP,HTTP,SMTP 等。

image-20250318211028295

(2)表示层

​ 不同操作系统的应用层代码和数据规范不一样,表示层使得信息在各操作系统和设备中通用。

​ 功能:

  • 数据格式转化、代码转换、数据加密。
  • 把数据转换为能与各系统格式兼容并且适合传输的格式。

​ 表示层像一个翻译,会把数据相关信息翻译成国际通用的规则。

image-20250318211204211

(3)会话层

​ 有了准备好的上层数据,在传递时需要对其进行管理,比如消息是否发送完毕,对方是否收到,是否断开连接等。会话层的主要工作就是这些内容。

​ 功能:

  • 建立、管理和维护会话。
  • 设置和维护网络中两台设备之间的通信连接。

​ 会话层不参与具体的传输,主要提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。

image-20250318211415316

2.2 TCP/IP 协议

​ TCP/IP 传输协议(Transmission Control Protocol/Internet Protocol),即传输控制/网络协议,也称网络通讯协议。指能够在多个不同网络间实现信息传输的协议簇,是一个工业标准。

​ TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指由 FTP、SMTP、TCP、UDP、IP 等协议构成的协议簇,只因为 TCP 协议和 IP 协议最具代表性,所以被称为 TCP/IP 协议。

  • 在传输文件时我们使用其中的 FTP 文件传输协议。
  • 在传输电子邮件时我们使用其中的 SMTP 邮件传输协议。
  • 在定位远端计算机位置时我们使用其中的 IP 互联网协议地址。

​ OSI 模型是基本概念,TCP/IP 协议是基于 OSI 概念的具体实现。

image-20250318212125316

​ TCP/IP 协议层层封装,从应用层到网络接口层,每经过一层都会添加额外信息。

image-20250318212212591
  1. 应用层头:协议头(FTP、HTTP 等协议),一般决定传输信息的类型。
  2. 传输层头:协议端口头(TCP 或 UDP协议),一般决定传输信息的规则以及端口。
  3. 网路层头:IP 头,决定传输路线。
  4. 网络接口层头尾:产生帧(消息分段),决定最终路线。

TCP/IP 协议中的重要协议

  1. 应用层协议

    • HTTP 协议:超文本传输协议。
    • HTTPS 协议:加密的超文本传输协议。
    • FTP 协议:文件传输协议。
    • DNS:域名系统。
  2. 传输层协议

    • TCP 协议:传输控制协议。
    • UDP 协议:用户数据报协议。
  3. 网络层协议

    • IP 协议。
image-20250318212641637

2.2.1 TCP 协议

image-20250318213021890

​ TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议。在收发数据前,必须和对方建立可靠的连接,且在消息传送过程有序,不会丢包(丢弃消息)。

​ 如果某一条消息在传送过程中失败了,会重新发送消息,直到成功。

特点

  1. 面向连接:两者之间必须建立可靠的连接。
  2. 1 对 1:只能是 1 对 1 的建立连接。
  3. 可靠性高:消息传送失败会重新发送,不允许丢包。
  4. 有序:按照顺序进行消息发送。

三次握手,四次挥手

  1. 三次握手,建立连接。
    • 第一次握手(C—>S):TCP 连接请求,告诉服务器建立连接。
    • 第二次握手(S—>C):TCP 授予连接,告诉客户端允许连接。
    • 第三次握手(C—>S):TCP 确认连接,告诉服务器准备连接。
image-20250318213352578
  1. 四次挥手,断开连接。
    • 第一次挥手(C—>S):告诉服务器数据发送完毕。
    • 第二次挥手(S—>C):告诉客户端已接受消息,等待剩余数据接收完毕就断连。
    • 第三次挥手(S—>C):告诉客户端消息接收完毕,准备断开连接。
    • 第四次挥手(C—>S):告诉服务器,之后没收到你的回复则断开连接。
image-20250318214033151

​ TCP 有了三次握手,四次挥手的规则,提供可靠的服务。

​ 通过 TCP 连接传送的数据,可以做到无差错、不丢失、不重复、且按顺序到达,让服务器和客户端之间的数据传递变得更加可靠。

2.2.2 UDP 协议

​ UDP(User Datagram Protocol,用户数据报协议)是一种无需建立连接就可以发送 IP 封装数据包的方法,提供面向事务的简单不可靠信息传送服务。

特点

  1. 无连接:两者之间无需建立连接。
  2. 可靠性低:消息可能在传送过程中丢失,丢失后不会重发。
  3. 传输效率高:可靠性低且也无需建立连接,所以传输效率上更高一些。
  4. n 对 n:由于无连接,所以可以 n 对 n。
image-20250318214551309

​ UDP 协议不像 TCP 协议需要建立连接,也没有三次握手和四次挥手。当使用 UDP 协议发送信息时,会直接把信息数据扔到网络上,这也造成 UDP 的不可靠性,信息传递过程中有可能丢失。

​ 虽然 UDP 是一个不靠谱的协议,但由于不需要建立连接,因此不像 TCP 协议需要携带更多信息,具有传输效率高、资源消耗小、处理速度快的特点。

3 网络游戏通信方案

3.1 强/弱弱联网游戏

强联网游戏

​ 游戏会频繁地和服务端进行通信,一直和服务端保持连接状态,不停地与服务器之间交换数

据。

​ 一般的 MMORPG(角色扮演)、MOBA(多人在线竞技游戏)、ACT(动作游戏)等等都是强联网游戏,这些游戏的部分核心逻辑由服务端进行处理,客户端和服务端之间不停地同步信息。

​ 比如:王者荣耀、守望先锋、和平精英等。

弱联网游戏

​ 游戏不会频繁地进行数据通信,客户端和服务端之间每次连接只处理一次请求,服务端处理完

客户端的请求后返回数据后断开连接。

​ 一般的三消类休闲游戏、卡牌游戏等都是弱联网游戏,这些游戏的核心玩法由客户端完成,客户端处理完成后只是告诉服务端一个结果,服务端验证结果即可,不需要随时通信。

​ 比如:开心消消乐、刀塔传奇、我叫 MT 等。

3.2 长/短连接游戏

​ 长连接和短连接游戏按照网络游戏通信特点划分,可以认为

  • 弱联网游戏——>短连接游戏
  • 强联网游戏——>长连接游戏

短连接游戏

​ 需要传输数据时,建立连接,传输数据,获得响应,断开连接。

  • 通信特点:需要通信时再连接,通信完毕断开连接。
  • 通信方式:HTTP 超文本传输协议、HTTPS 安全的超文本传输协议(本质上是 TCP 协议)。

长连接游戏

​ 不管是否需要传输数据,客户端与服务器一直处于连接状态,除非一端主动断开,或者出现意外情况(客户端关闭或服务端崩溃等)。

  • 通信特点:连接一直建立,可以实时的传输数据。
  • 通信方式:TCP 传输控制协议或 UDP 用户数据报协议。

3.3 相关术语

Socket

​ 网络套接字,是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

​ 一个套接字就是网络上进程通信的一端,提供应用层进程利用网络协议交换数据的机制。

​ 长连接游戏(强联网游戏)中主要使用 Socket 网络套接字的各种 API 进行网络通信。

Http/Https

​ 超文本传输协议,是简单的请求—响应协议,通常运行在 TCP 协议之上,指定了客户端可能发送给服务端什么样的信息以及得到什么样的响应。

​ 主要用于制作短连接游戏(弱联网游戏),也可以用来进行资源下载。

FTP

​ 文件传输协议,是用于在网络上进行文件传输的标准协议,可以进行网络上资源的下载和上传。

​ FTP 也基于 TCP 传输,是面向连接的,为文件传输提供了可靠的保证。

点击阅读全文
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐