IP协议的基本原理、报文结构和抓包分析
IP协议的基本原理、报文结构和抓包分析
基本原理:
IP 协议提供了一种分层的、与硬件无关的寻址系统,它可以在复杂的路由式网络中传递数据所需的服务。
IP 协议可以将多个交换网络连接起来,在源地址和目的地址之间传送数据包。同时,它还提供数据重新组装功能,以适应不同网络对数据包大小的要求。
在一个路由式网络中,源地址主机向目标地址主机发送数据时,IP协议是如何将数据成功发送到目标主机上的呢,由于网络分同网段和不同网段两种情况,工作方式如下:
同网段:
如果源地址主机和目标地址主机在同一网段,目标 IP 地址被 ARP 协议解析为 MAC 地址,然后根据 MAC 地址,源主机直接把数据包发给目标主机。
不同网段:
网关(一般为路由器)的 IP 地址被 ARP 协议解析为 MAC 地址。根据该 MAC 地址,源主机将数据包发送到网关。
网关根据数据包中的网段 ID 寻找目标网络。如果找到,将数据包发送到目标网段;如果没找到,重复步骤(1)将数据包发送到上一级网关。
数据包经过网关被发送到正确的网段中。重复同网段,目标IP地址被ARP协议解析为 MAC 地址。根据该 MAC 地址,数据包被发送给目标地址的主机。
报文结构:
用 IP 协议传输数据的包被称为 IP 数据包,每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文(IP Datagram)或者 IP 数据报。
IP 数据报文由首部(称为报头)和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
|
字段 |
含义 |
|
版本version |
4位,通信双方ip协议版本必须一样,一般是4版本 |
|
首部长度 |
4位,最大的十进制数为15,单位为32位字长即4字节,首部最大长度位60字节,若首部长度不是4字节整数倍需要用最后的填充字段 |
|
区分服务tos |
8位,只有区分服务类型时才起作用。 |
|
总长度totlen |
16位,首部和数据之和,单位为字节,2的16次方=65535字节,即最多65535个字节 |
|
标识identification |
16位,标识数据报,是ip协议在存储器维持的计数器产生的数字,产生一个数据报,计数器就加一,并将此值赋给标识字段,当数据报长度超过MTU必须分片时标识字段的值就复制到所有分片的标识字段中,具有相同标识字段的分片报文又会被重组成原来的数据报。 |
|
标志flag |
3位,第一位未使用,为0;第二位df表示是否分片,0表示允许分片,1表示不允许分片。第三位mf表示是否还有分片在转移,0时表示没有更多分片需要发送或者数据报没有分片。 |
|
片偏移offsetfrag |
13位,报文被分片后,标记分片在原报文中的相对位置,片偏移以8个字节为单位,除了最后一个其他分片的偏移值都是8字节的整数倍。 |
|
生存时间ttl |
8位,数据报在网络中的寿命,防止无法交付的数据无限制在网络中传输,从而消耗网络资源。转发前ttl减1,若减少到0则丢弃,不再转发。 指明数据报在网络中最多可经过255个,若把ttl初始值设为1,则表示只能在本局域网内传送。 |
|
协议 |
8位,所携带数据使用的协议类型,让网络层知道怎么来处理数据部分。如:tcp 6 udp 17 icmp 1 |
|
首部校验和 |
16位,每经过一个路由器,首部的字段都可能发生改变(如ttl值),所以需要重新校验首部的校验和,数据部分不发生改变所以不用重新生成。 |
|
源地址 |
32位 |
|
目的地址 |
32位 |
|
可选长度(包括填充部分) |
用于可选的报头设置,主要用于测试,调试和安全。包括:严格源路由(必须经过指定路由),网际时间戳,安全限制 可用若干0填充字段,保证整个报头长度为32位的整数倍。 |
|
数据 |
长度不固定 |
8位1个字节
抓包分析:
- ping百度
- Werishark抓包
- 查看主机发送给14.215.177.38的tcp报文的ip结构

浙公网安备 33010602011771号