网络编程——数据报的组装和拆解

news2024/11/25 22:24:54

数据包的组装和拆解

一、数据包在各个层之间的传输

在这里插入图片描述

二、各个层的封包格式

1、链路层封包格式

在这里插入图片描述

+------------------+------------------+----------------------+--------------------+---------------------+-----------------------------------+
| 目标MAC地址(6字节) | 源MAC地址(6字节) | 类型/长度字段(2字节) | 数据(46-1500字节) | 帧校验序列(4字节) | 没有数据填充(0-46字节) |
+------------------+------------------+----------------------+--------------------+---------------------+-----------------------------------+

目的地址:目标MAC地址(6字节),这是数据帧要发送到的目标设备的MAC地址。它唯一标识了数据帧的目的地。

源地址:源MAC地址(6字节), 这是数据帧的发送者的MAC地址。它唯一标识了数据帧的来源。

类型:类型/长度字段(2字节),确定以太网头后面跟的是哪个协议
0x0800 ip协议
0x0806 arp协议
0x0835 rarp协议

数据(46-1500字节): 这是实际要传递的数据,它的长度可以在46字节到1500字节之间。如果数据不足46字节,会被填充至46字节,确保帧的最小长度。

帧校验序列(4字节): 这是用于检测数据传输中可能发生的错误的冗余校验码。校验码可以检测数据在传输过程中是否发生了损坏。

没有数据填充(0-46字节): 如果数据字段的长度不足46字节,可能需要添加填充来保持帧的最小长度。

注意
1、IEEE802.2/802.3封装常用在无线
2、以太网封装常用在有线局域网

2、网络层封包格式(IPV4)

在这里插入图片描述

版本/头部长度: 这个字段包含IP协议版本号和IP头部的长度。版本通常是IPv4(4位),头部长度指示IP头部的字节数,通常为20字节,但可能会因选项字段的存在而变化。

服务类型: 这个字段用于指示数据包的服务质量和优先级。

总长度(2字节): 这个字段表示整个IP数据报的长度,包括头部和数据。

标识: 这个字段用于标识数据报的顺序和重组。

标志/片偏移: 这个字段包含分片数据报的标志位和数据片的偏移。

生存时间: 这个字段用于防止数据包在网络中永远循环,通过逐跳减少来实现。

协议: 这个字段表示传输层协议,例如TCP(6)、UDP(17)等。

校验和(2字节): 这个字段用于检测头部字段的错误。

源IP地址和目标IP地址(各4字节): 这些字段表示源和目标设备的IP地址。

可选项和填充(可选): 这个字段包含可选的IP选项,以及填充字段,以确保IP头部长度为32位的倍数。

数据: 这个字段是实际要传递的数据。

3、传输层封包格式(TCP和UDP)

①TCP封包格式:
在这里插入图片描述

源端口和目标端口(各2字节): 这些字段指示数据的源端口和目标端口。

序列号和确认号(各4字节): 这些字段用于TCP的流控制和确认机制。

首部长度/保留位: 首部长度字段指示TCP首部的长度,保留位用于未来的扩展。

控制标志(2字节): 这个字段包含TCP控制标志,如ACK、SYN、FIN等,用于管理连接状态和数据传输。

窗口大小(2字节): 这个字段表示接收方能够接受的数据量。

校验和(2字节): 这个字段用于校验TCP头部和数据的完整性。

紧急指针(2字节): 这个字段用于指示紧急数据的位置。

选项(可选): 这个字段包含可选的TCP选项,如窗口扩大因子、时间戳等。

数据: 这个字段是实际要传递的数据。

+----------------+----------------+----------------+----------------+
| 源端口(2字节)  | 目标端口(2字节) | 序列号(4字节)  | 确认号(4字节)  |
+----------------+----------------+----------------+----------------+
| 首部长度/保留位  | 控制标志(2字节) | 窗口大小(2字节)  | 校验和(2字节)  |
+----------------+----------------+----------------+----------------+
| 紧急指针(2字节) | 选项(可选)         | 数据(可变长度)   |
+----------------+----------------+----------------+----------------+

②UDP封包格式

在这里插入图片描述

+----------------+----------------+----------------+----------------+
| 源端口(2字节)  | 目标端口(2字节) | 长度(2字节)    | 校验和(2字节)  |
+----------------+----------------+----------------+----------------+
| 数据(可变长度)   |
+----------------+

源端口和目标端口(各2字节): 这些字段指示数据的源端口和目标端口。

长度(2字节): 这个字段表示UDP数据报的长度,包括头部和数据。

校验和(2字节): 这个字段用于校验UDP头部和数据的完整性。

数据: 这个字段是实际要传递的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/844937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chatgpt AI newbing作画,文字生成图 BingImageCreator 二次开发,对接wxbot

开源项目 https://github.com/acheong08/BingImageCreator 获取cookie信息 cookieStore.get("_U").then(result > console.log(result.value)) pip3 install --upgrade BingImageCreator import os import BingImageCreatoros.environ["http_proxy"]…

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)

概念与功能: webpack是前端项目工程化的具体解决方案。它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端JavaScript的兼容性、性能优化等强大的功能。 快速上手:隔行变色 -S实际是--save的简写,表示安装的第三方…

Mysql存储引擎InnoDB

一、存储引擎的简介 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。 1、InnoDB存储引擎 从MySQL5.5版本之后,默认内置存储引擎是InnoDB,主要特点有: (1)灾难恢…

分享21年电赛F题-智能送药小车-做题记录以及经验分享

这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …

Zabbix网络拓扑配置

一、简介 网络拓扑功能是一项非常重要的功能,它可以直观展示网络设备主机状态及端口传输速率等指标信息,帮助运维人员快速发现和定位故障问题;Zabbix同样配备了强大的网络拓扑功能,如何使用Zabbix拓扑图功能创建一个公司网络拓扑…

VMware Workstation及CentOS-7虚机安装

创建新的虚机: 选择安装软件(这里选的是桌面版,也可以根据实际情况进行选择) 等待检查软件依赖关系 选择安装位置,自主配置分区 ​​​​​​​ 创建一个普通用户 安装完成后重启 点击完成配置,进入登陆界面…

mysql 笔记(一)-mysql的架构原理

mysql体系结构 mysql Server 架构自顶向下大致可以分为网络连接层,服务层,存储引擎和系统文件层.体系架构图如下: 网络连接层提供与mysql服务器建立的支持.常见的java.c.python/.net ,它们通过各自API技术与mysql建立连接. 服务层是Mysql Server 的核心,主要包含系统管理和控…

linux Ubuntu 更新镜像源、安装sudo、nvtop、tmux

1.更换镜像源 vi ~/.pip/pip.conf在打开的文件中输入: pip.conf [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple按下:wq保存并退出。 2.安装nvtop 如果输入指令apt install nvtop报错: E: Unable to locate package nvtop 需要更新一下apt&a…

容灾备份服务器怎么样?

容灾备份服务器是一种用于保护信息系统的设备,它可以在系统出现故障时提供备用服务。容灾备份服务器通常包括两个部分:容灾和备份。容灾是指在遭遇灾害时能保证信息系统能正常运行,帮助企业实现业务连续性的目标。备份是为了应对灾难来临时造…

MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2

基本介绍 上篇文章我们讲解了使用FastAPIMemFire CloudLangChain进行GPT知识库开发的基本原理和关键路径的代码实现。目前完整的实现代码已经上传到了github,感兴趣的可以自己玩一下: https://github.com/MemFire-Cloud/memfirecloud-qa 目前代码主要…

了解JavaSpring

什么是Spring? Spring开发方向:分布式,微服务,网站 Spring技术(全家桶):Spring Framework、Spring boot、Spring Cloud Spring Framework(4.x) 是spring体系中最基础…

盛元广通基于信息平台的医学实验室综合管理系统

医学实验室的飞速发展,为医学科研、突发传染病防治、服务基层医疗等方面提供了有效助力,实验室注重实际应用的研究和实际问题的解决,实验室管理能力也在逐步迈向一个新的台阶,利用信息化技术手段实现对实验室开放共享的有效管理&a…

【Spring Boot】拦截器与统一功能处理

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE进阶 上一篇文章我们讲解了Spring AOP是一个基于面向切面编程的框架,用于将某方面具体问题集中处理,通过代理对象来进行传递,但使用原生Spring AOP实现统一的…

搭建本地开发服务器

搭建本地开发服务器 :::warning 注意 在上一个案例的基础上添加本地开发服务器,请保留上个案例的代码。如需要请查看 Webpack 使用。 ::: 搭建本地开发服务器这一个环节是非常有必要的,我们不可能每次修改源代码就重新打包一次。这样的操作是不是太繁琐…

linux文本三剑客---grep,sed,awk

目录 grep 什么是grep? grep实例演示 命令参数: 案例演示: sed 概念: 常用选项: 案例演示: awk 概念: awk常用命令选项: awk变量: 内置变量 自定义变量 a…

代理模式(C++)

定义 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。。 应用场景 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等)直接访问会给使用者、或…

出现Error: Cannot find module ‘compression-webpack-plugin‘错误

错误: 解决:npm install --save-dev compression-webpack-plugin1.1.12 版本问题

十、ESP32控制1.54寸240x240彩屏幕(SPI)

1. 运行效果 2. 240x240屏幕介绍 有8个引脚,说明如下 通过SPI协议进行传送数据,用到的芯片是S

ubuntu20.04 docker 下编译 tensorflow-gpu

ubuntu20.04 安装tensorflow-gpu 配置: 系统 ubuntu 20.04 LTS 显卡 GTX 1060 6G 1 安装cudatoolkit (我选 CUDA Toolkit 12.2 ) NVIDIA CUDA Installation Guide for Linux https://docs.nvidia.com/cuda/cuda-installation-guide-linux/in…

数据结构-1

1.2 线性结构树状结构网状结构(表 数 图) 数据:数值型 非数值型 1.2.3数据类型和抽象数据类型 1.3抽象数据类型 概念小结: 线性表: 如果在独立函数实现的 .c 文件中需要包含 stdlib.h 头文件,而主函数也需要包含 st…