网络传输基本流程(封装,解包)+图解(同层直接通信的证明),报头分离问题,协议定位问题(协议多路复用),报文(概念+不同层的叫法) ,分用概念

本文详细解释了网络传输的基本流程,包括数据在应用层到链路层的封装过程,以及报文的结构和命名。重点讲解了报头的作用、解包机制,以及协议多路复用和与分用的区别,强调了在设计和实现通信时要考虑协议的定位和分离问题。
摘要由CSDN通过智能技术生成

目录

网络传输基本流程

引入

封装

过程梳理

图解

报文

报文名

解包

过程梳理

图解 -- 同层直接通信的证明

总结

解包时的报头分离问题

举例 -- 倒水

介绍

自底向上传输时的协议定位问题

介绍

解决方法

协议多路复用

介绍

优势 

和分用的区分


网络传输基本流程

引入

首先,我们明确一个前提,协议如何被体现,就是通过在数据前添加报头实现的 -- 协议的概念+本质+作用+最终表现形式,网络问题(技术+应用+解决的协议+存在原因),主机的对称性-CSDN博客

所以,每经过一层协议,就会添加一段报头

封装

过程梳理

我们根据信息传输的顺序自顶向下

首先是应用层

  • 因为我们一般都是使用某种软件来进行通信,而软件一般都会进行更新,但版本更新不是强制的,所以会存在新/老版本都要向服务器请求数据的情况
  • 那么为了不乱套(新老版本的提供的功能不同,两者是有差异的),就肯定会为它加上一个版本字段,确保不同版本的软件能够正确地解析和处理收到的数据
  • 而这个字段,正是在应用层的协议
  • 所以数据到了应用层后,会添加应用层协议的报头
  • 该报头内就会有版本信息

然后来到传输层,该层用来保证可靠性

  • 这个可靠性不仅仅保证数据成功运输,也包括信息的发送顺序等等(因为顺序乱了,意思就完全不一样了)
  • 比如:
  • 所以,协议会定义一个序号,用于为信息排序
  • 当数据来到传输层,依然会添加该层协议的报头
  • 报头内包含一系列字段,其中就有序号

同理,当数据来到网络层时(他解决主机定位问题)

  • 数据中依然会继续添加该层协议的报头
  • 报头内包括了自己的身份,目标主机是哪个等信息

链路层也是一样的

图解

  • 每层新添加的报头都在最外侧
  • 到达每层的数据(也叫做报文)都不一样

报文

指在网络中传输的数据单元,报文=报头+有效载荷

  • 注意,这个报头仅仅是当前层协议的报头,剩下的数据就是有效载荷
  • 有效载荷每经历一层,就会增加字段,增加的恰好是上一层添加的报头:
报文名

每一层有不同的报文叫法

  • 应用层 -- 请求和响应
  • 传输层的报文-- 数据段/包
  • 网络层 -- 数据报
  • 链路层 -- 数据帧

完成了这四层后,也就完成了封装的过程(将数据一层一层用报头包裹在里面)

解包

过程梳理

当我们将报文发送给对方主机后,对方主机就开始自底向上传输

  • 恰好,报头可以被一层一层地解析
  • 从图中可以看到,我们最外层的协议报头,恰好和[在对方主机中遇到的第一层协议]对应上了
  • 又因为,这段报文在链路层就已经是二进制序列了,所以指针可以指向这块内存
  • 不仅如此,我们还可以通过指针的强制类型转换,精准地指向该层的协议报头
  • 剩下的部分,就是有效载荷,而有效载荷的开头,就是上一层的协议报头
  • 之后将有效载荷交给自己的上一层
  • 因为各层协议都是匹配的,重复上述过程,就可以准确地解码出每层对应的报头(之前一层一层包起来,现在再一层一层解开)

图解 -- 同层直接通信的证明

注意看,同层之间,发送的和收到的是同样的报文

这不就相当于同层之间在进行直接通信吗?

所以,也就证明了 --  在逻辑上,每层之间根据约定在进行通信

和封装对应的,以上过程就被叫做解包 

总结

所以,通信的过程就是不断进行封装和解包

解包时的报头分离问题

举例 -- 倒水

如果我们要把多次倒入的水,再分离出来,这是很难的事情

但如果我们将每次倒入的水都用容器装起来,再将容器扔进去,再想分离就很简单了

介绍

而在网络通信中的封装和分离过程也是同理

  • 在封装的时候,就应该考虑之后该如何分离

比如:

  • 协议里就规定好报头的大小 / 记录当前报头大小和报文大小

自底向上传输时的协议定位问题

介绍

  • 我们经过协议封装后,得到的报头是特定协议的(具体选择哪个协议我们不用管)
  • 但是将报文发送给对方主机后,下一层如何知道交给上一层的哪个协议呢
  • 毕竟每一层的协议有很多,但我们必须交给封装数据的那个协议(必须要一一对应才能进行通信)

解决方法

所以,协议里还需要记录当前协议是谁

  • 也就是在报头里增加一个标识字段,该字段指示上层协议的类型
  • 从上到下传输时,下一层记录是上一层的哪一个协议交给我的
  • 然后从下到上传输时,该层解析自己的报头后,就可以知道自己该交给谁了

而这个协议标识(也就是决定将有效荷载交给上层哪个协议的能力),是实现协议多路复用的关键

协议多路复用

介绍

指在通信过程中,通过使用不同的协议标识来区分和识别多个上层协议的技术(主要在同一协议层上使用,一般是传输层)

  • 确保了在传输中的数据,能够被正确地解析和交付给相应的协议进行处理

优势 

  • 可以同时支持多种上层协议,使得网络更加灵活和可扩展
  • 不同的应用和服务可以使用不同的协议,而这些协议可以在同一通信通道上共存,通过协议标识字段确保数据被正确地路由和处理

和分用的区分

分用是一种更广泛的概念,用于描述在同一通信通道上同时传输多个信号或数据流的技术

  • 分用可以包括时分复用(TDM)、频分复用(FDM)等技术,不仅仅局限于协议层
  • 它应用于各种通信系统,包括有线通信、无线通信和计算机网络等,以提高通信资源的利用率

在时分复用中

  • 通信通道的时间被划分为若干个时隙,每个时隙分配给不同的数据流
  • 每个数据流在分配给它的时隙中传输数据
  • 这样,多个数据流可以按照时间轮流地共享通信通道

频分复用

  • 在频分复用中,通信频谱被划分为多个频带,每个频带分配给不同的数据流
  • ''每个数据流在分配给它的频带中传输数据
  • 这样,多个数据流可以在频谱上同时传输,每个数据流占据不同的频带
  • 36
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值