数据包的跨层封装

首先,我们先简单地分析一下数据包的组成结构:
如图
在这里插入图片描述
数据包简略地分为以下几层:
二层:封装MAC地址(数据链路层)
三层:封装IP地址 — 表明源IP和目标IP,主要用于路由器之间的信息转发(网络层)
四层:封装TCP、UDP端口号,通过端口号表示访问的服务(传输层)
五层:封装DATA数据,即要传输的数据信息(应用层)

跨层封装

接下来就开始讲跨层封装
跨层封装— 应用层数据直接封装于3层报头或者2层报头
数据包的5层应用层包含了数据包要传输的信息所以一定有,后面的可以跳,例如跨过4层,只有2,3,5层,或者跨过3,4层,只有2,5层

首先,我们要知道的是,并不是所有的协议都可以进行跨层封装的,正常应用程序封装的数据流量不做跨层处理
因此跨层封装的意义在于更快的完成服务型协议间的沟通计算

那么有哪些协议可以跨层封装呢?

封装3层报头:同一广播域内的服务型协议 — ARP/OSPF… 使用的设备均为3层设备
封装2层报头:同一交换网络内的二层设备服务型协议 — STP
还有一个可以跨越网段的协议 — ICMP
这些都不是实际传输的应用,而是辅助型的协议,只是为了让网络可以通,不需要实质性的信息
可以封装的原因:
1、OSPF是路由间建邻用的,而路由器是三层设备,三层通讯设备如果携带4层,封装和解封装会变慢,且路由器是三层设备,本身就只识别三层报头
2、ARP是广播域里面获取对方MAC的,而这个行为仅限于在同一个广播域
3、ICMP的ping虽然可以跨网段,但是只是个测试型协议,不需要携带图或表等信息

那么3层或者4层都被跳过了,数据包缺少了一两层,该怎么解决?

这个简单,我们只要将该层主要的信息分片然后放入报头中就行了
跨层封装到3层报头时,IPV4报头可以对数据进行分片,之后每片内容填充于报头中,携带到目的地;

3层报头中还存在协议号,用于对标后方所封装的协议0-255,6代表TCP/17代表UDP;

其余数字每一个皆对应一个固定的跨层封装协议

相关推荐

  1. 网络编程:数据封装----libnet库

    2024-07-18 10:12:06       27 阅读
  2. easyexcel解析多行数据

    2024-07-18 10:12:06       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 10:12:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 10:12:06       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 10:12:06       58 阅读
  4. Python语言-面向对象

    2024-07-18 10:12:06       69 阅读

热门阅读

  1. js获取和设置url参数

    2024-07-18 10:12:06       21 阅读
  2. ISO 26262在汽车软件开发中的作用

    2024-07-18 10:12:06       22 阅读
  3. 用selenium爬取动态网页

    2024-07-18 10:12:06       23 阅读
  4. ubuntu如何彻底卸载android studio?

    2024-07-18 10:12:06       23 阅读
  5. liosam复现

    2024-07-18 10:12:06       22 阅读
  6. iOS面试题

    2024-07-18 10:12:06       17 阅读
  7. ios CCUIAlertActivityView.m

    2024-07-18 10:12:06       23 阅读
  8. Apache Sqoop

    2024-07-18 10:12:06       20 阅读
  9. 数据库day2

    2024-07-18 10:12:06       18 阅读