IP数据报报文格式

一 概述

IP数据报由两部分组成:首部+数据部分。首部的前一部分是固定长度,一共20字节大小,是所有IP数据报文必须具有的;固定部分后面是一些可选字段,其长度是可变的。

二 首部固定部分各字段意义

(1)版本:占4位,指IP协议的版本(IPv4或者IPv6)。通信双方的IP协议版本必须一直。

(2)首部长度:占4位,可表示的最大十进制数值为15。其中,首部长度字段所表示的数的单位为32位字(1个32位字长是4字节)。以为首部固定部分为20字节,所有首部长度字段最小值为5(即二进制表示的首部长度0101),最大值为15(二进制位1111),表示首部最大长度可达15个32位字长,即60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字节加以填充。为了尽量避免开销,最常用的首部长度是20字节。

(3)区分服务:占8位。在旧标准中叫做服务类型,但实际一直未使用。

(4)总长度:占16位,指首部和数据部分长度之和,单位为字节,最大长度为:2^16-1=65535字节,实际情况极少遇到,因为在数据链路层种数据帧又有个字段叫做MTU值,其规定了最大传输数据长度。

(5)标识:占16位,每产生一个数据报,计数器就加1,并将此值给标识字段。因为当数据报的长度超过网络的MTU值而必须分片时,这个标识字段的值就被复制道所有的数据报片的标识字段中,相同的标识字段的值使分片后的各数据报能正确的重装为原来的数据报。

(6)标志:占3位,但目前只有两位有意义.标志位最低位为MF,当MF=1表示后面还有分片数据报,MF=0表示这是若干分片数据报的最后一个报文。标志字段中间的一位位DF,意思是不能分片,当DF=0时才允许分片。

(7)片偏移:占13位。指较长的分组在分片后,某分片数据报在原分组种的相对位置。也就是说相对于用户数据字段的起点,该片从何处开始。以8字节位偏移单位,所以每个分片的长度一定是8字节的整数倍。

(8)生存时间:也叫做TTL,占8位,表明这是数据报在网络种的寿命。

(9)协议:占8位,协议字段指出此数据报携带的数据时使用何种协议。

(10)首部校验和:占16位,这个字段只校验数据报的首部,不包括数据部分。

(11)源地址:占32位。

(12)目的地址:占32位。

三 IP部分

首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,此字段的长度可变,从1字节道20字节不等。

四 实战分析

抓取本地任意数据报

整个IP头部如框选所示:45 00 01 80 C2 B6 40 00 37 06 31 1B 1B DE 03 E1 C0 A8 6E 3F,共20字节。

版本:4,表示使用的是IPv4版本

头部长度:5,表示头部长度共5个32位字长,即20字节

区分服务字段:全0,表示未使用

总长度:384,表示数据报总长度为384字节

标识:0xc2b6(十六进制)

分段标识:低位MF为0,中位DF为1,表示该数据报不分片,是最后一个数据报

分段偏移(片偏移):全0,表示该数据报的起点为0

存活时间:55

协议:6,表示使用的是TCP协议。

以下常见协议号:

ICMP——1 (Internet控制报文协议) 

IGMP——2 (Internet组管理协议)

TCP  ——6 (传输控制协议)

EGP  ——8 (外部网关协议)

IGP   ——9 (专用内部网关协议)

UDP  ——17 (用户数据报协议)

IPv6  ——41 (互联网协议第6版)

GRE  ——47 (通用路由封装协议)

ESP  ——50 (封装安全载荷协议)

AH   ——51 (身份验证标头)

ICMPv6 ——51 (IPv6网络的报文控制协议)

EIGRP   ——88 (增强内部网关路由协议,思科独有)

OSPF ——89 (开放式最短路径优先协议)

VRRP ——112 (虚拟路由器冗余协议)

L2TP  ——115 (第二层隧道协议)

检验和(首部校验和):0x311b

源地址和目的地址:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高光谱工业相机+LED光源系统助力材料分类和异物检测、实现高速在线检测

检测光源包括可见光,如红光、蓝光和绿光以及其他波长的光,如紫外和红外波长,可以选择与检测对象物相应的波长。但由于能够照射的波长较窄,例如受到同色异物混入或多个素材的材质分类等,可能需要使用可照射多种波长的光…

如何快速解决django存储session变量时出现的django.db.utils.DatabaseError错误

我们在学习django进行web编程的时候,有时需要将一些全局变量信息存储在session中,但使用过程中,却发现会引起数据库的报错。通过查看django源码信息,发现其对session信息进行了ORM映射,如果数据库中不存在对应的表信息…

kubeadm部署k8s-1.32版本集群(1个master,1个worker)

使用最新版的kubeadm部署一个最小版的k8s集群,只有一个master和1个worker,这种部署方式,不满足高可用,仅限于本地学习使用,不可以放到生产上用,先看一下文章的目录。 文章目录 1、基本信息1.1、服务器基本…

阀门流量控制系统MATLAB仿真PID

以下是一个基于MATLAB的PID控制仿真程序,用于模拟智能阀门流量控制系统。该程序包含系统模型、PID控制器以及饱和限制处理。 % 石油管道流量PID控制仿真 % 系统参数 valve_min 4; % 阀门最小电流 (mA) valve_max 25; % 阀门最大电流 (mA) max_flow 10…

UE4学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)

文章目录 一制作单条死亡信息框水平框的使用创建一个水平框添加子元素调整子元素顺序子元素的布局插槽尺寸填充对齐 制作UI 根据队伍,设置文本的名字和颜色声明变量 将变量设置为构造参数根据队伍,设置文本的名字和颜色在构造事件中,获取玩家…

机器学习——LightGBM

LightGBM(light gradient boosting machine,轻量梯度提升机)是对XGBoost进行改进的模型版本,其三者之间的演变关系为:GBDT-》XGBoost-》LightGBM,依次对性能进行优化,尽管XGBoost已经很高效了,但是仍然有缺…

什么是SQL作业

SQL作业是在数据库服务器上按特定时间或间隔自动执行的计划任务或流程,这些作业由Microsoft SQL Server中的SQL Server代理管理,对于自动执行日常任务(如数据库系统中的备份、数据导入和报告生成)以及确保及时准确地处理和更新数据…

小程序内表格合并功能实现—行合并

功能介绍:支付宝小程序手写表格实现行内合并,依据动态数据自动计算每次需求合并的值,本次记录行内合并,如果列内合并,同理即可实现 前端技术:grid布局 display:grid 先看实现效果: axml&…

CD19.【C++ Dev】类和对象(10) 日期类对象的成员函数(日期+天数)

目录 日期天数 需要考虑的几个问题 1.天数加在日上,有可能会溢出,需要进位 2.对月进位,也有可能导致月会溢出,需要进位 3.对年进位,需要考虑是否为闰年 代码设计 取得指定月的天数GetMonthDay函数 方法1:if判断或switch/case 方法2:查表 版本1 版本2 operator 初始…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.3实战案例:在笔记本电脑上运行轻量级LLM

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 实战案例:在笔记本电脑上运行轻量级LLM2.2.3 模型架构设计与实现1. 环境与工具准备1.1 硬件要求1.2 软件栈选择2. 轻量级模型架构设计2.1 模型参数配置2.2 关键技术优化3. 实战流程3.1 数据准备流程3.2…

新手村:逻辑回归-理解04:熵是什么?

新手村:逻辑回归04:熵是什么? 熵是什么? 前置条件 在开始学习逻辑回归中的熵理论之前,需要掌握以下基础知识: 概率论与统计学: 概率分布(如伯努利分布、正态分布)。条件概率和贝叶斯定理。期…

linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像

Linux》》docker: 默认情况下,Docker镜像保存在/var/lib/docker/目录下。 当您使用docker pull命令从Docker Hub或私有镜像仓库中拉取镜像时,Docker会自动将镜像文件保存在/var/lib/docker/image/目录下。 每个镜像都由一个或多个层组成,这些…

Processor System Reset IP 核 v5.0(vivado)

这个IP的作用,我的理解是,比普通按键复位更加高效灵活,可以配置多个复位输出,可以配置复位周期。 1、输入信号: 重要的信号有时钟clk信号,一般连接到系统时钟;输入复位信号,一般是外…

SQL中累计求和与滑动求和函数sum() over()的用法

[TOC](SQL中累计求和与滑动求和函数sum() over()的用法) 一、窗口函数功能简介 sum(c) over(partition by a order by b) 按照一定规则汇总c的值,具体规则为以a分组,每组内按照b进行排序,汇总第一行至当前行的c的加和值。 sum()&#xff1a…

优雅的开始一个Python项目

优雅的开始一个Python项目 这是我在初始化一个Python项目时,一键生成的项目文件。它自动完成了git初始化、环境管理、日志模块这三件事情,并在最后进入了虚拟环境。 uv安装 uv是一个现代的Python包管理和项目管理工具。uv中文文档 安装uv: # unix: …

【Django】教程-2-前端-目录结构介绍

【Django】教程-1-安装创建项目目录结构介绍 3. 前端文件配置 3.1 目录介绍 在app下创建static文件夹, 是根据setting中的配置来的 STATIC_URL ‘static/’ templates目录,编写HTML模板(含有模板语法,继承,{% static ‘xx’ …

Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?

🚀 Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?🤔 父组件:identify-list.vue子组件:fake-clue-list.vue 嘿,各位前端探险家!👋 今天我们要在 Vue 2 的代码丛林…

docker-compese 启动mysql8.0.36与phpmyadmin,并使用web连接数据库

1、找一个文件夹,比如 E:\zqy\file\mysql,cd到这个目录下创建文件docker-compose.yml 2、将下面的代码块复制到docker-compose.yml文件中 version: 3.3 services:mysql:image: mysql:8.0.36container_name: mysqlrestart: alwaysports:- 3306:3306netw…

【Java SE】包装类 Byte、Short、Integer、Long、Character、Float、Double、Boolean

参考笔记:java 包装类 万字详解(通俗易懂)_java包装类-CSDN博客 目录 1.简介 2.包装类的继承关系图 3.装箱和拆箱 3.1 介绍 3.2 手动拆装箱 3.3. 自动拆装箱 ​4.关于String类型的转化问题 4.1 String类型和基本类型的相互转化 4.1.1 String —…

《网络安全等级测评报告模版(2025版)》

网络安全等级保护(以下简称“等保测评”)制度是我国网络安全领域现行的基本制度。所谓等保测评,即具有资质的测评机构,依据国家网络安全等级保护规范规定,按照有关管理规范和技术标准,对等保对象&#xff0…