博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络协议抓包分析——IP互联网协议
阅读量:5254 次
发布时间:2019-06-14

本文共 1168 字,大约阅读时间需要 3 分钟。

前言

IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信。在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议。

什么是IP数据报

TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报(IP Datagram)。IP数据报是一个与硬件无关的虚拟包,由首部和数据两部分组成。首部部分主要包含版本、长度和IP地址等信息。数据部分一般用来传达其他协议如TCP、UDP和ICMP等。整个IP数据报的的首部表示总长度的字段位数为16位,于是可以表示的数据报最大大小为65535,减去首部的最小大小20字节,于是最大payload(负载/载荷)就为65515。但是,由于以太网数据报的payload部分最大只有1500字节,于是如果IP数据报的大小超过了1500字节,就需要分片

IP数据包分析

1099419-20190110204852370-1721546258.png

IP分片数据包分析

当IP数据报的数据部分大于1480(1500-20)字节,IP层就会对数据进行分片,封装到不同的数据包中然后发送。

使用PingPlotter软件产生数据包大小为5000字节(IP20字节首部+4980数据)的ICMP报文,发送给目的主机66.249.89.147。

5-8帧是一个完整的ping请求包。下面将详细分析5-8帧的详细信息。

1099419-20190110205231563-425168828.png

第5帧数据包的标识符0x74fe,所以后面拥有此标识符的数据包原与该帧属于一个数据包。标志位的MF=1说明后面还有分片存在。因为是第一个分片,所以分段偏移为0。

在这里我们可以做一个运算,猜测后面其余分片的大小以及它们的分段偏移。

第一个分片帧的大小为1514字节,去掉共14字节的帧首部和尾部。分片IP数据包的大小为1500字节(首部20字节+数据1480字节)。原数据包的数据部分有4980字节,于是还有4980-1480=3500字节大小的数据。我们可以假设payload都尽量为最大值。那么推算:
第二个分片IP数据包的payload为1480字节,其分段偏移就为第一分片长度1480/8=185。分段偏移字段一位代表8字节。
第三个分片IP数据包的payload也为1480字节,其分段偏移就为370(第一个分片长度+第三个分片长度)。然后原数据包的数据部分还剩540字节。
第四个分片IP数据包的payload就为540字节,其分段偏移为555(前三个分片长度),并且MF标志位为0,该数据包后面没有分片了。

我们来看下后面的分片是否如此:

1099419-20190110205330943-1507857767.png

1099419-20190110205414023-505821136.png

1099419-20190110205500409-79334817.png

小结

在理解IP协议首部字段的含义之后,进行抓包分析理解会理解的更深刻。尤其是对IP分片的理解。在学习理论时,总有种不实在的感觉,在利用Wireshark抓包并进行推算后,才实在一些。

转载于:https://www.cnblogs.com/myworld7/p/10252388.html

你可能感兴趣的文章
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
P1107 最大整数
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>