Unity网络开发基础(part5.网络协议)

目录

前言

网络协议概述

OSI模型

OSI模型的规则

第一部分

物理层

数据链路层

网络层

传输层

第二部分

​编辑

应用层

表示层

会话层

每层的职能

TCP/IP协议

TCP/IP协议的规则

TCP/IP协议每层的职能

TCP/IP协议中的重要协议

TCP协议

三次握手

四次挥手

UDP协议

TCP与UDP对比

总结


前言

        网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,是网络通信的基础。在Unity网络开发中,理解和使用网络协议至关重要。


网络协议概述

协议的字面意思:

经过谈判、协商而制定的共同承认、共同遵守的文件

网络协议的基本概念:

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

如果你想要在网络环境中进行通信,那么网络协议就是你必须遵守的规则。


OSI模型

OSl(Open System Interconnection Reference Model)开放式系统互联通信参考模型,简称OSI模型。它是一种概念模型。

由lS0(International Organization for Standardization)国际标准化组织提出,是一个试图使各种设备在世界范围内互联为网络的标准框架。不同公司都按照统一的标准来控制网络互联通信,那么各设备之间就能够达到真正的互联通信了。

简单来说:OSI模型是人为定义的一个标准(规范),它制定了设备之间相互连接相互通信的标准(规范)。各公司按照这个标准设计的规则(协议),就可以让不同设备利用互联网进行互联通信。

OSI模型的规则

由于互联网协议(规则)很庞大,很复杂,所以OSI模型采用了分而治之的设计方法,把网络的功能划分为不同的多个模块,以分层的形式有机地组合在了一起。

OSI模型将复杂的互联网实现,分成了好几层(部分)每一层都有自己的功能,就好像建筑物一样,从上到下有很多层构成每一层都要靠下一层的支持。用户接触到的都只是最上面的一层,感受不到下面层级的复杂性。

OSI模型把互联通信的过程抽象的分成了七个层级
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理层
不同层级的职能各有不同

第一部分:从地基开始        物理层->数据链路层->网络层->传输层
第二部分:从屋顶开始        应用层->表示层->会话层

第一部分

物理层

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

功能:
它就是把电脑连接起来的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。物理层将2进制数据利用电脉冲在物理媒介上实现比特流的传输它的主要功能是定义传输模式、定义传输速率,比特同步,比特编码等等。

数据链路层

物理层用物理硬件来传输0和1,但是单纯的0和1没有任何意义必须规定解读方式,比如多少个电信号算一组?每个信号位的意义?这就是数据链路层的意义,它在物理层的上方确定0和1的分组方式,并且明确信息是发送给哪台计算机的网卡(Mac地址)

功能:
将想要发送的信息构成一个数据包,叫做“帧’每一个帧分为两个部分:标头Head+数据Data标头包含数据包的一些说明项比如:发送方和接收方的Mac地址,数据类型等等。

网络层

通过Mac地址定位一台计算机,理论上是可行的,但是效率非常低下我们之前学习过IP地址、端口、Mac地址,我们知道我们是通过IP地址快速的定位网络上的设备的,而网络层的主要功能就和IP地址有关系。

IP选址、路由选择
在网络环境中,两台设备之间可能会经过很多个数据链路,也可能还要经过很多通信子网网络层的主要作用就是选择一条合适的路径用于通信。它会在上一层的数据基础上添加标头。

包含信息:IP地址,长度,版本等等信息。

传输层

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

功能:
建立、管理和维护端到端的连接。传输层也称运输层,传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务。它也会在上一层的数据基础上添加标头

包含信息:发送方接收方的端口信息、协议信息等等。

第二部分

应用层

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

功能:
为应用程序提供服务,我们可以根据自己要传递的信息决定使用哪一种协议(规则)来处理数据,进行传输 。

它会在原始数据的基础上添加标头包含信息:协议信息等等。

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

表示层

不同操作系统的应用层代码和数据可能规范都不一样,为了让信息可以在各操作系统和设备中通用,表示层做的事情就很重要了。

功能:
数据格式转化、代码转换、数据加密。

为了让不同设备之间能够有统一的规则,表示层会把数据转换为能与各系统格式兼容并且适合传输的格式。表示层就像是个翻译,会把数据相关信息翻译成国际通用的规则。

会话层

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

功能:
建立、管理和维护会话。

它主要负责数据传输中设置和维护网络中两台设备之间的通信连接它不参与具体的传输,主要提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。

每层的职能

TCP/IP协议

TCP/lP(Transmission Control Protocol/Internet Protocol)
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议
是指能够在多个不同网络间实现信息传输的协议簇,它是一个工业标准(就是实际会使用的标准)
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议
它是正儿八经的用于互联网的通信协议(规则)

TCP/IP协议是一系列规则(协议)的统称,他们定义了消息在网络间进行传输的规则
是供已连接互联网的设备进行通信的通信规则

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

TCP/IP协议的规则

通过对OSI七层模型的学习,我们知道实现网络传输的功能非常繁杂,所以采用了分而治之的设计方法,把网络的功能划分为不同的多个模块,以分层的形式有机地组合在了一起。

TCP/IP网络结构体系实际上是基于OSI七层模型设计出来的。
OSI七层模型只是一个概念模型,它主要用于描述、讨论和理解单个网络功能。
而TCP/IP协议是为了解决一组特定的问题而设计的,它是基于互联网开发的标准协议(规则)。

OSI模型只是一个基本概念,而TCP/IP协议是基于这个概念的具体实现。

TCP/IP协议把互联通信的过程抽象的分成了四个层级
1.应用层
2.传输层
3.网络层
4.网络接口层(数据链路层)
这四层是基于OSI七层模型进行设计的

OSI是国际组织制定的适用于全世界计算机网络的统一标准
是一套基本规则和概念

TCP/IP是基于OSI根据目前的实际情况制定的一套规则
它主要用于对当前互联网结构体系提供一组规则
所有形式的网络传输都遵循这套规则
它是OSI概念的具体实
现在进行网络开发时,我们就是基于TCP/IP协议来进行网络通信的

TCP/IP协议每层的职能

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

应用层头:
协议头(FTP、HTTP等协议)
一般决定传输信息的类型

传输层头:
协议端口头(TCP或UDP协议)
一般决定传输信息的规则以及端口

网路层头:
IP头,决定传输路线

网络接口层头尾:
产生帧(消息分段),决定最终路线

TCP/IP协议中的重要协议

TCP/IP协议是基于OSI模型的具体实现
是互联网中设备间通信的基本规则

想要进行网络通信,我们就遵循TCP/IP协议的规则进行消息传递就行了
网络通信API都是基于TCP/IP协议的封装
各种语言(C#、C++、Java、Go等等)都有对应的网络通信类对TCP/IP协议进行了封装
我们只需要使用对应的类和方法进行网络连接、网络通信就可以完成对应的功能

 应用层协议:
HTTP协议:超文本传输协议
HTTPS协议:加密的超文本传输协议
FTP协议:文件传输协议
DNS:域名系统

传输层协议:
TCP协议:传输控制协议
UDP协议:用户数据报协议

网络层协议:
IP协议

TCPUDP
连接方面面向连接(比如:打电话要先拨号建立连接)无连接发送数据前不需要建立连接
安全方面

无差错、不丢失

不重复、按序到达

只会尽力交付不保证可靠性
传输效率相对较低相对较高
连接对象一对一

一对一,一对多、

多对一、多对多

TCP协议

TCP(Transmission Control Protocol,传输控制协议)
是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接
并且在消息传送过程中是有顺序的,并且是不会丢包(丢弃消息)的
如果某一条消息在传送过程中失败了,会重新发送消息,直到成功

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

三次握手

第一次握手(C->S)
TCP连接请求,告诉服务器我要和你建立连接

第二次握手(S->C)
TCP授予连接,告诉客户端准了,来吧

第三次握手(C->S)
TCP确认连接,告诉服务器,来就来

四次挥手

断开连接

第一次挥手(C->S)
告诉服务器我数据发完了,你如果还有消息就快发完

第二次挥手(S->C)
告诉客户端我知道了,请继续等待我的消息

第三次挥手(S->C)
告诉客户端消息发完了,你可以正式断开连接了

第四次挥手(C->S)
告诉服务器我等一会如果没有收到你回复我就断开了

UDP协议

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

1.无连接 -- 两者之间无需建立连接
2.可靠性低 -- 消息可能在传送过程中丢失,丢失后不会重发
3.传输效率高-- 由于它的可靠性低并且也无需建立连接,所以传输效率上更高一些
4.n对n -- TCP只能1对1连接进行消息传递,而UDP由于无连接所以可以n对n

UDP协议不像TCP协议需要建立连接有三次握手和四次挥手
当使用UDP协议发送信息时会直接把信息数据扔到网络上,所以也就造成了UDP的不可靠性
信息在这个传递过程中是有可能丢失的
虽然UDP是一个不靠谱的协议,但是由于它不需要建立连接
也不会像TCP协议那样携带更多的信息,所以它具有更好的传输效率
它具有资源消耗小,处理速度快的特点

TCP与UDP对比

TCP
更可靠,保证数据的正确性和有序性(三次握手四次挥手)
适合对信息准确性要求高,效率要求较低的使用场景
比如:游戏开发,文件传输,远程登录等等

UDP:
更效率,传输更快,资源消耗更少
适合对实时性要求高的使用场景
比如:直播,即时通讯,游戏开发等等

总结

在进行Unity网络开发时,需要根据具体的应用场景选择合适的网络协议。例如,对于需要可靠传输的应用场景,可以选择TCP协议;对于对实时性要求较高、可以容忍一定丢包率的应用场景,可以选择UDP协议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466163.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ENSP GVRP动态学习VLAN

手工配置的VLAN称为静态VLAN,通过GVRP协议创建的VLAN称为动态VLAN。 GVRP有三种注册模式,不同的模式对静态VLAN和动态VLAN的处理方式也不同。 GVRP的三种注册模式分别定义如下: Normal模式:允许动态VLAN在端口上进行注册…

【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题

目录 1. 单例模式 (1) 饿汉模式 (2) 懒汉模式 1. 单线程版本 2. 多线程版本 2. 解决懒汉模式产生的线程安全问题 (1) 产生线程安全的原因 (2) 解决线程安全问题 1. 通过加锁让读写操作紧密执行 方法一 方法二 2. 处理加锁引入的新问题 问题描述 …

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章,介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像,用运动模糊来呈现场景中的移动元素。它通常有两种模式,分别产生前景模糊或…

大语言模型鼻祖Transformer的模型架构和底层原理

Transformer 模型的出现标志着自然语言处理(NLP)技术的一次重大进步。这个概念最初是针对机器翻译等任务而提出的,Transformer 后来被拓展成各种形式——每种形式都针对特定的应用,包括原始的编码器-解码器(encoder-de…

解决vue3导出.xlsx的blob文件受损问题

1、 首先要设置get或者post请求的类型。这里我用到post请求 eg&#xff1a;在http.ts中添加公共的方法。 export function post1(url: string, params: any): Promise<AxiosResponse> | Promise<AxiosResponse<any>> {return new Promise((resolve, reject…

Jest项目实战(6):搭建文档网站

搭建文档网站 创建 API 文档可以选择如下的 3 种方式&#xff1a; 功能较少&#xff0c;可以直接写在 README.md 文件里面内容较多&#xff0c;可以单独写一个文件API 数量众多&#xff08;Vue、React 这种级别&#xff09;&#xff0c;需要考虑单独拿一个网站来做详细的文档…

STM32项目---水质水位检测

1 项目简介 1.1 项目需求 本项目通过测量水体的TDS来反映水体的质量。并同时可以测量水位&#xff08;水深&#xff09;。 1.2 系统总体设计 2 硬件模块 2.1 硬件选型 水位测量模块 TDS采集模块 外置ADC模块&#xff08;ADS1115&#xff09; 2.2 水位测量模块使用方法 …

从神经元到神经网络:深度学习的进化之旅

神经元、神经网络 神经元 Neuron )&#xff0c;又名感知机( Perceptron )&#xff0c;在模型结构上与 逻辑回归 一致&#xff0c;这里以一个二维输入量的例子对其进行进一步 的解释&#xff1a; 假设模型的输 入向 量是一 维特征向 (x1,x2). 则单神 经元的模型结构 如下…

银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等

银行信贷风控专题&#xff1a;Python、R 语言机器学习数据挖掘应用实例合集&#xff1a;xgboost、决策树、随机森林、贝叶斯等 原创 拓端研究室 全文链接&#xff1a;https://tecdat.cn/?p38026 在当今金融领域&#xff0c;风险管控至关重要。无论是汽车贷款违约预测、银行挖掘…

某华迪加现场大屏互动系统mobile.do.php任意文件上传

免责声明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 该系统是实现现场大屏互动&#xff0c;里面功能众多&#xff0c;但在mobile.do.php接口处存在任意文件上传漏洞 搜索语法 fof…

基于Python的学生宿舍管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【AI视频换脸整合包及教程】AI换脸新星:Rope——让换脸变得如此简单

在数字技术迅猛发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;的应用已经渗透到了我们生活的方方面面&#xff0c;从日常的语音助手到复杂的图像处理&#xff0c;无不体现着AI技术的魅力。特别是在娱乐和创意领域&#xff0c;AI技术更是展现出了惊人的潜力。其中&a…

A012-基于Spring Boot的私房菜定制上门服务系统的设计与实现

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统私房菜定制上门服务系统信息管理难度大&#xff0c;容错率…

EV录屏好用吗?盘点2024年10款专业好用的录屏软件。

EV录屏的方式有很多种&#xff0c;它设置了很多模式&#xff0c;并且录制高清&#xff0c;可以免费使用。但是现在很多的录屏工具都有着与这个软件相似的功能&#xff0c;在这里我可以给大家列举一些。 1、福昕电脑录屏 这个软件为用户提供了多种录制模式&#xff0c;让视频录…

【网易云插件】听首歌放松放松

先看效果&#xff1a; 网易云有两种类似的插件。 第一种 &#xff1a; iframe 优点&#xff1a;可以自己调整插件的高度、宽度 缺点&#xff1a;很多博客网站不支持嵌入iframe&#xff0c;请试一下您的网站是否支持 登录可直接复制代码。 也可以在我这里 <iframe fram…

Java的Object类常用的方法(详述版本)

文章目录 一、什么是Object类二、常用方法&#xff1a;toString&#xff08;&#xff09;三、常用方法&#xff1a;对象比较equals&#xff08;&#xff09;四、常用方法&#xff1a;hashcode&#xff08;&#xff09;五、总结 一、什么是Object类 顾名思义&#xff0c;Object类…

SQL--查询连续三天登录数据详解

问题&#xff1a; 现有用户登录记录表&#xff0c;请查询出用户连续三天登录的所有数据记录 id dt1 2024-04-25 1 2024-04-26 1 2024-04-27 1 2024-04-28 1 2024-04-30 1 2024-05-01 1 2024-05-02 1 2024-05-04 1 2024-05-05 2 20…

docker+mysql配置

拉取mysql docker pull mysqlmysql配置 创建存储文件夹 mkdir -p /home/mysql/{date,conf}在conf文件中配置my.cnf sudo vim my.cnfmy.cnf具体配置 [mysqld] #Mysql服务的唯一编号 每个mysql服务Id需唯一 server-id1#服务端口号 默认3306 port3306#mysql安装根目录&#x…

qt QHeaderView详解

1、概述 QHeaderView 是 Qt 框架中的一个类&#xff0c;它通常作为 QTableView、QTreeView 等视图类的一部分&#xff0c;用于显示和管理列的标题&#xff08;对于水平头&#xff09;或行的标题&#xff08;对于垂直头&#xff09;。QHeaderView 提供了对这些标题的排序、筛选…

删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法

如果你也是&#xff1a; 如果你也有类似上面的问题&#xff0c;这篇文章算是你看对了&#xff0c;哦哟&#xff01; 我的牙齿现在是怨灵的牙齿&#xff0c;可以啃下一头牛。 翻遍千山万水&#xff0c;咱们也是终于取到真经了家人们。 首先下一个everything好吗 甩一个官网链…