各报文段格式集合
数据链路层-- 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)创建备份,利用备份数据恢复云硬盘,最大限度保障…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...