【实验目的】
1、理解 IP 层的作用以及 IP 地址的分类方法;
2、理解子网的划分和子网掩码的作用;
3、掌握 IP 数据包的组成和网络层的基本功能;
【实验内容】
1、学会根据 IP 地址的分类方式区分各类 IP 地址;
2、掌握 IP 数据报的格式、长度以及各字段的功能;
3、学会利用子网掩码确定 IP 地址的网络号、子网号和主机号;
4、学会分析给定数据包的 IP 首部信息;
5、学会手工计算 IP 校验和的方法;
【实验流程】
1、安装wireshark;
2、熟悉软件使用;
3、分析IP数据包格式;
4、抓包分析http、ping等协议。
【实验原理】
网际协议 IP 是 TCP/IP 协议栈的心脏,也是网络层中最重要的协议。目前几乎所有的上层 网络协议都是基于 IP 协议。在接收数据的时候,网络层接收由数据链路层发送的数据包进 行解封装,并把该数据包发送到更高层——传输层,在发送数据的时候,网络层接受由传输 层发送的数据包进行 IP 封装,然后把数据报交给下层——数据链路层。
IP 协议处于 TCP/IP 协议栈的网际层,用于管理数据通信中源端和目的端之间的报文传送,
是互联网最重要的网际协议。IP 地址是也叫逻辑地址,用于在网络中标识主机。在 IP网络
中,主机之间进行通信时使用 IP 地址来指定接收端的主机地址。 数据进行封装过程中,IP层负责将数据封装成 IP包,IPv4数据包报文格式如下图所示。
如上图所示,在 IP 包中,各字段含义如下所述:
版本:长度为 4 比特,含义为版本号,对于 IPv4 来说,版本号为 4。
报头长度:报头长度字段为 4 比特,用于表示 IP 报头长度,在 IPv4 中,由于选项字段长度可变,因此,报头长度并不固定,报头字节长度为这一字段值的 4 倍。
业务类型:业务类型字段长度为 8 比特,主要用于标识 QOS 服务等级。
总长度:总长度字段共 16 比特,因此 IP 报的最大长度为 65535 字节。
标识符(Identifier):长度 16 比特。该字段和标识及分段偏移字段联合使用,对大的上层数据包进行分段(fragment)操作。
标记(Flags):长度 3 比特。该字段第一位不使用,第二位是 DF 位,DF 位设为1 时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发, 则路由器会丢弃该上层数据包并返回一个错误信息。第三位是 MF位,当路由器对一个上层 数据包分段,则路由器会在除了最后一个分段的 IP 包的包头中将 MF 位设为 1。
分段偏移(Fragment Offset):长度 13 比特。用于指明分片 IP 包在原 IP 包中的 偏移量。由于 IP 包在网络上传送的时候不一定能按顺序到达,这个字段保证了目标路由器 在接受到 IP 包之后能够还原分段的上层数据包。当某个包含分段的上层数据包的 IP 包在 传送时丢失,则整个一系列包含分段的上层数据包的 IP 包都会被要求重传。
生存时间(TTL):长度 8 比特。当 IP 包进行传送时,先会对该字段赋予某个特定的 值。当 IP 包经过每一个路由器的时候,路由器会将 IP 包的 TTL 值减少 1。如果TTL 减 少为 0,则该 IP 包会被丢弃。这个字段可以防止由于路由故障而导致 IP 包在网络中不停 被转发。
协议号(Protocol):长度 8 比特。标识了上层所使用的协议。 报头校验和(Header Checksum):长度 16 位,由于 IP 包头是变长的,所以提供一个头部校验来保证 IP 包头中信息的正确性。
源和目标地址(Source and Destination Addresses):这两个地段都是 32 比特。标识了这个 IP 包的起源和目标地址。 可选项(Options):这是一个可变长的字段。该字段由起源设备根据需要改写。
【实验步骤】
步骤一:设定实验环境
1、参照实验拓扑连接网络拓扑;
2、配置 PC 机及路由器 IP 地址;
步骤二:wireshark安装使用
wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark 了。
为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS 中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler,其他协议比如TCP,UDP 就用 wireshark。
开始界面
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
点击Caputre->Interfaces… 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包
WireShark 主要分为这几个界面
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千 甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。
过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种, 一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录 一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。在Capture -> Capture Filters 中设置
保存过滤
在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102"
Filter栏上就多了个"Filter 102" 的按钮
过滤表达式 | 用途 |
---|---|
http | 只查看 HTTP 协议的记录 |
ip.src == 192.168.1.102 or ip.dst ==192.168.1.102 | 源地址或者目标地址是 192.168.1.102 |
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。
你也可以修改这些显示颜色的规则, View ->Coloring Rules.
封包详细信息 (Packet Details Pane) 这个面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为:
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
从下图可以看到wireshark捕获到的TCP包中的每个字段
用wireshark实际分析下三次握手的过程。
打开wireshark, 打开浏览器输入某个网站,例如www.hdu.edu.cn 在wireshark中输入http过滤, 然后选中GET / HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",
这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图
图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说 明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置 为客户的I S N加1以.即0+1=1, 如下图
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序 号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
就这样通过了TCP三次握手,建立了连接
步骤三:wireshark捕获IP数据包格式分析
步骤四:wireshark捕获完整HTTP、ping数据流
【思考问题】
结合实验过程中的实验结果,问答下列问题:
1、实验所用主机的 IP 地址、子网掩码、网络号、子网号分别是多少?该主机的 IP 地址属于哪类?
2、IP 数据包在从源主机出发到达目的主机的过程中,IP 首部中的 IP 源地址和目的地址字段是否发生变化?