当前位置: 首页 > news >正文

各报文段格式集合

数据链路层-- MAC帧

请添加图片描述
请添加图片描述

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

网络层-- IP分组

请添加图片描述

  1. 首部固定部分20B,最大为60B
    • 最小取值为0101( 5 × 4 = 20 5\times 4=20 5×4=20
    • 最大取值为1111( 15 × 4 = 60 15\times 4=60 15×4=60
  2. 用于分片的三个字段:例如以太网规定MTU取值为1500B,当IPv4数据报长于MTU时,无法封装成帧,需要将原IPv4数据报分片为若干个更小的IPv4数据报
    • 标识:同属于一个IPv4数据报的各分片数据报应该具有相同的标识
    • 标志:
      • MF:为1表示本分片后面还有分片;为0表示本分片后面没有分片
      • DF:为0表示允许分片;为1表示不允许分片
    • 片偏移:其开始的字节号(从0开始)/8
      请添加图片描述
  3. 生存时间TTL:以跳数为单位,路由器收到该数据报就将其TTL字段-1,若结果不为0就转发,否则就丢弃
  4. 协议:用来指明IPv4数据报的数据载荷是何种协议数据单元PDU
    请添加图片描述
  5. 首部校验和:只校验首部。数据报每经过一个路由器,路由器都要重新计算一下首部检验和
    • 发送方首部检验和的计算方法:
      在这里插入图片描述
    • 接收端检验是否出错的方法:
      在这里插入图片描述
  6. 源地址和目的地址字段长度都为4B
  7. 填充:当首部长度(20+可变)的长度不是4字节的整数倍时,就填充相应数量的全0字节,以确保IPv4数据报的首部长度是4字节的整数倍
  8. 单位:(一种八片首饰)
    • 总长度(首部+数据载荷):1
    • 片偏移:8
    • 首部长度:4

传输层-- TCP报文段

请添加图片描述

  1. TCP实现可靠传输的相关字段
    • 序号:用来指出本TCP报文段的数据载荷的第一个字节的序号
    • 确认号:用来指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。只有当确认标志位ACK为1时,确认号字段才有效。
    • 确认标志位ACK:TCP规定,在TCP连接建立后,所有传送的TCP报文段都必须把ACK置1
  2. 数据偏移:以4字节为单位,指出TCP报文段的首部长度(是TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远)
  3. 标志位:
    • 同步标志位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报文段,会按照紧急指针字段的值从报文段数据载荷中取出紧急数据并直接上交应用进程,而不必在接受缓存中排队
  4. 窗口:以字节为单位,指出接收窗口的大小,进而控制发送方的数据发送量。这就是所谓的流量控制
  5. 检验和:用来检查整个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数据报

请添加图片描述

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

应用层-- HTTP报文

HTTP报文分为请求报文和响应报文

  1. 请求报文:
    • 请求行:请求方法(GET/POST)、请求URL、HTTP协议版本
    • 首部行
    • 请求体/实体主体
  2. 响应报文:
    • 状态行
    • 响应头部
    • 响应体

相关文章:

各报文段格式集合

数据链路层-- 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分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯&#x1f3a…...

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. 原理: - 读卡器&#xff…...

华为云云耀云服务器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)创建备份,利用备份数据恢复云硬盘,最大限度保障…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...