欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > Socket通信的基本概述

Socket通信的基本概述

2025/4/19 17:10:34 来源:https://blog.csdn.net/2401_85565442/article/details/147304652  浏览:    关键词:Socket通信的基本概述
  1. Socket通信的基本概述
  • 基本概念

进程间实现数据传输的方式有很多,比如管道、信号、消息队列、信号量集、共享内存等,这些方案可以实现同一台主机中的多个不同进程间的数据传输。

思考:如果现在需要两台主机间的进程实现数据传输,请问可以使用上述方式实现吗?如果不能,请问有哪种方式可以实现?

回答:不可以,因为同一台主机中的实现进程间通信的方式都是需要使用系统资源的,而两台不同的主机的系统资源是不共享的。

linux系统的设计思想是“一切皆文件”,linux的文件类型分为7类(- p c b d s l),其中的s指的是socket,在linux下是一种特殊的文件,通常被称为套接字文件,socket在Linux系统中指的是一种特殊接口,该接口可以实现互联网中不同主机上的应用进程之间进行双向通信。socket的中文翻译具有“插座/插孔”的含义,而插座需要选择合适的线才可以正常连通,如果把插座理解为互联网中的主机,则合适的线指的是网络协议。

socket接口一般采用的是C/S架构,C指的是客户端(client),S指的是服务器(server)。利用该接口可以实现支持多个客户端对同一个服务器进行并发访问,也可以实现一对一通信。

  • 通信地址

思考:现实世界中很多主机都会连接到互联网中,并且这些主机可能都会使用的相同网络协议,那么作为主机A而言,如何可以精确查找到想要通信的主机B,而不会出现误发?

回答:想要实现双方主机的通信,则需要知道双方主机的通信地址,在互联网中的每台主机都有一个地址,这个地址被称为IP地址,IP地址(Internet Protocol Address)就是给每个连接在互联网中的主机或者其他设备分配的一个在全世界唯一的的标识符,而IP地址是由IP协议(Internet Protocol)提供的一种统一的地址格式。

  • 历史由来

IP协议中规定IP地址的格式为:高阶位、网络编号、本地地址组成。其中网络编号是用于标识互联网中的不同网络,而本地地址是用于标识处于该网络的唯一主机。IP地址中用网络编号来标识全世界不同网络的原因是因为互联网采用的是分布式模型,该模型可以避免由于战争等因素导致网络瘫痪。

二战结束之后,在1946年英国首相丘吉尔发表“铁幕演说”,在1947年美国总统杜鲁门提出“杜鲁门主义”,随后美苏进行了长达47年的冷战。

1957年,前苏联发射世界第一颗人造地球卫星,冷战时期美国为了防止前苏联对本土进行核打击,所以1958年2月,由美国国会拨款,在美国国防部的五角大楼建立特殊部门“高级研究计划署(Advanced Research Project Agency)”,简称"阿帕"(ARPA)。该部门的核心机构之一是信息处理(IPTO Information Processing Techniques Office),一直在关注电脑图形、网络通讯、超级计算机等研究课题。

  • 协议标准

互联网中除了IP协议之外还存在很多网络协议,这些网络协议的标准可以通过RFC官网进行下载,官网地址:https://www.rfc-editor.org/ ,下载协议标准的操作流程如下所示:

RFC(Request for Comments)指的是征求意见稿,是由互联网工程任务组(简称IETF,是世界上唯一的国际性、非政府、开放性的互联网技术开发和标准制定组织)发布的一系列备忘录和草案,其中包含关于互联网的重要文字资料。

  • 地址分类

IP协议的标准下载完成后,需要阅读标准中的相关内容来了解IP协议的使用规则,如下图:

通过IP协议的数据报格式可以看到,数据报中需要包含源地址和目的地址,并且源地址和目的地址的长度都是固定为32bit。

可以看到,IP协议中把网络地址主要分为三类,分别是A类地址、B类地址、C类地址,对于IP地址范围的划分需要阅读相关标准,标准如下:

通过标准可以知道,IP协议提供的IP地址是32bit的,并且把32bit分为4个段,每个段由8bit组成,每个段的值指定为十进制数(也就是范围是0~255),并且每个段使用英文句号分隔,一般把这种表示方式称为“点分十进制”。

打开计算机的网络设置,可以看到IPv4地址就是采用点分十进制表示,并且可以选择手动配置IP地址或通过动态主机配置协议(DHCP)自动分配IP,如下图:

  • 地址类型

思考:标准中可以看到IP地址的组成分为三部分:高阶位、网络编号、本地地址,请问网络编号和本地地址的区别是什么?

回答:IP地址中的高阶位用于区分IP地址的类型,由于一个IP地址是32bit的,并且分为4个字段,每个字段8bit(1字节)。而A类地址的第一个字节最高位固定是0,B类地址的第一个字节最高位固定是10,C类地址的第一个字节的最高位固定是110。

另外,通过标准可以看到,IP地址的网络编号中其实就包含了固定的高阶位,所以可以把IP地址的组成分为两部分:高阶位和网络编号看作是一部分,本地地址看作是另一部分即可!

  1. A类地址

可以看到A类地址的网络编号占7bit(范围是0~127),也就是说理论上支持128个A类网络,而每个A类网络中IP地址的本地地址占3个字段(24bit),所以每个A类网络理论上可以连接224个主机,也就是说A类网络的IP地址的范围是 0.0.0.0 ~ 127.255.255.255。

注意:但是存在两种特殊情况:网络编号为0 以及 网络编号为127,这两个编号属于保留:

  1. 网络编号位数全部为0

在IP协议标准关于IP地址格式的描述中可以看到,如果IP地址的网络编号的值为0,则表示本网络。

  1. 网络编号位数全部为1

IP协议中把网络编号为127的IP地址称为环回地址(LoopBack),环回的意思是把消息原样送回给发送者,也就是说IP地址范围是127.xxx.xxx.xxx的地址其实都属于环回地址,如果此时主机号是1,也就是IP地址如果是127.0.0.1,则表示本地环回地址,也就是主机本身。

Linux系统中可以通过shell命令: ifconfig 来查看主机的网络配置,其中就可以看到本地环回地址:

用户可以通过ping命令来对本地环回地址进行测试,如果可以联通,则表示主机的网卡和主机安装的IP协议都没问题,如下图:

根据上述内容可以得到结论:A类网络实际最多支持126个,也就是A类地址的网络编号范围是1~126,也就是说A类网络的IP地址的范围是 1.0.0.0 ~ 126.255.255.255。

掌握了IP地址中的网络编号的规则之后,大家还需要了解一下IP地址中的本地地址的分配规则,本地地址的作用是标识处于某个网络中的唯一主机。对于A类地址而言,本地编号采用24bit,所以每个A类网络理论上可以连接224个主机,但是也存在两种特殊情况,如下:

  1. 本地地址位数全部为0

注意:当IP地址的网络编号范围在1~126,此时如果IP地址的本地地址的24bit都为0时,此时只能区分出当前主机处在哪个网络,也就是只可以得到网络地址(也可以称为网段)。

举个例子:IP地址如果是 5.0.0.0,此时只能知道网络地址,该地址一般会记录在路由器中。

  1. 本地地址位数全部为1

注意:当IP地址的网络编号范围在1~126,此时如果IP地址的本地地址的24bit都为1时,此时相当于选择了处于该网络的所有主机,所以一般把该地址称为广播地址。

举个例子:IP地址如果是 5.255.255.255,此时表示选择所有在该网络中的主机,如果把该地址作为目的地址,则向该地址发送数据包就相当于向处于该网络中的所有主机发送数据包。

  1. B类地址

可以看到IP协议标准中对B类地址的网络编号分配了16bit,其中最高的2bit固定为10,所以按照点分十进制的表示方式,B类网络的IP地址的网络编号范围是128.0 ~ 191.255,也就是理论上最多支持16384个B类网络。

注意:由于B类网络的网络编号最高2bit固定是10,所以网络编号就不存在16bit全部为0和16bit全部为1的情况,所以实际支持的B类网络就是16384个。

对于B类网络而言,IP地址的本地地址占16bit,所以每个B类网络理论上支持的主机数量为216个,也就是65536台。所以B类网络的IP地址范围是128.0.0.0 ~ 191.255.255.255。

但是有特殊情况:本地地址位数全部为0(网络地址) 和 本地地址位数全部为1(广播地址),所以每个B类网络实际上支持的最大主机数量是65536 - 2 = 65534个。

  1. C类地址

可以看到IP协议中对C类地址的网络编号分配了24bit,其中最高的3bit固定为110,所以按照点分十进制的表示方式,C类网络的IP地址的网络编号范围是192.0.0 ~ 223.255.255。

也就是说理论上支持2097152个C类网络,由于网络编号的最高是固定为110,所以不存在网络编号全部位数为0和全部位数为1的情况,所以实际上支持2097152个C类网络!

由于C类网络只分配了8bit的本地地址,所以意味着每个C类网络理论上可以支持256台主机。

但是有特殊情况:本地地址位数全部为0(网络地址) 和 本地地址位数全部为1(广播地址),所以每个C类网络实际上支持的最大主机数量是256 - 2 = 254个。

思考:A类地址的网络编号是0. ~ 127. ,B类地址的网络编号是128.0 ~ 191.255,C类地址的网络编号是192.0.0 ~ 223.255.255,请问224.0.0 ~ 255.255.255的网络编号为何不用?

回答:其实对于IP地址而言,还存在D类地址和E类地址,只不过这两类地址不用于标识主机,因为这两类地址没有分配本地地址,也就是这两类地址的32bit全部分配给网络编号。

  • 子网掩码

思考:如果知道双方主机的IP地址,请问应该如何判断双方主机是否处于同一个网络呢?

回答:想要知道双方主机是否处于同一个网络,则只需要知道双方主机的网络编号是否一致即可,但是主机的IP地址是两部分(网络编号+本地地址)组成的,所以可以使用子网掩码方便的得到主机IP地址的网络编号。

当然,由于IP地址分为A类地址、B类地址、C类地址,并且这三类地址的网络编号的位数不同,所以这三类地址的子网掩码也不同。

比如C类地址的子网掩码默认是255.255.255.0,假设主机的IP地址是192.168.5.120,则只需要把主机的IP地址和子网掩码进行位与&操作,可得到主机的网络编号为192.168.5,然后就可以确定主机的所在网络,也可以称为主机的网段。

后期为了简化IP地址,提出无分类地址方案CIDR,该方案把IP地址分为两部分,网络编号和主机编号,表示形式为a.b.c.d/x,x指的是前x位是网络编号,所以x的范围是0~32,比如把IP地址写为192.168.5.120/24,/24就是指该IP地址的网络编号有24bit,主机编号有8bit,所以就相当于子网掩码是255.255.255.0。

[

  • 网络模型

思考:如果双方可以进行通信,请问数据包是直接通过IP协议进行传输吗?如果不是,请问通过什么协议传输?

回答:IP协议并不能直接传输数据包,数据包的传输需要使用多种协议实现,因为互联网网络是分层结构的,每一层都制定了很多规则,形成了相关的协议标准,其实和设计软件架构的思想类似,目的是要具有高内聚、低耦合、可复用、可扩展等特性。

举个例子:如果没有分层,当一个业务或协议需要改变时,则只能针对整个系统做修改或扩展。而分层之后,便可以很方便的把不同功能的模块抽离出来,修改对应的模块即可。

比如1974年,IBM公司提出世界第一个网络体系结构SNA(Systems Network Architecture)。

不久后,其他一些公司也相继推出本公司的具有不同名称的体系结构。不同的网络体系结构出现后,使用同一个公司生产的各种设备都能够很容易地互连成网。这种情况显然有利于一个公司垄断市场。另外,由于网络体系结构的不同,所以不同公司的设备很难互相连通。

然而,全球经济的发展使得不同网络体系结构的用户迫切要求能够互相交换信息。所以为了使不同体系结构的计算机网络都能互连,国际标准化组织ISO于1977年成立了专门机构研究该问题。

他们提出了一个试图使各种计算机在世界范围内互连成网的标准框架,这就是著名的开放系统互连基本参考模型OSI/RM(Open Systems Interconnection Reference Model),简称为OSI模型。

然而到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但由于基于TCP/IP模型的互联网已抢先在全球相当大的范围成功地运行了,而与此同时却几乎找不到厂家生产出符合OSI标准的商用产品。

也就是说OSI模型只获得了一些理论研究的成果,但在市场化方面则事与愿违地失败了,属于概念性模型。TCP/IP模型经过市场验证并且简化了OSI模型,属于实践类模型,所以目前互联网都是基于TCP/IP模型设计的。

可以看到,TCP/IP模型采用4层设计,每一层都制定了很多协议,这些协议被统一称为TCP/IP协议栈。

不同网络中的主机实现互相通信就需要依赖这些协议实现,数据在网络中传输时就会经过这些层,并且数据会在每一层进行封包处理,然后传输到对方主机的过程中再进行拆包处理,这样对方主机就可以得到原始数据,如下图所示:

  1. 物理层

网络通信的本质就是把一台计算机的数据转移到另一台计算机上,但是数据传输是需要传输介质的,物理层中常见的传输介质有架空明线、电缆、光纤、无线信道等。常见的物理层相关的硬件设备一般包含集线器、中继器等。

  1. 集线器(Hub)指的是将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。集线器发送数据时是没有针对性的,而是采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。

  1. 中继器(RP repeater)是工作在物理层上的连接设备。适用于完全相同的两个网络的互连,主要功能是通过对数据信号的重新发送或者转发,来扩大网络传输的距离。

注意:传输介质其实不属于物理层,而是属于物理层之下,因为传输介质不知道传输的信号表示什么含义,所以物理层就规定了物理设备的标准,比如网线的接口类型、光纤的接口类型、设备的传输速率等,这些设备可以把数据通过传输介质进行传输,比如光纤通信中发送方通过光发送机会把电信号转换为光信号传输,接收方通过光接收机把接收到的光信号再转换电信号。

这些传输介质把信息以比特流的形式进行传输,物理设备需要根据对应的物理标准进行设计,比如网线的接口类型以及网线内部线缆的顺序,常用网线标准有T568A和T568B标准,如:

思考:对物理层而言,数据的单位是比特(bit),那请问物理层设备对比特流的传输速率是多少?

回答:传输速率是指单位时间内可以传输的数据量,一般有两种表示形式:波特率和比特率。

  • 波特率

波特率也称为码元传输速率,指的是单位时间内数字通信系统传输的码元个数(脉冲个数或者信号变化的次数),波特率的单位是波特(baud),码元可以采用二进制,也可以采用其他进制表示。

  • 比特率

比特率也称为信息传输速率,指的是单位时间内数字通信系统传输的二进制码元的个数,比特率的单位是bit/s。

当码元为二进制时,可以理解为波特率和波特率是相等的,但是二进制码元只能表示两种状态,如果想要表示多种状态,比如可以采用十六进制码元,这样传输数据率就可以大大提高。

对于物理层而言掌握4个特性,分别是:机械特性、电气特性、功能特性、规程特性,如下:

  1. 机械特性:指明接口的形状、尺寸、引线数目和排列等。
  2. 电气特性:指的是电压的范围,也就是规定用什么样的信号表示电压0和1。
  3. 功能特性:接口部件的信号线(数据线、控制线、定时线等)的用途。
  4. 规程特性:物理线路上对不同功能的各种可能事件的出现顺序,即时序关系。

练习:

练习:

练习:

练习:

  1. 数据链路层
  • 基本概念

数据链路层在物理层所提供服务的基础上向网络层提供服务。也就是将原始的、有差错的物理链路改进成逻辑上无差错的数据链路,从而向网络层提供高质量的服务。

  1. 物理链路(物理线路):是由传输介质与设备组成的。原始的物理传输线路是指没有采用高层差错控制的基本的物理传输介质与设备。
  1. 数据链路(逻辑线路):在一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路,从数据发送点到数据接收点所经过的传输途径。

也就是说,数据链路层是对物理层传输的比特流进行纠错检查并将比特流转换为固定格式的数据,方便网络层进行路由和转发。

  • 帧的组成

思考:物理层传输的都是比特流,假设信息采用二进制码元传输,并且波特率设置为9600bps,如果单位时间内主机A通过物理层向主机B传输了9600个比特数,请问主机B如何区分单位时间内收到的数据具体表示什么含义?

回答:为了方便对比特流进行转发和纠错检查,所以需要把比特流按照某种规则转换为有意义的数据块,这样就能以数据块为单位进行传输,数据链路层中把数据块称为帧(Frame)。

如果想要把比特流转换为n个数据帧,那就要规定要一帧数据的长度,但是如果只规定好数据帧长度,如果物理层传输比特流的过程中出现了异常导致缺失了一些比特,这样就无法知道到底是哪个位置出现了问题,也就没有办法把缺失的比特重新传输,所以也要规定好一帧数据的开始和结束。

比如在数据链路层中的点对点协议(Point to Point Protocol,也称为PPP)标准中就规定了数据帧的格式,如下:

  • 传输单元

另外,数据链路层除了PPP协议之外,还存在其他协议,比如以太网协议等,不同的协议中数据帧的格式也不相同,所以数据帧的长度也不统一,为了防止数据帧过大,数据链路层就对数据帧的大小做出约束,就提出最大传输单元的概念。

最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。不同类型网络的数据帧长度大多数都有一个上限。

MTU以字节为单位,如果MTU过大,在碰到路由器时会被拒绝转发,因为它不能处理过大的包。如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。大部分操作系统会提供给用户一个默认值,该值一般对用户是比较合适的。

  • 相关设备

随着局域网的普及和发展,往往需要将多个局域网用一些中间设备连接起来实现局域网之间的通信,这就是局域网的扩展。这里主要是在物理层和数据链路层对局域网进行扩展。

物理层拓展局域网的硬件设备是中继器和集线器,但是物理层无法把多个不同的局域网进行互联,所以数据链路层拓展局域网的硬件设备是交换机和网桥,交换机其实属于多端口的网桥,交换机的每个端口都可以直接连接集线器或者主机,并且一般采用全双工方式通信。

交换机和网桥都是通过网卡设备的MAC地址进行帧的发送/接收,比如交换机检测到从某端口进入的帧的源MAC地址和目的MAC地址,然后与系统内部的动态查找表进行比较,若数据报的MAC地址不在查找表中,则将该地址加入查找表中,并将数据报发送给相应的目的端口。

  1. 网络层
  • 基本概念

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。所以网络层的主要功能就包含了路由和转发,把数据包发送给互联在一起的不同网络中的主机。

全世界存在很多不同的网络,为了使这些不同的网络互联在一起,并且可以正常通信,那就需要制定标准协议,和网络层相关的协议有很多,其中IP协议就是较为熟知的一种。另外,为了让不同的网络进行互联,就必须使用中继设备,和网络层相关的硬件设备就是路由器!!!

路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,比如某个局域网使用的以太网协议,或者因特网中使用的TCP/IP协议。

这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,反之,再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。

所以不管是OSI七层模型还是TCP/IP四层模型,实际负责传输数据报的是网络层而不是传输层!

  • 路由转发

只知道对方的IP地址是无法直接和对方主机通信的。通信的前提是双方主机处于同一个网络下,如果处于不同网络,则需要通过路由器进行数据包转发,直到找到对方主机所在的网络,然后再根据通信主机在该网络中的位置,把数据包发给该主机。

在路由器进行数据包转发时还需要利用路由算法进行路径规划,根据路由选择算法生成路由表,如果目标主机不在当前网络,就需要进行分组转发,转发需要转发表,转发表由路由表得到。

  • 相关协议

在网络层中最常用的协议是IP协议(Internet Protocol),上面学习的IP地址的分类就是IP协议标准中规定好的。IP协议是互联网中最基本的网络协议之一,它负责在网络中传输数据包!!它是能使连接到互联网上的所有计算机网络实现相互通信的一套标准,该标准规定了计算机在互联网上进行通信时应当遵守的规则。

IP协议也是互联网通信的核心协议之一,它提供了一种灵活和可靠的机制,使数据可以在网络中正确地传输和路由。其他高层协议(如TCP、UDP)则依赖于IP协议来进行数据包的传输和路由。

阅读IP协议标准,可以知道IP协议是以数据块的形式把信息从源主机传输到目标主机,而源主机和目标主机都是通过固定长度的地址(IP地址)来进行区分。IP协议中把这种数据块称为数据报(IP Datagram),在IP协议中对数据报的格式进行了定义,数据报格式如下:

可以看到,IP数据报是存在数据报报首的,数据报报首包含了协议版本、报首长度等相关信息。如下:

可以看到,IP协议中的数据报的格式中有4bit位的字段用于描述协议的版本,IP协议标准中描述的是版本4,也被称为IPv4,协议版本6是另一种常用的IP协议版本,被称为IPv6。

思考:请问IPv4版本和IPv6版本有什么区别?以及配置网络时应该选择哪个版本进行设置?

回答:IPv4(Internet Protocol version 4)和IPv6(Internet Protocol version 6)是互联网上两种常用的IP(Internet Protocol)版本。

由于IPv4的地址长度是32位的,也就是它的地址空间有限,总共约42亿个可用地址。但是目前世界各个国家的电子设备加在一起可能早已超过这个数量,就会出现IP地址数量耗尽的情况,所以就设计了IPv6。

IPv6的地址长度更长(采用128位地址),因此具有极大的地址空间,总共约有340万亿亿亿亿个可用地址,就可以满足不断增长的互联网设备需求。

总体而言,IPv6的主要目标是解决IPv4地址空间枯竭问题,并引入更多的功能和改进。随着互联网的发展和设备的增加,IPv6逐渐成为主流的IP版本,但IPv4仍然广泛使用。

可以看到,IP协议标准中的数据报的组成部分中有4bit用于记录数据报的报首长度,但是单位是字(1个字等于32比特),而IP数据报分由固定报首和可选字段两部分组成,如果不设置可选字段,则固定报首的长度是20字节,也就是5个字,所以数据包报首的最小值是5(注意:单位是字!!!!)。

思考:如果用户选择使用可选内容,那请问可选字段的长度最大是多少?是如何进行计算的?

回答:数据报的报首长度占用4bit,所以最大值就是1111,也就是15,但是单位是字,也就是数据包报首的最大长度是15*4=60个字节,而其中有20个字节是固定的,所以可选字段的长度最多是40个字节。

  • 分片重组

由于网络中不同链路的最大传输单元(MTU,Maximum Transmission Unit)可能会不同,如果当数据包的大小超过某个链路的MTU(比如以太网的MTU最大为1500字节)时,IP协议会将数据包进行分片,以适应数据链路的最大传输单元。接收方的IP协议根据数据报首部中的标识和片偏移字段将分片的数据包进行重组,可以再次得到原始的数据包。

  1. 传输层
  • 基本概念

由于网络层协议是不可靠的,比如出现分组丢失、失序和重复等情况,所以就需要传输层为数据传输提供可靠的服务。

因为一台主机可能同时运行了多个进程,所以其他主机通过网络层转发过来的数据包到底交给当前主机的哪个进程来接收,就至关重要!对于传输层而言,主要负责为两台主机中的应用进程之间的通信提供服务,所以也称为端到端通信。

网络层只是根据网络地址将源主机发出的数据包传送到目的主机,而传输层则负责将数据可靠地传送到目的主机中的相应的端口。

  • 传输协议

传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol),其中UDP协议属于不可靠协议,TCP协议属于可靠协议。

这两种传输层协议都是可以实现把数据报文发送给主机中的指定端口,在计算机中通过端口号来进行区分。

端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务。

如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务等。在同一台计算机上端口号不能重复,否则就会产生端口号冲突等问题。端口号是短整型数据,长度为16位,如下:

保留端口 :0~1023,该范围端口号是提供给熟知的应用程序,方便和其他进程通信

注册端口 :1024~49151,使用这个范围的端口号应该向IANA组织登记,防止冲突

动态或私有端口 :49152~65535,只在客户进程运行时才动态分配,通信结束会自动释放

端口号由IANA (Internet Assigned Numbers Authority) 负责管理,可以通过相关网站来查阅端口号,网站地址:https://tool.oschina.net/commons?type=7

  1. 会话层

会话层是在发送方和接收方之间进行通信时创建、维持、之后终止或断开连接的地方,与电话通话有点相似。会话层定义了一种机制,允许发送方和接收方启动或停止请求会话,以及当双方发生拥塞时仍然能保持对话。

  1. 表示层

表示层从应用层接受数据,这些数据是以字符和数字的形式出现,表示层将这些字符和数据转换成机器能够理解的二进制数据,表示层的这个功能称为“翻译”功能,即把人类的语言翻译成机器能理解的语言。

在传输数据之前,表示层减少了用来表示原始数据的比特数,也就是将原始数据进行了压缩,数据压缩减少了数据原始数据所需的空间,随着文件大小的减少,它就可以在很短的时间内到达目的地,数据压缩对实时视频和音频传输有很大的帮助,以保持完整性的数据传输前的数据加密。

  1. 应用层

应用层直接和应用程序接口并提供常见的网络应用服务。应用层是直接为应用进程提供服务的。应用程序是指人们用于网络通信的软件程序。有些终端用户应用程序是网络感知程序,即这些程序实现应用层协议,并可直接与协议栈的较低层通信。电子邮件客户程序和 Web 浏览器就属于这种类型的应用程序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词