IP包头分析

news2024/12/30 1:37:41

数据来源

IP包头长度

        ip包头的长度在20-60个字节间,一般是20字节(固定部分),可选项最大是40个字节(比较少用)。

第一行

        版本

                就是指出IP数据包是什么版本;常见的版本就是0100 IPV4和 0110 IPV6(常见的是IPV4)

        首部长度

                IP数据报首部中有一个首部长度字段,4 位长,可表示的最大十进制数字是15。因此首部长度的最大值是15个4字节长的字,即60字节。

                首部长度是指IP首部占32bit字的数目,包括选项(如果有)。首部长度本身为4bit字段,能表示的二进制最大数为1111,换算成十进制为15,即首部最长为15个32bit长度=480bit,即最大长度60字节。

        优先级与服务类型(3比特优先级,4比特服务类型,1比特保留)

                该字段定义上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。前3位成为优先位,后面4位成为服务类型,最后1位没有定义。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。

        总长度:

                网络层IP报文的总长度超过1500就会进行分片(3、4、5层的总长度,data + TCP/UDP头+IP包头)

第二行

前置知识IP分片

        IP分片产生原因 (来源)

                我们假设要传输一个UDP数据包,以太网(一个帧)的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象

        IP分片原理(来源)

                IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层

图1

                在IP首部有4个字节是用于分片的,如图1所示。前16位是IP数据报的标识,同一个数据报的各个分片的标识是一样的,目的端会根据这个标识来判断IP分片是否属于同一个IP数据报中间3位是标志位,其中有1位用来表示是否有更多的分片,如果是最后一个分片,该标志位为0,否则为1。后面13位(段的偏移量)表示分片在原始数据的偏移,这里的原始数据是IP层收到的传输的TCP或UDP数据(TCP/UDP头 + 应用层数据(data),不包含IP首部,如下图:。

                需要注意的,在分片的数据中,传输层的首部(TCP/UDP)只会出现在第一个分片中,如图1所示。因为传输层的数据格式对IP层是透明的,传输层的首部只有在传输层才会有它的作用,IP层不知道也不需要保证在每个分片中都有传输层首部。所以,在网络上传输的数据包是有可能没有传输层首部的。

        标识符:

                同一IP报文的表示符是一致的,用来分类分片属于那个数据包

        段的偏移量:

        分片在数据包中的相对位置(IP分片的先后顺序),值为0就是第一个分片,1472的是第二个分片,2854就是第三个分片以此类推

        标志(3bit):

  • 第1个比特永远为0,代表不能启用
  • 第2个比特值有两种:0或1  (0表示该IP包进行了分片,1 代表未分片,只有一个帧)
  • 第3个比特是告诉pc该分片是否是最后一个值有两种:0或1  (0表示该分片值最后一个,1 代表在该分片后面还有分片)

        攻击方式(泪滴攻击)

                使用攻击工具伪造三个帧,标志为分别为:001、001、000,段偏量分别为:0  x(x<1472) x(x<=1472),会使计算机一直尝试重组数据,一直失败会导致PUC被占满。

        防御:

                最有效的方法就是在服务器前端加防火墙,过滤不安全的包

第三行 

        TTL(time to live)生存时间

                TTL值对我们在进行网络故障分析时能起到很关键的作用,该字段表示一个IP数据报能够经过的最大的路由器跳数,TTL字段是由IP数据报发送端初始设置的。

                每个处理该数据报的路由器都需要将其 TTL值减1,即当一个IP数据报每经过一个路由时,其TTL值会减1,当路由器收到一个TTL值为0的数据报时,路由器会将其丢弃。因此,TTL字段的目的是就是为了防止1个IP数据报网络中循环的流动

                例如:当路由器的路由表配置错误或网络设备接线错误是,则可能会造成网络环路,在这种情况下,路由器可能根据其路由表将该数据报一直循环转发下去,导致IP数据报一直在网络中发送。

                因此,就需要一种机制来给这些循环传递的数据报上加上一个生存上限,以保证数据报不会无休止的发送,TTL字段正是用于实现这种机制的一种手段。

        TTL值进行网络故障分析:

  • 当我们在分析数据报的过程中如果发现TTL=1的IP数据包或者在科来网络分析系统的诊断下看到IP数据报生存周期太短的事件(组播数据报除外)时,我们就应该怀疑网络中是否存在环路了。
  • 对于网络环路的分析,我们还应该结合报头中的标识字段来查找,如果发现数据报的标识符都相同并且TTL值一直在递减,那么说明网络中一定存在环路的故障,这时,就应该检查网络设备是否出现有接错线或者路由配置出现问题。

        利用TTL字段值判断操作系统:

                一般在TTL字段值>100是微软的Windows主机,TTL字段值<100的linux主机

操作系统默认操作系统的TTL
微软 WINDOWS NT/2000128
微软 WINDOWS 95/9832
UNIX255
LINUX64
WIN764
Compaq Tru64 5.064

                并不是100%准确,取相近值,TTL是可以改的,并且每经过一台路由器都会减一,只能用作参考

        跟踪本机发送请求到目标IP,所经过的网关(路由器)

                命令:tracert  目标IP/域名

                

        协议号

                表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。TCP 的协议号为 6UDP 的协议号为 17ICMP 的协议号为 1

首部检验和(checksum)
        用于校验数据报的首部(ip包头20字节这块),占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。

第四行 

        源地址

                表示数据报的源 IP 地址,占 32 位。

第五行

        目的地址

                表示数据报的目的 IP 地址,占 32 位

第六行

        可选字段

                该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。

第七行及以后

        数据部分

                表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。

 

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

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

相关文章

机器学习中基本符号表示和常用术语

目录一. 基本符号表示二. 常用术语1. 精准率计算&#xff08;precision&#xff09;2.召回率计算&#xff08;recall&#xff09;3.准确率的计算&#xff08;accuracy&#xff09;4.F1 Score5. G分数6.一. 基本符号表示 TP &#xff08;true positive&#xff09;&#xff1a;预…

【Python】基础语法(安装,常变量,类型,注释,运算符)

目录python环境搭建安装Python安装pycharmpython基础语法常量和表达式变量和数据类型变量数据类型注释输入输出运算符算术运算符关系运算符逻辑运算符赋值运算符xdm,最近更新一些学习Python基础知识的内容,感谢支持!python环境搭建 俗话说工欲善其事必先利其器,要想学习Python开…

新知实验室TRTC初体验

小记 一次偶然的邂逅,让我知道了TRTC实时音视频这个神奇的东西,于是便开始研究起来这个鬼东西,本以为是一个很简单的东西,调用一下SDK就完事了 , 谁知道它的文档并不是很齐全,这一点还需要多多努力啊!!! 正文 实时音视频&#xff08;TRTC&#xff09; 是腾讯云提供的一套低…

现代对称密码

乘积密码 因为语言特性&#xff0c;用代替和置换是不安全的&#xff0c;可以考虑用多次的加密增强密码强度。多次加密想要提高密码强度&#xff0c;要求多次加密不能成为一个群&#xff0c;那么加密就可以被重复并且组合复杂度会增加。 分组密码 分组密码就是把明文分组后进…

Linux进阶-Shell编程与环境变量

目录 定义变量&#xff1a; 使用变量&#xff1a; 将命令的结果赋值给变量&#xff1a; 删除变量&#xff1a;unset 退出当前进程&#xff1a;exit 读取从键盘输入的数据 &#xff1a;read 对整数进行数字运算&#xff1a;(()) 逻辑与或&#xff1a; 检测某个条件是否成…

【Java八股文总结】之MySQL数据库

文章目录数据库一、基本概念二、MySQL数据库2.1 MySQL基础1、MySQL数据库的优点&#xff1f;2、MySQL支持的数据类型有&#xff1f;Q&#xff1a;varchar 和 char 的区别&#xff1f;Q&#xff1a;blob 和 text 的区别&#xff1f;Q&#xff1a;datetime 和 timestamp 的区别&a…

DI依赖注入-P8,P9,P10,P11

1.构造器注入 之前写过了~~~~ 2.Set方式注入【重点】 3.拓展方式注入 2.Set方式注入【重点】 【环境搭建】 1.复杂类型 2.真实测试对象 四个文件 Student实体类的创建&#xff1a; 主要是依据官方文档来建立。那个Address也是为了测试不同的类型&#xff0c;而创建的引…

攻防世界misc2-1

misc2-1 题目描述&#xff1a;无 题目环境&#xff1a;https://download.csdn.net/download/m0_59188912/87094620 打开图片&#xff0c;发现无法显示。 使用winhex打开&#xff0c;从其中一段看出这是逆序图片。 使用python脚本将其正序排列。 脚本源码&#xff1a; f1open(‘…

5G无线技术基础自学系列 | SA及NSA组网架构

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 3GPP为新空中接口定义了两种部署配置&a…

操作系统笔记

文章目录一、操作系统的定义1.1 操作系统的功能和目标1.2 操作系统的特征1.3 操作系统的发展和分类1.4 操作系统的运行机制1.5 操作系统内核1.6 操作系统的体系结构二、中断机制中断和异常三、系统调用3.1 系统调用的分类&#xff08;按功能分配&#xff09;3.2 系统调用和库函…

整夜我的背影是一条踏往星空的道路

Brigit Pegeen Kelly&#xff0c;1951 - 2016.08.14&#xff0c;美国诗人、教师&#xff0c;在加利福尼亚州帕洛阿尔托出生&#xff0c;在印第安纳南部长达&#xff0c;成年后的大部分时间都在伊利诺州中部度过。一位非常注重隐私的女性&#xff0c;她的生活很少为人所知。[1][…

计算机基础学习(好文必看)

好长时间没发文章了&#xff0c;主要是以输入为主。 那么&#xff0c;给小伙伴们推荐一些计算机基础学习的知识&#xff0c;自己感觉挺不错的。 计算机基础学习&#xff1a; 1. 小林师傅是一位宝藏博主&#xff0c;非常厉害&#xff0c;各大平台都有他的文章&#xff0c;我是…

Day08--自定义组件的样式

提纲挈领&#xff1a; ************************************************************************************************************ 我的操作&#xff1a; 1》在app.wxss里面定义一个全局样式&#xff1a; 2》在home.wxml里面使用全局样式。 3》在test2.wxml里面使用…

Prometheus系列(一)安装

1 安装 Prometheus Server 官网&#xff1a;https://prometheus.io/ 下载&#xff1a;https://prometheus.io/download/ 手册&#xff1a;https://prometheus.io/docs/introduction/overview/ Prometheus 基于 Golang 编写&#xff0c;编译后的软件包&#xff0c;不依赖于任何的…

如何画业务流程图?

业务流程图是用来描述客户业务作业方式的有效手段&#xff0c;它可以清晰地客户业务流程中涉及的人员角色、业务活动、业务数据以及他们之间的关系&#xff0c;是用来澄清需求的有效手段。一个典型的业务流程图如下图所示&#xff1a; 在画业务流程图时有哪些注意事项呢&#x…

分布式协调服务

服务越来越对&#xff0c;人工管理和维护服务及地址的配置地址信息会越来越困难&#xff0c;单点故障的问题也凸显出来。一旦服务路由或者负载均衡服务器宕机&#xff0c;依赖他的所有服务均将失效。 什么是 zookeeper&#xff1f; zookeeper 是一个开源的分布式协调服务。zoo…

【乱码】记一次C#调用Java乱码

项目是使用 C# 写的&#xff0c;传输数据使用对方给的Java加密解密算法。直接使用C#写算法要研究对方的算法&#xff0c;耗时较长。 因此直接将jar包转成dll进行调用。 前言 使用IKVM工具将Java生成的Jar包转成dll&#xff0c;使用C#进行调用&#xff0c;可以正常调用&#xff…

Java-10接口与抽象类

Java-10接口与抽象类 抽象方法 abstract method机制 这是一个不完整的方法&#xff0c;它只有一个声明&#xff0c;没有方法体 abstract void f();包含抽象方法的类被称为抽象类&#xff1a;如果一个类包含一个或多个抽象方法&#xff0c;则该类必须被定义为抽象类 public…

CEAC 之《企业信息化管理》3

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;微微的猪食小窝 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 微微的猪食小窝 原创 收录于专栏 【CEAC证书】 1综合布线属于系统集成的____________。 A、网络应用系统 B、应用基础平台 C、网络平台 D、…

JavaEE 几种spring注解

使用注解可以更简单的存储Bean对象和读取Bean对象。 存储Bean对象 在使用注解之前&#xff0c;需要做一些前置工作&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"…