各报文段格式集合
数据链路层-- MAC帧


- 前导码8B:数据链路层将封装好的MAC帧交付给物理层进行发送,物理层在发送MAC帧前,还要在前面添加8字节的前导码(分为7字节的前同步码+1字节的帧开始定界符)
- MAC地址长度6B
- 数据长度46~1500B,首部和尾部是18B,因此最短帧长64B
- 满足最小帧长64B的要求(6+6+2+46+4=64)
- 以太网在传递时,各帧之间必须有一定的间隙,因此不需要帧结束符(但要有帧尾部)
网络层-- IP分组

- 首部固定部分20B,最大为60B
- 最小取值为0101( 5 × 4 = 20 5\times 4=20 5×4=20)
- 最大取值为1111( 15 × 4 = 60 15\times 4=60 15×4=60)
- 用于分片的三个字段:例如以太网规定MTU取值为1500B,当IPv4数据报长于MTU时,无法封装成帧,需要将原IPv4数据报分片为若干个更小的IPv4数据报
- 标识:同属于一个IPv4数据报的各分片数据报应该具有相同的标识
- 标志:
- MF:为1表示本分片后面还有分片;为0表示本分片后面没有分片
- DF:为0表示允许分片;为1表示不允许分片
- 片偏移:其开始的字节号(从0开始)/8

- 生存时间TTL:以跳数为单位,路由器收到该数据报就将其TTL字段-1,若结果不为0就转发,否则就丢弃
- 协议:用来指明IPv4数据报的数据载荷是何种协议数据单元PDU

- 首部校验和:只校验首部。数据报每经过一个路由器,路由器都要重新计算一下首部检验和
- 发送方首部检验和的计算方法:

- 接收端检验是否出错的方法:

- 发送方首部检验和的计算方法:
- 源地址和目的地址字段长度都为4B
- 填充:当首部长度(20+可变)的长度不是4字节的整数倍时,就填充相应数量的全0字节,以确保IPv4数据报的首部长度是4字节的整数倍
- 单位:(一种八片首饰)
- 总长度(首部+数据载荷):1
- 片偏移:8
- 首部长度:4
传输层-- TCP报文段

- TCP实现可靠传输的相关字段
- 序号:用来指出本TCP报文段的数据载荷的第一个字节的序号
- 确认号:用来指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。只有当确认标志位ACK为1时,确认号字段才有效。
- 确认标志位ACK:TCP规定,在TCP连接建立后,所有传送的TCP报文段都必须把ACK置1
- 数据偏移:以4字节为单位,指出TCP报文段的首部长度(是TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远)
- 标志位:
- 同步标志位SYN:用于TCP三报文握手建立连接
- SYN=1且ACK=0时:是一个TCP连接请求报文段
- SYN=1且ACK=1时:对方同意建立连接,发送这样首部的响应报文
- 因此,SYN=1时,要么是一个连接请求报文段,要么是一个连接响应报文段
- 终止标志位FIN:用于TCP四报文挥手释放链接
- FIN=1时,表示此TCP报文段的发送方已经将全部数据发送完毕,现在要求释放TCP连接
- 复位标志位RST:用于复位TCP连接
- RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;此外,还可通过将RST置1来拒绝一个非法的TCP报文段或拒绝打开一个TCP连接
- 推送标志位PSH:出于效率,TCP发送方可能会延迟发送数据以一次发送更多的数据。但当两个应用进行交互式通信时,需要高实时性,这时应用进程可通知TCP使用推送(PSH)操作
- 发送方TCP把PSH置1,并立即创建一个TCP报文段发送出去,而不需要累积到足够多的数据再发送
- 接收方TCP收到PSH为1的TCP报文段,就尽快地交付给应用进程,而不再等到接收到足够多的数据才向上交付
- 紧急标志位URG:当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。后面的紧急指针字段会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据后是普通数据。接收方收到紧急标志位为1的TCP报文段,会按照紧急指针字段的值从报文段数据载荷中取出紧急数据并直接上交应用进程,而不必在接受缓存中排队
- 同步标志位SYN:用于TCP三报文握手建立连接
- 窗口:以字节为单位,指出接收窗口的大小,进而控制发送方的数据发送量。这就是所谓的流量控制
- 检验和:用来检查整个TCP报文段在传输中是否出现误码。和UDP一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部,伪首部的格式与UDP也一样
- (发送方)计算检验和的方法:
- 将TCP首部中检验和字段的值置为0;
- 将伪首部、TCP首部以及数据载荷这三部分划分成若干个2字节的字;
- 对划分出的全部2字节的字进行反码算术运算求和,并将求和结果取反码;4)将步骤三得到的结果写入TCP首部中的检验和字段
- (接收方)通过检验和字段判断TCP报文段在传输过程中是否误码的方法
- 给接收到的TCP报文段前面添加一个12字节的伪首部
- 将伪首部、TCP首部、数据载荷三部分划分成若干个2字节的字
- 对划分出的全部2字节的字进行反码算术运算求和,并将求和结果取反码
- 若步骤三得到的结果为0,则表示TCP报文段在传输过程中没有误码。否则则出现了误码
- 其与IPv4数据报首部检验和的计算方法类似,差别仅在于IP数据报只对首部进行检验;而TCP检验和对整个TCP报文段进行检验
- (发送方)计算检验和的方法:
传输层-- UDP数据报

- 首部8B,由4个字段组成(都是2B)
- 长度字段包括首部+数据部分
- 检验和对伪首部、UDP报文头以及数据部分(即应用层数据)进行校验
- 伪首部:仅在计算校验和时存在,不发送。伪首部包括IP分组报头的一部分

应用层-- HTTP报文
HTTP报文分为请求报文和响应报文
- 请求报文:
- 请求行:请求方法(GET/POST)、请求URL、HTTP协议版本
- 首部行
- 请求体/实体主体
- 响应报文:
- 状态行
- 响应头部
- 响应体
相关文章:
各报文段格式集合
数据链路层-- MAC帧 前导码8B:数据链路层将封装好的MAC帧交付给物理层进行发送,物理层在发送MAC帧前,还要在前面添加8字节的前导码(分为7字节的前同步码1字节的帧开始定界符)MAC地址长度6B数据长度46~1500B…...
【算法-动态规划】最长公共子序列
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...
区块链游戏的开发流程
链游(Blockchain Games)的开发流程与传统游戏开发有许多相似之处,但它涉及到区块链技术的集成和智能合约的开发。以下是链游的一般开发流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&…...
目标检测网络系列——YOLO V2
文章目录 YOLO9000better,更准batch Normalization高分辨率的训练使用anchor锚框尺寸的选择——聚类锚框集成改进——直接预测bounding box细粒度的特征图——passthrough layer多尺度训练数据集比对实验VOC 2007VOC 2012COCOFaster,更快网络模型——Darknet19训练方法Strong…...
15. Java反射和注解
Java —— 反射和注解 1. 反射2. 注解 1. 反射 动态语言:变量的类型和属性可以在运行时动态确定,而不需要在编译时指定 常见动态语言:Python,JavaScript,Ruby,PHP,Perl;常见静态语言…...
pdf处理工具 Enfocus PitStop Pro 2022 中文 for mac
Enfocus PitStop Pro 2022是一款专业的PDF预检和编辑软件,旨在帮助用户提高生产效率、确保印刷品质量并减少错误。以下是该软件的一些特色功能: PDF预检。PitStop Pro可以自动检测和修复常见的PDF文件问题,如缺失字体、图像分辨率低、颜色空…...
微信小程序入门开发教程
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯Ἲ…...
php函数
1. strstr() 返回a在b中的第一个位置 2.substr() 截取字符串 3.PHP字符串函数parse_str(将字符串解析成多个变量)-CSDN博客 4.explode() 字符串分割为数组 5.trim() 1.去除字符串两边的 空白字符 2.去除指定字符 6.extract()函数从数组里…...
3.3 封装性
思维导图: 3.3.1 为什么要封装 ### 3.3.1 为什么要封装 **封装**,在Java的面向对象编程中,是一个核心的思想。它主要是为了保护对象的状态不被外部随意修改,确保数据的完整性和安全性。 #### **核心思想:** - 保护…...
Redis魔法:点燃分布式锁的奇妙实现
分布式锁是一种用于在分布式系统中控制对共享资源的访问的锁。它与传统的单机锁不同,因为它需要在多个节点之间协调以确保互斥访问。 本文将介绍什么是分布式锁,以及使用Redis实现分布式锁的几种方案。 一、前言 了解分布式锁之前,需要先了…...
iOS 项目避坑:多个分类中方法重复实现检测
#前言 在项目中,我们经常会使用分类 -> category。category在实际项目中一般有两个左右:1.给已有class增加方法,扩充起能力、2.将代码打散到多个文件中,避免因为一个类过于复杂而导致代码篇幅过长(应用于viewController中很好用) 但是 category 也有很多弊端~ **首…...
【003】EIS数据分析_#LIB
EIS数据分析 1. EIS测试及数据获取2. EIS数据分析2.1 EIS曲线划分 1. EIS测试及数据获取 点击查看往期介绍 2. EIS数据分析 2.1 EIS曲线划分 一般来说,实轴处的截获表示体电阻(Rb),它反映了电解质,隔膜和电极的电导率。高频区的半圆对应于…...
Sprint framework Day07:注解结合 xml 配置
前言 Spring注解结合XML配置是指在Spring应用中,使用注解和XML配置的方式来进行Bean的定义、依赖注入和其他配置。这种方式可以充分利用Spring框架的注解和XML配置两种不同的配置方式的特点。 在Spring框架中,我们可以使用注解来定义Bean,如…...
LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流
LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流 1、背景2、设备接入播放2.1、查看通道2.2、直播播放 3、默认收流地址配置4、其它网络设备收流配置5、搭建GB28181视频直播平台 1、背景 服务器部署的时候,可能有多个网卡多个…...
js题解(四)
文章目录 批量改变对象的属性判断是否包含数字判断是否符合指定格式 批量改变对象的属性 给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。 function alterObjects(const…...
如何进行大数运算和高精度计算?
大数运算和高精度计算是在计算机编程中常见的需求,尤其是当处理大整数、分数、复数、浮点数等需要更多位数的数据时。在C语言中,由于原生的数据类型有限,您需要使用自定义的数据结构和算法来执行大数运算和高精度计算。在本文中,我…...
身份证读卡器跟OCR有何区别?哪个好?
二代身份证读卡器(以下简称读卡器)和OCR(光学字符识别)是两种常见的身份证信息获取技术,它们在原理、功能和应用方面存在一些区别。下面将详细介绍二者的区别并探讨哪个更好。 1. 原理: - 读卡器ÿ…...
华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 网络监控神器 bmon
华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 网络监控神器 bmon 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什…...
C++ 设计模式 —— 组合模式
C 设计模式 —— 组合模式 0. 引用连接 本文主要的思路和代码,来自于对以下连接的学习和实现: 组合模式 1. 引言 1.1 什么是组合模式? 组合模式的定义组合模式的作用 组合模式是一种行为型设计模式,它将对象组合成树形结构以…...
华为云Stack的学习(九)
十、华为云Stack灾备服务介绍 1.云硬盘备份VBS 云硬盘备份服务(VBS,Volume Backup Service)可为云硬盘(EVS,Elastic Volume Service)创建备份,利用备份数据恢复云硬盘,最大限度保障…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
生成对抗网络(GAN)损失函数解读
GAN损失函数的形式: 以下是对每个部分的解读: 1. , :这个部分表示生成器(Generator)G的目标是最小化损失函数。 :判别器(Discriminator)D的目标是最大化损失函数。 GAN的训…...
Vuex:Vue.js 应用程序的状态管理模式
什么是Vuex? Vuex 是专门为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在大型单页应用中,当多个组件共享状态时,简单的单向数据流…...
