计算机网络实验二实验报告
网络层协议数据的捕获与分析
实验任务、内容、环境
实验任务
本次实验主要包含下列内容:
- 使用Wireshark 软件捕获在使用ping 命令时产生的ICMP 消息;
- 分析网络层IP 包头格式,理解各字段的作用,对于分段和校验和进行验证;
- 使用Wireshark 软件捕获在使用ARP 消息,分析其消息格式,理解其工作原理;
- 使用Wireshark 捕获DHCP 消息,分析其消息序列,理解DHCP 的功能和操作原理;
- 使用Wireshark 捕获TCP 消息,分析TCP 报文段头格式,理解连接建立和释放的原理,差错控制原理、序号和窗口管理的原理。
通过本实验学生可以深入理解分层体系结构,理解和掌握TCP/IP 协议栈的代表协议——IP、TCP、
UDP、ICMP、ARP 和DHCP 协议的要点。
实验环境
本次实验在Windows10
平台下,使用Wireshark-win64-2.2.7
进行协议的捕获与分析。
实验步骤
在
CMD
使用ipconfig\all
命令,获取本机ip
与mac
地址。本机情况如下:以太网适配器 以太网:
连接特定的 DNS 后缀 … … . :
描述… … … … … : Realtek PCIe GBE Family Controller
物理地址… … … … . : 50-7B-9D-78-A7-84
DHCP 已启用 … … … . . : 是
自动配置已启用… … … . : 是
IPv6 地址 … … … … : 2001:da8:215:81f4:f859:d651:c5dd:16cb(首选)
临时 IPv6 地址… … … . : 2001:da8:215:81f4:8889:7f1f:8074:748a(受到抨击)
临时 IPv6 地址… … … . : 2001:da8:215:81f4:acf4:c8d7:cce0:6944(首选)
本地链接 IPv6 地址… … . . : fe80::f859:d651:c5dd:16cb%10(首选)
IPv4 地址 … … … … : 10.120.10.49(首选)
子网掩码 … … … … : 255.255.255.192
获得租约的时间 … … … : 2017年6月6日 20:50:39
租约过期的时间 … … … : 2017年6月8日 20:50:46
默认网关… … … … . : fe80::761f:4aff:fe28:4b8b%10
默认网关… … … … . : 10.120.10.1
DHCP 服务器 … … … . . : 10.120.10.1
DHCPv6 IAID … … … . . : 55606173
DHCPv6 客户端 DUID … … . : 00-01-00-01-20-47-F1-BC-50-7B-9D-78-A7-84
DNS 服务器 … … … . . : 10.3.9.4
DNS 服务器 … … … . . : 10.3.9.5
TCPIP 上的 NetBIOS … … . : 已启用下载
wireshark
并进行设置。启动
Wireshark
,设置捕获接口(Interface
)为本机网卡,选中混杂模式(promiscuous mode
)
捕获选项,设置合适的捕获过滤器(Capture Filter
):- 对于
ping
命令,设置过滤器为icmp
- 对于
DHCP
消息,设置过滤器为udp port 67
- 对于
ARP
消息,设置过滤器为arp
- 对于通过网页浏览应用来捕获
TCP
消息,设置过滤器为tcp port 80
开始捕获。
- 对于
捕获数据。
- 捕获
ICMP
协议数据
- 运行
ping
命令(例如:ping 192.168.0.1
),远程主机地址可以是本机地址、网关路由器地址,也可以是域名。将捕获到的数据保存为文件。 - 使用
Windows
中ping
命令的-l
选项(例如:ping -l 8000 192.168.0.1
),生成大于8000
字节的IP
包并发送,捕获后分析其分段传输的包结构。
- 运行
- 捕获
DHCP
协议数据
- 使用
ipconfig
命令释放计算机的IP 地址(ipconfig -release
); - 使用
ipconfig
命令重新申请IP 地址(ipconfig -renew
)。 - 此时
wireshark
窗口中可以捕获到完整的DHCP
地址分配的流程,将捕获到的数据保存为文件。
- 使用
- 捕获
ARP
协议数据
- 采用与上一段相同的方法释放
IP
地址并重新申请,在wireshark
窗口中可以捕获到ARP
请求和响应消息,保存为文件。
- 采用与上一段相同的方法释放
- 捕获
TCP
协议数据
- 打开浏览器,输入一个页面内容较简单的网页的URL,如
www.baidu.com
;网页全部显示后关闭浏览器。
- 打开浏览器,输入一个页面内容较简单的网页的URL,如
- 捕获
进行协议数据的分析
IP协议分析
找出IP包头个字段并分析
IP 包头分析:对于采用
ping-l
命令选项捕获的ICMP 消息,对承载ICMP消息的IP 包进行分析。取了某次ping的第三个包,对于包头各字段,列表如下:
字段 报文(16进制) 内容 版本 4 表示报文是IPv4报文 首部长度 5 首部长度为5*4字节=20字节 服务类型 00 表示普通服务,无特殊需求 总长度 05dc 总长度1500字节 标识 7604 数据报标号为30212 标志 001(二进制) 表示可以分片,且该片后面还有其他片 片偏移 2172(二进制下高三位不计算) 片偏移370*8=2960字节 生存时间 80 生存时间是128跳 协议类型 01 协议01,表示由ICMP协议处理 首部校验和 7489 校验和0x7489 源地址 0a 78 0a 31 源地址:10.120.10.49 目的地址 0a 78 0a 01 目的地址:10.120.10.1 描述IP包校验原理,并对上述IP包头进行校验。
发送方将校验字段置为全0,然后对包头所有字段计算反码算数求和,结果即为校验码部分。
反码求和:将待运算数作为16bit二进制数,然后做带进位加法,将进位作为一个16bit二进制数,加在结果的低位上,重复运算直到没有进位,最后将结果取反。
接收方将每一个16bit二进制数做同上的反码相加,得到结果若是FFFF,则校验通过。
4500+05dc+7604+2172+80017489+0a78+0a31+0a78+0a010001+fffe+=0001fffe=ffff
校验通过。描述IP包分段原理,并验证。
- 当一个较大的数据包通过一个支持最大数据包长度较小的网络时,会被分段,每一段单独生成一个数据包。
- 分段中的每一段都具有相同的标识,使用MF与DF以及偏移来确定该包的相对位置。
- MF表示当前包是否是最后一个包(MF=1表示还有分片,MF=0表示已是最后一个分片),DF表示是否允许分片,DF=0表示允许分片。
- 分段中除了最后一段,每一段长度必须是8的整数倍。
- 片偏移k表示这个分片的第一字节是原始数据包的第8*k字节。
在本次实验,网络环境是以太网,支持的最大帧长度为1514字节。
分析后,发现第一个包偏移量为0,第二个包偏移量1480字节,第三个包偏移量2960字节。而一个数据链路层的帧长1514字节,去掉数据链路层的目的地址6字节,源地址6字节,2字节类型,剩余留给IP数据报的长度为1500字节,再去掉20字节的IP头,每个包实际包含数据1480字节,所以第三个包正好偏移2960字节。后面的包以此类推,略去。因为ping包长度8000字节,所以每一次ping有6个分片片段。
同时也可知道,数据链路层使用
以太网V2 MAC帧
。
ICMP协议分析
理解ICMP协议的功能
为了提高 IP 数据报交付成功的机会,在网际层使用了因特网控制报文协议 ICMP (Internet Control Message Protocol)。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP是一个工作在网络层,使用IP数据报封装自己的协议,主要为主机报告差错与异常使用。ICMP报文分为差错报告报文和询问报文。
ICMP 差错报告报文共有 5 种
• 终点不可达
• 源站抑制
• 时间超过
• 参数问题
• 改变路由(重定向)ICMP 询问报文有四种
• 回送请求和回答报文
• 时间戳请求和回答报文
• 掩码地址请求和回答报文
• 路由器询问和通告报文ICMP可以应用在ping上,检查目的主机是否联通;可以用来测试到达目的主机的路径和跳数等。
记录各字段的格式
选取了上图的1号包和2号包进行分析。
字段 报文(十六进制) 内容 类型 08/00 08表示是一个回显请求报文,00表示回显回复报文 代码 00/00 表示是一个回显报文 校验和 4d42/5542 整个ICMP部分的校验和 标识符 0001/0001 表示上层进程ID号 序列号 0019/0019 包的序列号,该包是25号 ICMP不同的报文类型号不同,比如08代表回显请求,00代表回显应答等。
校验和做的是整个ICMP部分的校验,采用与IP数据报一样的反码求和运算,以1号包为例:
0800+4d42+0001+0019