网络协议抓包分析——IP互联网协议
前言
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数据包分析
IP分片数据包分析
当IP数据报的数据部分大于1480(1500-20)字节,IP层就会对数据进行分片,封装到不同的数据包中然后发送。
使用PingPlotter软件产生数据包大小为5000字节(IP20字节首部+4980数据)的ICMP报文,发送给目的主机66.249.89.147。
5-8帧是一个完整的ping请求包。下面将详细分析5-8帧的详细信息。
第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,该数据包后面没有分片了。
我们来看下后面的分片是否如此:
小结
在理解IP协议首部字段的含义之后,进行抓包分析理解会理解的更深刻。尤其是对IP分片的理解。在学习理论时,总有种不实在的感觉,在利用Wireshark抓包并进行推算后,才实在一些。
- 网络协议分析之wireshark---抓包使用
- 推荐几款网络抓包协议分析工具
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
- 手机网络抓包步骤,用于分析通信协议、流量
- 网络协议抓包分析——TCP传输控制协议(连接建立、释放)
- 网络层协议IP/ICMP/DHCP/ARP/TCP数据的捕获与分析
- C winpcap 网络抓包 并获取IP TCP 协议的相关信息
- 使用WinPcap抓包分析网络协议
- 使用WinPcap抓包分析网络协议
- IP首部校验和的计算 [网络协议分析的作业]
- 网络抓包及Http Https通信协议分析
- 使用WinPcap抓包分析网络协议
- 使用WinPcap抓包分析网络协议
- 网络协议抓包分析——ARP地址解析协议
- 使用WinPcap抓包分析网络协议
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
- 2-22 网络协议分析及Linux网络编程模型
- Linux内核分析 - 网络[五]:vlan协议-802.1q
- TCP/IP 协议简单分析
- Wireshark抓包分析Eureka注册发现协议