买模板做网站,成全视频在线直播观看,青岛学网站建设的学校,开发一个小网站多少钱目录
网络传输基本流程
引入
封装
过程梳理
图解
报文
解包
过程梳理
图解 -- 同层直接通信的证明
总结
解包时的报头分离问题
举例 -- 倒水
介绍
自底向上传输时的协议定位问题
介绍
解决方法
协议多路复用
介绍
优势 网络传输基本流程 引入 首先,我们明确…目录
网络传输基本流程
引入
封装
过程梳理
图解
报文
解包
过程梳理
图解 -- 同层直接通信的证明
总结
解包时的报头分离问题
举例 -- 倒水
介绍
自底向上传输时的协议定位问题
介绍
解决方法
协议多路复用
介绍
优势 网络传输基本流程 引入 首先,我们明确一个前提,协议如何被体现,就是通过在数据前添加报头实现的 -- 协议的概念本质作用最终表现形式,网络问题(技术应用解决的协议存在原因),主机的对称性-CSDN博客 所以,每经过一层协议,就会添加一段报头 封装
过程梳理
我们根据信息传输的顺序自顶向下看 首先是应用层 因为我们一般都是使用某种软件来进行通信,而软件一般都会进行更新,但版本更新不是强制的,所以会存在新/老版本都要向服务器请求数据的情况那么为了不乱套(新老版本的提供的功能不同,两者是有差异的),就肯定会为它加上一个版本字段,确保不同版本的软件能够正确地解析和处理收到的数据而这个字段,正是在应用层的协议中所以数据到了应用层后,会添加应用层协议的报头该报头内就会有版本信息 然后来到传输层,该层用来保证可靠性 这个可靠性不仅仅保证数据成功运输,也包括信息的发送顺序等等(因为顺序乱了,意思就完全不一样了)比如:所以,协议会定义一个序号,用于为信息排序当数据来到传输层,依然会添加该层协议的报头报头内包含一系列字段,其中就有序号 同理,当数据来到网络层时(他解决主机定位问题) 数据中依然会继续添加该层协议的报头报头内包括了自己的身份,目标主机是哪个等信息 链路层也是一样的 图解 每层新添加的报头都在最外侧到达每层的数据(也叫做报文)都不一样 报文 指在网络中传输的数据单元,报文报头有效载荷 注意,这个报头仅仅是当前层协议的报头,剩下的数据就是有效载荷有效载荷每经历一层,就会增加字段,增加的恰好是上一层添加的报头: 完成了这四层后,也就完成了封装的过程(将数据一层一层用报头包裹在里面) 解包 过程梳理 当我们将报文发送给对方主机后,对方主机就开始自底向上传输 恰好,报头可以被一层一层地解析从图中可以看到,我们最外层的协议报头,恰好和[在对方主机中遇到的第一层协议]对应上了又因为,这段报文在链路层就已经是二进制序列了,所以指针可以指向这块内存不仅如此,我们还可以通过指针的强制类型转换,精准地指向该层的协议报头剩下的部分,就是有效载荷,而有效载荷的开头,就是上一层的协议报头之后将有效载荷交给自己的上一层因为各层协议都是匹配的,重复上述过程,就可以准确地解码出每层对应的报头(之前一层一层包起来,现在再一层一层解开) 图解 -- 同层直接通信的证明 注意看,同层之间,发送的和收到的是同样的报文 这不就相当于同层之间在进行直接通信吗? 所以,也就证明了 -- 在逻辑上,每层之间根据约定在进行通信 和封装对应的,以上过程就被叫做解包 总结 所以,通信的过程就是不断进行封装和解包 解包时的报头分离问题 举例 -- 倒水 如果我们要把多次倒入的水,再分离出来,这是很难的事情 但如果我们将每次倒入的水都用容器装起来,再将容器扔进去,再想分离就很简单了 介绍 而在网络通信中的封装和分离过程也是同理 在封装的时候,就应该考虑之后该如何分离 比如: 协议里就规定好报头的大小 / 记录当前报头大小和报文大小 自底向上传输时的协议定位问题 介绍 我们经过协议封装后,得到的报头是特定协议的(具体选择哪个协议我们不用管)但是将报文发送给对方主机后,下一层如何知道交给上一层的哪个协议呢毕竟每一层的协议有很多,但我们必须交给封装数据的那个协议(必须要一一对应才能进行通信) 解决方法 所以,协议里还需要记录当前协议是谁 也就是在报头里增加一个标识字段该字段指示上层协议的类型从上到下传输时,下一层记录是上一层的哪一个协议交给我的然后从下到上传输时,该层解析自己的报头后,就可以知道自己该交给谁了 而这个协议标识(也就是决定将有效荷载交给上层哪个协议的能力),是实现协议多路复用的关键
协议多路复用 介绍 指在通信过程中通过使用不同的协议标识来区分和识别多个上层协议的技术 确保了在传输中的数据,能够被正确地解析和交付给相应的协议进行处理 优势 可以同时支持多种上层协议使得网络更加灵活和可扩展不同的应用和服务可以使用不同的协议而这些协议可以在同一通信通道上共存通过协议标识字段确保数据被正确地路由和处理