WireShark——IP协议包分析(Ping分析IP协议包)
互联⽹协议 IP 是 Internet Protocol 的缩写,中⽂缩写为“⽹协”。IP 协议是位于 OSI 模型中第三层的协议,其主要⽬的就是使得⽹络间能够互联通信。前⾯介绍了 ARP 协议,该协议⽤在第⼆层处理单⼀⽹络中的通信。与其类似,第三层则负责跨⽹络通信的地址。在这层上⼯作的不⽌⼀个协议,但是最普遍的就是互联⽹协议(IP)
1. IP协议介绍
互联⽹协议地址(Internet Protocol Address,⼜译为⽹际协议地址),缩写为 IP 地址(IP Address)。在上⼀章介绍了 ARP 协议,通过分析包可以发现它是依靠 MAC 地址发送数据的。但是,这样做有⼀个重⼤的缺点。当 ARP 以⼴播⽅式发送数据包时,需要确保所有设备都要接收到该数据包。这样,不仅传输效率低,⽽且局限在发送者所在的⼦⽹络。也就是说,如果两台计算机不在同⼀个⼦⽹络,⼴播是传不过去的。这种设计是合理的,否则互联⽹上每⼀台计算机都会受到所有包,将会导致⽹络受到危害。互联⽹是⽆数⼦⽹共同组成的⼀个巨型⽹络。
图中就是⼀个简单的互联⽹环境,这⾥列出了两个⼦⽹络。如果想要所有电脑都在同⼀个⼦⽹络内,这⼏乎是不可能的。所以,需要⼀种⽅法来区分那些 MAC 地址属于同⼀个⼦⽹络,那些不是。如果是同⼀个⼦⽹络,就采⽤⼴播⽅式发送。否则就采⽤“路由”发送。这也是在 OSI 七层模型中“⽹络层”产⽣的原因。
它的作⽤就是引进⼀套,使得⽤户能够区分不同的计算机是否属于同⼀个⼦⽹络。这套地址就叫做“⽹络地址”,简称“⽹址”。但是,⼈们⼀般叫做是 IP 地址。这样每台计算机就有了两种地址,⼀种
是是 MAC 地址,另⼀种是⽹络地址(IP 地址)。但是,这两种地址之间没有任何联系,MAC 地址是绑定在⽹卡上的,⽹络地址是管理员分配的,它们只是随机组合在⼀起。
2. IP地址
IP 地址是 IP 协议提供的⼀种统⼀的地址格式。它为互联⽹上的每⼀个⽹络和每⼀台主机分配⼀个逻辑地址,以此来屏蔽物理地址的差异。IP 地址分为IPv4(IP 协议的第四版)和 IPv6(IP 协议第六版)两⼤类。⽬前,最⼴泛使⽤的是 IPv4。在该版本中规定,该地址是由 32 个⼆进制位组成,⽤来标识连接到⽹络的设备。由于让⽤户记住⼀串 32 位长的 01 字符确实⽐较困难,所以 IP 地址采⽤点分四组的表⽰法。
在点分四组表⽰法中,以 A、B、C、D 的形式构成 IP 地址的四组 1 和 0。它们分别转换为⼗进制 0 到 255 之间的数,如图 3.2 所⽰。
图 3.2 显⽰了 IPv4 地址 11000000.10101000.00000000.00000001,进⾏了点分四组的表⽰法。从图 3.2 中,可以看到这样⼀串 32 位长的数字很不容易记住或者表⽰。但是采⽤点分四组的表⽰法,就可以将以上⼀个很长的字符串表⽰为 192.168.0.1。这样,⽤户就⽐较容易记住。
3. IP地址的构成
IP 地址之所以会被分成四个单独的部分,是因为每个 IP 地址都包含两个部分,分别是⽹络地址和主机地址。⽹络地址⽤来标识设备所连接到的局域⽹,⽽主机地址则标识这个⽹络中的设备本⾝。例如,IP 地址 172.16.254.1 是⼀个 32 位的地址。假设它的⽹络部分是前 24 位(192.168.254),那么主机部分就是后 8 位(1)。处于同⼀个⼦⽹络的计算机,它们 IP 地址的⽹络部分必定是相同的。也就是说 172.16.254.2 应该与 172.16.254.1 处在同⼀个⼦⽹络。
但是,只查看 IP 地址是⽆法判断⽹络部分的。这时候就需要使⽤另⼀个参数“⼦⽹掩码”来判断。所谓的“⼦⽹掩码”就是表⽰⼦⽹络特征的⼀个参数。它在形式上等同于 IP 地址,也是⼀个 32 位⼆进制数字。它的⽹络部分全部为 1,主机部分全部为 0。
下⾯以IP地址10.10.1.22为例,其⼆进制形式为00001010.00001010.00000001.00010110。为了能够区分出 IP 地址的每⼀个部分,将使⽤⼦⽹掩码来表⽰。在本例中,10.10.1.22 的⼦⽹掩码是 11111111.11111111.00000000.00000000。这就意味着 IP 地址的前⼀半(10.10 或者
00001010.00001010)是⽹络地址,⽽后⼀半(1.22 或者 00000001.00010110)表⽰是该⽹络上的主机,如图 3.3 所⽰。
在该图中的⼦⽹掩码也可以写成点分四组的形式。⽐如⼦⽹掩码11111111.11111111.0000000.000000,可以被写成 255.255.0.0。
IP 地址和⼦⽹掩码为简便起见,通常会被些成⽆类型域间选路(Classless Inter Domain Routing,CIDR)的形式。在这种形式下,⼀个完整的 IP 地址后⾯会有⼀个左斜杠(/),以及⼀个⽤来表⽰ IP 地址中⽹络部分位数的数字。例如,IP 地址 10.10.1.22 和⽹络掩码 255.255.0.0,在 CIDR 表⽰法下就会被写成 10.10.1.22/16 的形式。
4. 捕获IP数据包
1)什么是 IP 数据报
TCP/IP 协议定义了⼀个在因特⽹上传输的包,称为 IP 数据报(IP Datagram)。IP 数据报是⼀个与硬件⽆关的虚拟包,由⾸部(header)和数据两部分组成。⾸部部分主要包括版本、长度、IP 地址等信息。数据部分⼀般⽤来传送其它的协议,如 TCP、UDP、ICMP 等。
IP 数据报的“⾸部”部分的长度为 20 到 60 个字节,整个数据报的总长度最⼤为 65535 字节。因此,理论上⼀个数据报的“数据”部分,最长为 65515 字节。由于以太⽹数据报的 “数据”部分,最长只有 1500 字节。因此如果 IP 数据报超过了 1500 字节,就需要分割成⼏个以太⽹数据报分开发送了。
2)TTL
捕获 IP 协议包和其它包有点区别,因为在 IP 协议中涉及到⼀个 TTL(time-to-live,⽣存时间)值问题。TTL 值指定数据包被路由器丢弃之前允许通过的⽹段数量。当数据包每经过⼀个路由器,其 TTL 值将会减⼀。关于 TTL 的详细信息,在后⾯进⾏介绍。下⾯将介绍捕获 IP 协议包,Wireshark 的位置。
为了证明 TTL 值的变化,本例中选择使⽤三个路由器来捕获数据包。捕获 IP 协议数据包的实验环境,如图 3.4 所⽰。
tcp ip协议是由tcp协议和ip协议组成从图中,可以看到使⽤两个路由器,将三台主机分割成两个⽹段。这三台主机的 IP 地址,在图 3.4 中已经标出。在本例中,Wireshark 可以在 PC1 和PC2 任意⼀台主机上运⾏。但是,不可以在 PC3 上运⾏。因为,在后⾯将会分别分析同⽹段和不同⽹段中 IP 协议包。如果在 PC3 上捕获数据包,只能捕获同⽹段的 IP 数据包。
3) 捕获数据包
①访问⼀个⽹页
打开浏览器,访问 www.baidu ⽹站,将捕获到如图所⽰的界⾯。
从该界⾯的 Protocol 列,可以看到捕获到有 DNS、TCP、HTTP 等协议的包。在这些包中,都包含由 IP 头部的详细信息。但是,这样可能会影响对IP 协议包的分析。
②执⾏ ping 命令
为了不受很多协议的影响,这⾥通过执⾏ ping 命令仅捕获 ICMP 协议的数据包。此时在主机 PC1 上执⾏ ping 命令,分别 pingPC2 和 PC3。执⾏命令如下所⽰:
C:\Users\Administrator>ping 192.168.5.4 C:\Users\Administrator>ping 192.168.6.103
执⾏以上命令后,捕获到的数据包如图所⽰。
图捕获到的 IP 协议包
从该界⾯的 Protocol 列,可以看到都是 ICMP 协议的包,⽽且每个包的颜⾊也都是相同的。虽然从该界⾯看到捕获到的数据包很多,但是只需要分析其中两个包,就可以很清楚的理解 IP 协议包格式。此时,⽤户还可以使⽤ IP 的显⽰过滤器对数据包进⾏过滤。如过滤仅显⽰主机 PC3(192.168.6.103)的数据包,输⼊过滤器 ip.addr==192.168.6.103,显⽰界⾯如图所⽰。
从该界⾯可以看到,以上数据包都是发送/来⾃ 192.168.6.103 的数据包。
4) 捕获 IP 分⽚数据包
在上⾯提到说,如果⼀个数据包超过 1500 个字节时,就需要将该包进⾏分⽚发送。通常情况下,是不会出现这种情况的。但是为了帮助⽤户更清晰的理解 IP 协议,下⾯通过使⽤ ICMP 包,来产⽣ IP 分⽚数据包。本节将介绍如何捕获到 IP 分⽚数据包。
使⽤ ICMP 包进⾏测试时,如果不指定包的⼤⼩可能⽆法查看到被分⽚的数据包。由于 IP ⾸部占⽤ 20 个字节,ICMP ⾸部占 8 个字节,所以捕获到ICMP 包⼤⼩最⼤为 1472 字节。但是⼀般情况下,ping 命令默认的⼤⼩都不会超过 1472 个字节。这样,发送的 ICMP 报⽂就可以顺利通过,不需要经过分⽚后再传输。如果想要捕获到 IP 分⽚包,需要指定发送的 ICMP 包必须⼤于 1472 字节。
捕获 IP 分⽚的数据包。具体操作步骤如下所⽰:
(1)启动 Wireshark 捕获⼯具。
(2)在 Wireshark 主界⾯的菜单栏中依次选择 Capture|Options,或者单击⼯具栏中的(显⽰捕获选项)图标打开 Wireshark 捕获选项窗⼝,如图所⽰。
图捕获选项界⾯
(3)在该界⾯设置捕获接⼝、捕获过滤器及捕获⽂件的位置。这⾥将捕获的数据保存到 ip-fragment.pcapng 捕获⽂件中,如图 3.10 所⽰。以上信息配
置完后,单击 Start 按钮开始捕获数据包,如图所⽰。
图开始捕获数据包
此时在主机 PC1 上执⾏ ping 命令,以产⽣ ICMP 数据包。执⾏命令如下所⽰:
C:\Users\lyw>ping 192.168.5.4 -l 3000
在该命令中,使⽤-l 选项指定捕获包的⼤⼩为 3000 字节。执⾏以上命令后,将显⽰如下所⽰的信息:
正在 Ping 192.168.5.4 具有 3000 字节的数据:
来⾃ 192.168.5.4 的回复: 字节=3000 时间=5ms TTL=64
来⾃ 192.168.5.4 的回复: 字节=3000 时间=5ms TTL=64
来⾃ 192.168.5.4 的回复: 字节=3000 时间=5ms TTL=64
来⾃ 192.168.5.4 的回复: 字节=3000 时间=5ms TTL=64
从以上输出信息中,可以看到捕获到每个包的⼤⼩都为 3000 字节。这时候,返回到 Wireshark 界⾯停⽌捕获数据,将显⽰如图所⽰的界⾯。
图 IP 分⽚数据包
从该界⾯可以很清楚的看到,和前⾯捕获到的数据包不同。在该界⾯ Protocol 列,显⽰了 IPv4 协议的包。这是因为发送的数据包过⼤,所以经过了分⽚后发送的。
5、IP数据报⾸部格式
源 IP 地址和⽬的 IP 地址都是 IPv4 数据报⾸部最重要的组成部分。但是,在⾸部固定部分的后⾯还有⼀些可选字段,并且其长度是可变的。下⾯将详细介绍 IP 数据报⾸部格式,如表 3-1 所⽰。
表 3-1 IP数据报⾸部格式
IP协议
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论