当前位置:网站首页>Unity-网络开发(一)
Unity-网络开发(一)
2022-06-21 21:51:00 【狼唤】
网络基本概念
网络
网络的作用

在没有网络之前,每个人的设备(电脑等)都是彼此孤立的,网络的出现让设备之间可以相互通信

网络是由若干设备和连接这些设备的链路构成,各种设备 间接或者直接通过介质相连
设备之间想要进行信息传递时,将想要传递的数据编码为2进制数值便可以被有效的传输。这些数据是以电脉冲的形式进行传输的
线缆中的电压是在高低状态之间进行变化的,因而
二进制中1是通过产生一个正电压来传输的,二进制中0是通过产生一个负电压来传输的
局域网

局域网(Local Area Network,简称LAN)
是按照范围划分而来的名称,是指在某一个小区域内由多台设备互联成的计算机组,可以是家里的两台设备组成
也可以是学校、公司里的上千台设备组成,特点是分布地区范围有限,覆盖范围一般是方圆几千米之内
以太网
以太网是一种计算机局域网技术,是目前应用最普遍的局域网技术
IEEE组织(电气与电子工程师协会)的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容
说人话:
局域网中设备的连接规范,数据的传输规范等等规则,都是基于以太网的技术标准来完成的
所以,简单理解以太网就是网络连接的一种规则(协议)
以太网 网络拓扑结构

概念:
用传输媒体把计算机等各种设备互相连接起来的物理布局,是指设备互连过程中构成的几何形状
局域网

城域网(Metropolitan Area Network,简称MAN)
是在一个城市范围内所建立的网络通常覆盖一个城市,从几十公里到一百公里不等,可能会有多种介质用户的数量也比局域网更多
广域网
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7CsFcaUe-1655035916939)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516160917725.png)]
广域网(Wide Area Network,简称WAN)
又称外网、公网,是连接不同地区局域网或城域网设备通信的远程网,通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,形成国际性的远程网络
注意:广域网并不等同于互联网
互联网(因特网)
互联网,如果作为名词理解的话,就是互相联网,让各种设备处于同一网络环境下,只要设备互相连接网络了,那么设备之间就可以进行通信
它一般泛指彼此能够通信的设备组成的网络,但是目前我们往往提到的互联网,大部分时候都是指代的因特网,你可以把互联网作为名词理解,也可以将互联网理解为因特网的代称
互联网(internet,音译为因特网)
又称国际网络,指的是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议(规则)相连,形成逻辑上的单一巨大国际网络。
互联网目前已经把200多个国家和地区的大部分设备连接了起来,形成了一个遍布全世界的网络。所以在一定程度上也可以说,互联网等同于广域网,广域网包含了互联网。互联网使用的技术,在广域网上一定有,但是某些广域网的技术,互联网上不一定有比如军用的广域网,普通老百姓是不会使用的
互联网(因特网)的本质就是人为定义的一系列协议(规则)总称为“互联网协议”
主要功能:
定义计算机如何接入互联网,以及接入互联网的计算机的通信标准,也就是为我们的设备定义连入标准,并且为传输的2进制数据定义一些传输规则,只要遵守这些规则来进行网络连接和数据传输,我们的各种设备就可以通过网络进行通讯,进行信息的交换
简单理解因特网:
它是国际上最大的互联网,所以当我们提到互联网时一般都代指因特网
它是指当前全球最大的、开放的、有众多网络互相连接而成的特定的计算机网络
它采用TCP/IP协议簇作为通信的规则,提供了包括万维网(WWW)、文件传输(FTP)、电子邮件(E-mail)、远程登录(Telnet)等等服务
只要我们的设备和应用程序遵守这套因特网的互联网规则,那么我们就可以在这个庞大的网络体系当中畅游
万维网
万维网(World Wide Web,简称WWW,也称Web、3W等)
它是存储在因特网的计算机当中,数量巨大的文档(页面)的集合
它是无数个网络站点和网页的集合,是构成因特网的主要部分
我们平时用浏览器看到的内容就属于万维网,他们本质上就是一个个的文档(页面)
如果把因特网看做是网络的基础,那么万维网就可以被看做是对因特网的应用,是利用因特网规则的一种信息传递和呈现的手段,可以认为万维网就是网站和页面的统称
总结
网络:由若干设备和连接这些设备的链路构成,设备间可以相互通信
局域网:指某一个小区域内由多台设备互联成的计算机组
以太网:网络连接的一种规则,定义了连接传输规范
城域网:是在一个城市范围内所建立的网络,几十到一百公里
广域网:是连接不同地区、城市、国家的远程网络,几十到几千公里
互联网(因特网):是目前国际上最大的互联网,定义了通信规则等
万维网:是基于因特网的网站和网页的统称
IP、端口、Mac地址
概述
只要通过网络连接,我们的设备之间就可以进行信息的传递
当传递消息时,如何准确的将信息传递到目标设备?
IP地址

基本概念:
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址
IP地址是IP协议提供的一种统一的地址格式,IP地址是设备在网络中的具体地址
IP地址就像是设备的家庭住址一样,被用来给互联网上的电脑一个编号,用于定位
我们可以用打电话举例子,IP地址就好像是电话号码,我们需要知道对方设备的电话号码,才能联系到对方
按协议分类(目前常用的还是IPv4的规则):
1.IPv4:
互联网协议第四版,由四个数组成,每个数取值范围是0~255
每个数用 . 来分隔,它的数量是有限的 0.0.0.0~255.255.255.255
相当于是由4个字节表示,一个字节八位,255的2进制数则是 1111 1111
A类:0.x.x.x~127.x.x.x (32位2进制最高位为0,适用于网内主机数达1600万台的大型网络)
B类:128.x.x.x~191.x.x.x(32位2进制最高2位为10,适用于中等规模网络,每个网络能容纳6万台设备)
C类:192.x.x.x~223.x.x.x(32位2进制最高3位为110,适用小规模局域网,每个网内最多只包含254台设备)
D类:224.x.x.x~239.x.x.x(32位2进制最高4位为1110,属于特殊类型IP,一般为广播地址)
E类:240.x.x.x~255.x.x.x(32位2进制最高5位为11110,作为特殊使用)
2.IPv6:
互联网协议第六版,由八个数组成,每个数取值范围是0~65535
每个数用 : 来分隔,它是为了解决IPv4的有限性而设计的(几乎无限)
0:0:0:0:0:0:0:0~65535:65535:65535:65535:65535:65535:65535:65535
按使用范围分类:
1.公网IP:
用于连接外网,想要和远程设备进行通信时使用的IP地址
查看方式:百度搜索IP地址查询 便可以查看到公网IP
2.私网IP:
也称局域网IP,私网IP不能上网,只用于局域网内通信
查看方式:1.在windows操作系统中打开命令提示符窗口
然后输入指令ipconfig查看本机的IP地址信息
快捷方式:运行窗口(win+R)-> 打开cmd -> ipconfig
2.在mac操作系统中打开终端窗口
然后输入指令ifconfig查看本机的IP地址信息
也可以在网络设置窗口上直接查看IP地址
端口号
通过IP地址我们可以在网络上找到一台设备,但是我们想要和设备通信,本质上是和运行在设备上的某一个应用程序进行通信,而一台设备上可能运行n个应用程序,而端口号就是用来区分这些应用程序的,让我们可以明确到底是和哪一个应用程序进行通信
基本概念:
IP地址决定了设备在网络中的具体地址,而端口是不同应用程序在该设备上的门牌号码,一台设备上不同的应用程序想要进行通信就必须对应一个唯一的端口号
使用规则:
端口号的取值范围是0~65535
我们在进行网络程序开发时,需要自己为应用程序设置端口号,端口号不能和其它应用程序相同,避免产生冲突一般选择1024以上的端口进行使用,1024以下的一般由IANA互联网数字分配机构管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjJfD0ql-1655035916940)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516170203510.png)]
Mac地址
基本概念:Mac地址(Media Access Control Address)
直译为媒体存取控制地址,也称局域网地址,Mac地址,以太网地址,物理地址
它是用来确认网络设备位置的地址,在OSI模型中,第三层网络层负责IP地址,第二层数据链路层,则负责Mac地址,Mac地址是用于在网络中唯一标识一个网卡的,一台设备可以有多个网卡,每个网卡都会有一个唯一的Mac地址
在早期的网络中,只用Mac地址便可以实现两台设备间的通信,但随着设备的增多,Mac地址虽然具备唯一性但是并不携带位置信息,如果通过广播方式查找设备,会给网络造成巨大负担。所以才有了IP地址来定位网络中的设备
MAC地址就像身份证号,IP地址就好像你的住址。
MAC地址是物理层面上通信的基础,IP地址是逻辑层面上通信的基础
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZpAacnQM-1655035916942)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516170335933.png)]
总结:
在互联中寻找一台指定设备就好像在现实世界中去找朋友串门
你必须要知道朋友的地址在哪里
IP地址 = 朋友的住址(某街某小区某栋楼)
端口 = 朋友住所具体的门牌号 (具体哪个应用程序)
在网络通信中
我们通过IP地址 以及 端口号定位想要通信的远端计算机中的某一个应用程序
IP地址 = 设备在外网中位置
端口 = 运行在该设备上的应用程序位置
Mac地址 = 设备进行网络通信的唯一标识,设备真正进行物理信息传输用来定位的标识
客户端和服务端
客户端
名词角度解释含义
客户端:
用户使用的设备(计算机、手机、平板等等)
客户端应用程序:
用户使用的设备上安装的应用程序,用户会直接使用操作的内容
比如各种游戏、聊天软件、外卖软件等等
往往提到客户端都泛指的是客户端应用程序
基本概念:
客户端(Client,或称为用户端、前端)是指与服务端相对应,为客户提供本地服务的应用程序
我们在设备上(计算机、手机等)使用的所有软件和应用几乎都是客户端应用程序
比如:
各种浏览器,游戏,外卖应用程序(美团,饿了么),通讯软件(QQ、微信、陌陌)等等
他们都可以统称为客户端应用程序(简称客户端)
说人话:
用户在设备上(计算机、手机、平板)运行使用的应用程序就是客户端应用程序(简称客户端)
服务端
名词角度解释含义
服务端:
为客户端提供服务的设备,一般是一台性能较好的计算机
服务端应用程序:
为客户端提供服务的应用程序,该应用程序是运行在服务端设备上的
往往在软件开发中提到的服务端或服务器都是泛指服务端应用程序
基本概念:
服务端(Server,或称为服务器、后端)是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据等等
它是一种有针对性的服务程序,往往一个服务端都是针对性的为某类客户端提供服务
它往往是一台运行在远端的计算机,客户端和服务端通过网络进行通信
比如:
某游戏服务端它只为该游戏的客户端提供服务(消息转发、信息保存、逻辑处理等等)
某外卖服务端它只为该外卖的客户端提供服务(分派订单、查看订单、查看配送进度等等)
说人话:服务端应用程序运行在远端的一台计算机上,客户端通过网络和服务端进行通讯
服务端为客户端提供各种服务
网络游戏开发中的客户端和服务端
单机游戏:
只有客户端,没有服务端,不存在玩家之间的交互,数据存储在本地
网络游戏:
有客户端和服务端,玩家之间可以进行交互(信息同步,信息交换),静态(不变的)数据存储在客户端,动态(要变的)数据存储在服务端
网络游戏开发中的客户端:
Unity、UE、Cocos、Egret、Laya、Flash等等游戏引擎开发的游戏都属于客户端应用程序,他们都是被用户直接操作的,主要功能就是游戏玩法、UI交互、美术表现、本地数据保存等等
网络游戏开发中的服务端:
C++、Java、C#、Go等等语言开发的运行在远端计算机上为游戏客户端提供服务的软件都属于服务端应用程序,它的主要功能就是消息转发、数据保存、逻辑处理等等
总结:
- 客户端
用户在设备上(计算机、手机、平板)运行使用的应用程序就是客户端应用程序(简称客户端)
- 服务端
服务端应用程序运行在远端的一台计算机上,客户端通过网络和服务端进行通讯,服务端为客户端
提供各种服务
- 网络游戏开发中的客户端和服务端
我们用Unity开发的应用程序就是游戏客户端应用程序
后端程序员可以使用C++、C#、Java、Go等等语言进行服务端程序开发,为游戏客户端提供服务
客户端和服务端之前通过互联网进行信息交换
数据通信模型
数据通信模型
在早期的计算机网络中,为了有效的利用计算机,一般将数据通信模型分为
分散式(Decentralized)
集中式(Centralized)
分布式(Distributed)
这三种方式决定了数据在网络环境中的管理方式
分散式
在分散式系统中,用户只负责管理自己的计算机系统,各自独立的系统之间没有资源或信息的交换和共享。就类似一台台没有联网的设备
这种模式由于存在大量共享数据的重复存储,除了引起数据冗余之外,也容易导致一个组织内各部门数据的不一致性。
同时还会造成硬件、支持和运营维护等成本的大量增加,因此早被淘汰
集中式
在集中式环境中,用一台主计算机保存一个组织的全部数据,而用户则通过设备连接到这台计算机系统并和它通信,从而达到访问数据的目的
优点:方便数据共享、消除了数据的冗余和不一致性
缺点:可靠性不如分散式,主机出现故障所有系统全部瘫痪
分布式
分布式是分散式和集中式的混合,类似我们学习过的计算机网络,是分散式的水平交互和集中式的垂直控制相结合的一种模式,它兼具了分散式和集中式的优点
方便数据共享、消除了数据的冗余和不一致性,同样也加强了容错性
例如:
比如一般的企业管理系统就是一个典型的集中式和分布式的综合体现
所有数据用专用的数据库集中存储,属于集中式
而对数据的处理则由各个部门的软件分别控制,属于分布式
C/S模型
C/S(Client/Server)模型也叫C/S模式
就是我们上节课学习的客户端和服务端模式,它是目前大多数网络通信采用的模型
从程序的角度来说,客户端和服务端打交道,相当于是两个应用程序(进程)在打交道
B/S模型
B/S(Browse/Server)模型也叫B/S模式
它是一种基于Web的通信模型,使用HTTP超文本传送协议通信,B/S是一种特殊的C/S模型,特殊之处就是这种模型的客户端不需要我们自己开发,一般是某种浏览器,比如IE、Chrome、QQ浏览器、360浏览器等等,B/S模型的优点就是单台计算机可以访问任何一个Web服务器
简单的说就是Web服务端可以随意变,但是客户端是通用的,我们不需要针对不同的服务端专门提供客户端应用程序了
P2P模型
P2P(Peer-to-Peer)模型也叫对等互联
每个联网的设备同时运行一个应用程序的客户端(Client)和服务端(Server)部分,也就是说一个应用程序同时作为客户端和服务端
优点是通信方便,成本低,缺点是可靠性不如C/S模型
总结
对于网络游戏开发来说,我们采用C/S模型来进行前后端开发,在服务端的布局上往往使用的是分布式的形式进行管理
比如服务端的用户数据使用集中式进行管理,玩家的数据都存储在数据库应用(SQL Server、MySQL)中,服务端应用程序使用分布式进行管理,账号服务器、游戏服务器、聊天服务器、跨服PVP服务器等分布式管理,这些服务端应用程序都使用数据库中的数据分别进行逻辑处理
网络协议
网络协议概述
网络协议概述
协议的字面意思:
经过谈判、协商而制定的共同承认、共同遵守的文件
网络协议的基本概念:
网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合
指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合
说人话:
如果你想要在网络环境中进行通信,那么网络协议就是你必须遵守的规则
OSI模型是网络通信的基本规则
TCP/IP协议是基于OSI模型的工业实现
说人话:
OSI模型是国际组织定义的一套理论基础,主要用于定义网络通信的规则
TCP/IP协议是基于这套理论基础真正实现的通信规则
网络通信API底层都是基于TCP/IP协议的
总结:
2进制数据应该如何加工,如何准确
的传递到目标设备当中,在数据传递过程中具体的规则标准是什么
而这些规则标准都是由网络协议制定的
OSI模型
OSI模型是什么
OSI(Open System Interconnection Reference Model)开放式系统互联通信参考模型,简称OSI模型
它是一种概念模型
由ISO(International Organization for Standardization)国际标准化组织提出,是一个试图使各种设备在世界范围内互联为网络的标准框架,不同公司都按照统一的标准来控制网络互联通信,那么各设备之间就能够达到真正的互联通信了
说人话:
OSI模型是人为定义的一个标准(规范),它制定了设备之间相互连接相互通信的标准(规范)
各公司按照这个标准设计的规则(协议),就可以让不同设备利用互联网进行互联通信
OSI模型的规则
由于互联网协议(规则)很庞大,很复杂,所以OSI模型采用了分而治之的设计方法,把网络的功能划分为不同的多个模块,以分层的形式有机地组合在了一起
OSI模型将复杂的互联网实现 分成了好几层(部分),每一层都有自己的功能,就好像建筑物一样,从上到下有很多层构成,每一层都要靠下一层的支持用户接触到的都只是最上面的一层,感受不到下面层级的复杂性
OSI模型把互联通信的过程抽象的分成了七个层级
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理层
不同层级的职能各有不同,这7个层级就是在两台计算机互联通信时必经的7个步骤

OSI模型每层的职能
第一部分:从地基开始
物理层—>数据链路层—>网络层—>传输层
第二部分:从屋顶开始
应用层—>表示层—>会话层

物理层
电脑要联网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。
功能:
它就是把电脑连接起来的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。物理层将2进制数据利用电脉冲,在物理媒介上实现比特流的传输,它的主要功能是,定义传输模式、定义传输速率、比特同步、比特编码等等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVcLosdS-1655035916943)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516173248105.png)]
数据链路层
物理层用物理硬件来传输0和1,但是单纯的0和1没有任何意义
必须规定解读方式,比如多少个电信号算一组?每个信号位的意义?
这就是数据链路层的意义,它在物理层的上方确定0和1的分组方式,并且明确信息是发送给哪台计算机的网卡(Mac地址)
功能:
将想要发送的信息构成一个数据包,叫做“帧”,每一个帧分为两个部分:标头Head+数据Data,标头包含数据包的一些说明项
比如:发送方和接收方的Mac地址,数据类型等等

网络层
通过Mac地址定位一台计算机,理论上是可行的,但是效率非常低下,我们之前学习过IP地址、端口、Mac地址,我们知道我们是通过IP地址,快速的定位网络上的设备的,而网络层的主要功能就和IP地址有关系
功能:
IP选址、路由选择
在网络环境中,两台设备之间可能会经过很多个数据链路,也可能还要经过很多通信子网
网络层的主要作用就是选择一条合适的路径用于通信。它会在上一层的数据基础上添加标头
包含信息:IP地址、版本、长度等等信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVftxdwS-1655035916945)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516173416163.png)]
传输层
有了Mac地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信了,但是如果没有端口号,我们无法准确的在应用程序之间进行通信。传输层的功能,就是建立端口到端口的通信
功能:
建立、管理和维护端到端的连接
传输层也称运输层,传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务。它也会在上一层的数据基础上添加标头
包含信息:发送方接收方的端口信息、协议信息等等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQDzQO3A-1655035916945)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516173509663.png)]
应用层
应用层为最上层,和用户直接打交道的可以联网的应用程序就属于这一层,比如浏览器,游戏等等
功能:
为应用程序提供服务,我们可以根据自己要传递的信息,决定使用哪一种协议(规则)来处理数据,进行传输
我们程序员主要开发的也是这一层,它会在原始数据的基础上添加标头
包含信息:协议信息等等
常用的协议(规则):
FTP,HTTP,SMTP等等

表示层
不同操作系统的应用层代码和数据可能规范都不一样,为了让信息可以在各操作系统和设备中通用,表示层做的事情就很重要了
功能:
数据格式转化、代码转换、数据加密
为了让不同设备之间能够有统一的规则,表示层会把数据转换为能与各系统格式,兼容并且适合传输的格式,表示层就像是个翻译,会把数据相关信息,翻译成国际通用的规则

会话层
有了准备好的上层数据,那么这些数据最终就是希望被传递的内容,那么在信息传递时我们需要对其进行管理,比如消息是否发送完毕,对方是否收到,是否断开连接等等,会话层的主要工作就是完成这些内容
功能:
建立、管理和维护会话,它主要负责数据传输中设置和维护,网络中两台设备之间的通信连接。它不参与具体的传输,主要提供包括访问验证和会话管理,在内的建立和维护应用之间通信的机制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M0lpWwC1-1655035916946)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516173855746.png)]

TCP/IP协议
TCP/IP协议是什么
TCP/IP(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协议的规则
TCP/IP网络结构体系实际上是基于OSI七层模型设计出来的。
OSI七层模型只是一个概念模型,它主要用于描述、讨论和理解单个网络功能,而TCP/IP协议是为了解决一组特定的问题而设计的,它是基于互联网开发的标准协议(规则)
说人话:
OSI模型只是一个基本概念,而TCP/IP协议是基于这个概念的具体实现
TCP/IP协议把互联通信的过程抽象的分成了四个层级
1.应用层
2.传输层
3.网络层
4.网络接口层(数据链路层)
这四层是基于OSI七层模型进行设计的

TCP/IP协议每层的职能
应用层头:
协议头(FTP、HTTP等协议)
一般决定传输信息的类型
传输层头:
协议端口头(TCP或UDP协议)
一般决定传输信息的规则以及端口
网路层头:
IP头,决定传输路线
网络接口层头尾:
产生帧(消息分段),决定最终路线
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJBWtWvk-1655035916948)(/Users/liuyingbo/Library/Application Support/typora-user-images/image-20220516182730392.png)]
TCP和UDP
TCP/IP协议中的重要协议
应用层协议:
HTTP协议:超文本传输协议
HTTPS协议:加密的超文本传输协议
FTP协议:文件传输协议
DNS:域名系统
传输层协议:
TCP协议:传输控制协议
UDP协议:用户数据报协议
网络层协议:
IP协议

TCP和UDP的区别
TCP:传输控制协议
UDP:用户数据报协议

TCP协议
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接,并且在消息传送过程中是有顺序的,并且是不会丢包(丢弃消息)的,如果某一条消息在传送过程中失败了,会重新发送消息,直到成功
它的特点是:
1.面向连接 —— 两者之间必须建立可靠的连接
2.一对一 —— 只能是1对1的建立连接
3.可靠性高 —— 消息传送失败会重新发送,不允许丢包
4.有序的 —— 是按照顺序进行消息发送的
三次握手,四次挥手
TCP协议中有一个重要概念:三次握手,四次挥手
三次握手建立连接
第一次握手(C—>S)
TCP连接请求,告诉服务器我要和你建立连接
第二次握手(S—>C)
TCP授予连接,告诉客户端准了,来吧
第三次握手(C—>S)
TCP确认连接,告诉服务器,来就来

四次挥手断开连接
第一次挥手(C—>S)
告诉服务器我数据发完了,你如果还有消息就快发完
第二次挥手(S—>C)
告诉客户端我知道了,请继续等待我的消息
第三次挥手(S—>C)
告诉客户端消息发完了,你可以正式断开连接了
第四次挥手(C—>S)
告诉服务器我等一会如果没有收到你回复我就断开了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvkZLSMb-1655035916950)(https://cdn.jsdelivr.net/gh/liuyingbor/imgHosting/img/image-20220516183152714.png)]
TCP有了这三次握手,四次挥手的规则,可以提供可靠的服务,通过TCP连接传送的数据,可以做到无差错、不丢失、不重复、且按顺序到达,它让服务器和客户端之间的数据传递变得更加的可靠
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:
更效率,传输更快,资源消耗更少
适合对实时性要求高的使用场景
比如:直播,即时通讯,游戏开发等等
边栏推荐
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
- Rk3568 Development Notes (III): update source, installation of network tools, serial port debugging, network connection, file transfer, installation of vscode and Samba shared services for rk3568 virt
- Getting to know Vxe table (I)
- Hardware development notes (III): basic process of hardware development, making a USB to RS232 module (II): design principle diagram Library
- Hardware development notes (V): basic process of hardware development, making a USB to RS232 module (IV): creating con connection device package and associating principle element devices
- Native applet application applet - publishing process
- Prediction of enzyme activity parameters by deep learning construction of enzyme binding model
- 關於 麒麟系統開發錯誤“fatal error: GL/gl.h: No such file or directory“ 的解决方法
- It is said that the design of high concurrency system is not difficult at all!
- Enterprise wechat built-in application H5 development record-1
猜你喜欢

上海交通大学:Kerong Wang | 基于离线强化学习的自举Transformer

windows sql server 如何卸载干净?

211高校神级硕士论文刷屏!75行字错了20行!学校回应:导师停招...

Mongo uses too much memory and is automatically shut down by the system

H5 wechat authorized login (wechat authorized login of the uniapp web version)

有一说一,高并发系统设计其实一点都不难!

Notes on the development of raspberry pie (16): Raspberry pie 4b+ install MariaDB database (MySQL open source branch) and test basic operations

#CISSP认证2021年教材 OSG 第9版 增(改)知识点:与 第8版 的目录对比

关于 QtCreator的设计器QtDesigner完全无法正常拽托控件 的解决方法

软件测试 答疑篇
随机推荐
Kirin System Development Notes (V): making and installing the startup USB flash disk of the Kirin system, installing the Kirin system on the physical machine, and building a Qt development environment
Notes on the development of raspberry pie (17): QT multi-user connection operation on raspberry pie 4b+ MySQL database synchronization (pessimistic lock of single data)
An example of data format conversion in MySQL
Use of three values of pointer events
Qt文档阅读笔记-staticMetaObject解析与实例
libra白皮书
关于 QtCreator的设计器QtDesigner完全无法正常拽托控件 的解决方法
树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务
Sigir2022 | modélisation des préférences des utilisateurs dans le système de recommandation dialogique
VB screen resolution setting and acquisition_ hawkol_ Sina blog
软件项目律师尽职调查白皮书-全文19页,请与作者联系
逆向调试入门-基础知识
Online text batch inversion by line tool
Matplotlib drawing and displaying Chinese
硬件开发笔记(五):硬件开发基本流程,制作一个USB转RS232的模块(四):创建CON连接器件封装并关联原理图元器件
Danfoss inverter maintenance vlt5000/vlt6000/vlt8000
Precautions for using keep alive
Solutions to the problem that Allegro's pcbeditor is often stuck or busy in use
[understanding pointer] advanced level of pointer