第二部分 协议分析实验..........................................................2
实验一 常用网络命令和 IP 地址转换协议:ARP....................... 3
实验二 IP 控制管理协议:ICMP...................................................9
实验三 HTTP 与 TCP 协议...........................................................13
实验四 SOCKET 网络程序设计...................................................18
实验五 UDP 数据报的传送.......................................................... 26
实验六 应用层协议分析:TELNET,FTP 及 EMAIL..............31
实验七 应用层协议:WINDOWS 网络应用及 CIFS 协议..............36
实验八 综合实验......................................................................... 41
附录一 网络协议仿真教学系统操作简介.................................42
第二部分 协议分析实验
在此部分,设计了 8 个网络协议分
析实验。学生使用网络协议仿真教学系
统(操作介绍见附录一)完成这些实验,
可以对网络协议有更深入的理解。
实验一 常用网络命令和 IP 地址转换协议:ARP
【实验目的】
1、掌握常用网络命令的使用。
2、理解 IP 地址与 MAC 地址的对应关系。
3、掌握 ARP 协议的作用和格式。
4、掌握 ARP 协议的工作原理
【实验学时】
2 学时
【实验类型】
综合型
【实验要求】
1、预习实验原理。
2、预习并理解 ARP 的工作方式。
【实验原理】
一、常用网络命令
了解和掌握几个实用的网络命令会有助于更好地使用和维护网络。这里介绍 6 个基本的基
于 Windows 的网络命令:ipconfig、ping、tracert、arp、netstat、nbtstat。
1、ipconfig 命令
ipconfig 用来显示主机当前的 TCP/IP 协议的配置信息、刷新动态主机配置协议 (DHCP)
和域名系统 (DNS) 设置。
使用 ipconfig/? 可显示它的命令格式和参数说明。
命令格式:
ipconfig [/? /all /release [Adapter] /renew [Adapter] /flushdns /registerdns
/showclassid Adapter /setclassid Adapter [classidtoset]]
参数说明:
可以显示所有适配器的 IP 地址、子网掩码、默认网关。
显示所有适配器的完整 TCP/IP 配置信息。
为指定的适配器(或全部适配器)释放 IP 地址(只适用于 DHCP)。
为指定的适配器(或全部适配器)更新 IP 地址(只适用于 DHCP)。
不带参数
/all
/release [adapter]
/renew [adapter]
/flushdns
/registerdns 初始化计算机上配置的 DNS 名称和 IP 地址的手工动态注册。
/showclassid adapter 显示指定适配器的 DHCP 类别 ID。要查看所有适配器的 DHCP
类别 ID,可以使用星号 (*) 通配符代替 Adapter。该参数仅在具有配置为自动获取 IP 地址
的网卡的计算机上可用。
清理并重设 DNS 客户解析器缓存的内容。
/setclassid Adapter [classidtoset]
配置特定适配器的 DHCP 类别 ID。要设置所有
适配器的 DHCP 类别 ID,可以使用星号 (*) 通配符代替 Adapter。该参数仅在具有配置为自
动获取 IP 地址的网卡的计算机上可用。如果未指定 DHCP 类别 ID,则会删除当前类别 ID。
2、ping 命令
ping 是一个最常用的网络连通性检查命令。ping 通过发送 4 个 echo_request 的 ICMP 数
据包给目的主机,并接收应答信息来确定两台计算机之间的网络是否连通。当网络运行中出现故
障时,采用这个实用程序来预测故障和确定故障源是非常有效的。如果执行 ping 不成功,则可
以预测故障出现在以下几个方面:网线是否连通,网络适配器配置是否正确,IP 地址是否可用
等;如果执行 ping 成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面。不
过如果 ICMP 数据包因为某些原因(如防火墙的过滤)不能到达目的端或是目的端不能回答或是
回应给挡下来了,PING 就不能顺利完成,但并非代表网络连通故障。ping 成功只能保证当前
主机与目的主机间存在一条连通的物理路径。
使用 ping/? 可显示它的命令格式和参数说明。
命令格式:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count]
[[-j host-list] | [-k host-list]] [-w timeout] destination-list
参数说明:
使当前主机不断地向目的主机发送数据,直到使用 Ctrl-C 中断;
以 IP 地址格式(不是主机名形式)显示网络地址;
-t
-a
-n count 指定要做多少次 ping,其中 count 为正整数值;
-l size 发送的数据包的大小;
-f
-i TTL
-v TOS
-r count 指出要记录路由的轮数(去和回);
-s count 指定当使用-r 参数时,用于每一轮路由的时间;
-j host-list 指定希望分组的路由;
-k host-list 与-j 参数基本相同,只是不能使用额外的主机;
-w timeout
指定超时时间间隔(单位为毫秒),缺省为 1000;
设置不会由中间网关分组;
指定 ping 分组时限域,TTL 是指在停止到达的地址前应经过多少个网关;
服务的类型;
3、tracert 命令
tracert 命令也是我们通常用到的 ICMP 程序工具,功能是判定数据包到达目的主机所经
过的路径、显示数据包经过的中继节点清单和到达时间。tracert 命令对我们判断数据包的路
由路线非常有用。值得注意的是在防火墙的保护下有些 ICMP 数据包会被拦下来,这样 tracert
也就不能完整的显示出路由线路了。
使用 tracert 可显示它的命令格式和参数说明。
命令格式:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
参数说明:
不解析主机名;
-d
-h maximum_hops 指定搜索到目的地址的最大轮数;
-j host-list
-w timeout
沿着主机列表释放源路由;
指定超时时间间隔(单位毫秒)。
例:
图中返回信息的左边一行是跳站(hop)数字,然后是三个 round trip time,最后是主机的
名称和 IP 地址。
4、arp 命令
arp 命令主要用来显示及修改特定 IP 地址的网卡地址。使用 arp /?可以显示它的命令格式
和参数说明。
命令格式:
arp -s inet_addr eth_addr [if_addr]
arp -d inet_addr [if_addr]
arp -a [inet_addr] [-N if_addr]
参数说明:
inet_addr
eth_addr 以太网卡地址;
-a
IP 地址;
显示 ARP CACHE 缓存表(不加 IP 地址,显示所有已激活的 IP 地址的网卡地址)
(使用该参数前应该先 ping 通某一个 IP 地址);
-d
-s
删除指定 IP 地址的主机,清空 ARP CACHE 缓存表;
增加主机和与 IP 地址相对应的以太网卡地址。
5、Netstat 命令
这个命令有助于我们了解网络的整体使用情况。它可以显示当前正在活动的网络连接的详
细信息,如采用的协议类型、当前主机与远端相连主机(一个或多个)的 IP 地址以及它们之间
的连接状态等。
使用 netstat ?可以显示它的命令格式和参数说明。
命令格式:
netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval]
参数说明:
显示所有活动的 TCP 连接以及计算机监听的 TCP 和 UDP 端口。
显示以太网发送和接收的字节数、数据包数等。
以数字表格形式显示地址和端口。
显示每个协议的使用状态(包括 TCP、UDP、IP)。
-a
-e
-n
-s
-p proto 显示特定的协议的具体使用信息。
-r
interval 每次显示之间的间隔数(单位秒),按 Ctrl+C 中止重新显示。
显示本机路由表的内容(同 route print 命令)。
6、Nbtstat 命令
这个命令使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前的 TCP/IP 连接。使用
Nbtstat/?可以显示它的命令格式和参数说明。
命令格式:
nbtstat [[-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-RR]
[-s] [-S] [interval]]
参数说明:
-a RemoteName 使用远程计算机的名称列出其名称表。此参数通过远程计算机的
NetBIOS 名来查看其当前状态。
-A IP address
的 MAC 地址。
使用远程计算机的 IP 地址列出其名称表。此参数可查看远程计算机
-c
-n
-r
-R
-s
-S
二、ARP 协议
给定每个名称的 IP 地址并列出 NetBIOS 名称缓存的内容。
列出本地 NetBIOS 名称。
列出 windows 网络名称解析的名称解析统计。
清除 NetBIOS 名称缓存中的所有名称后,重新装入 Lmhosts 文件。
显示客户端和服务器会话,只通过 IP 地址列出远程计算机。
显示客户端和服务器会话,将远程计算机 IP 地址转换成使用主机文件的名称。
1、ARP 请求或应答的分组格式
硬件类型
硬件长度
协议长度
协议类型
操作
发送方 MAC(八位组 0-3)
发送方 MAC(八位组 4-5)
发送方 IP 地址(八位组 0-1)
发送方 IP 地址(八位组 2-3)
目标 MAC(八位组 0-1)
目标 MAC(八位组 2-5)
目标 IP 地址(八位组 0-3)
字段说明:
硬件类型:表示硬件地址类型,例如:1 表示以太网。
协议类型:表示要映射的协议类型,例如 0x0800 表示 IP 地址。
硬件长度:指明硬件地址长度,单位是字节,MAC 是 48 位,6 个字节。
协议长度:高层协议地址的长度,IP 地址是 4 个字节。
操作字段:共有两种操作类型,1 表示 ARP 请求,2 表示 ARP 应答。
`【实验步骤】
练习一:常用网络命令使用
依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态
下键入各个命令。
1、IpConfig /all
得到本机计算机名是
、MAC 地址是
、IP 地址有
个、
分别是
是
2、ping 命令
和
、子网掩码是
、默认网关
、DNS 服务器是
。
1)选择与本机属于同一子网的一主机的主机名或 IP 地址,作为 ping 命令的参数;
2)选择与本机属于不同子网的一主机的主机名或 IP 地址,如 192.168.2.2,作为 ping 命令
的参数;
根据结果分析:最短时间、最长时间、平均时间及丢包率为多少?TTL 字段值是否相同?
为什么?
3、tracert 命令
在命令提示符下运行类似以下的命令:
c:\>tracert netedu.edu
c:\>tracert 163.com
观察运行结果并分析途径路由器的个数是多少?
4、Netstat 命令
得到各个参数后,分别进行测试
Netstat/?
Netstat –a
Netstat –s
观察运行结果并分析 IP、ICMP、TCP 和 UDP 协议的统计信息。
5、Nbtstat 命令
nbtstat –a 其它主机计算机名
nbtstat -A 其它主机 IP 地址
nbtstat /? 得到各个参数后,分别进行测试
观察运行结果并分析获得的信息。
注意:在没有强调在‘监控机’一端操作时,以下操作均是在仿真机上进行的
练习二:仿真发送 ARP 请求报文(同一网段)
1、在命令提示符下运行 arp –d 命令,清空 ARP 高速缓存,然后用 arp –a 命令确认。
2、编辑 ARP 请求帧
(1) 打开协议仿真编辑器。
(2) 填写该帧 ethernet 头:
(a) 源 MAC 地址:可以为本机的 MAC 地址,也可以是其他主机的 MAC 地址;
(b) 目的 MAC 地址:此地址是指接收数据包的主机 MAC 地址。请思考:对于 ARP
请求来说,目的 MAC 地址应该是什么?(提示:ARP 请求帧要在子网内广播)
(c) 类型或长度:0806(ARP 协议类型值)或者选择下拉菜单中的“ARP”协议;
(d) DATA:不要填写内容。
(3) 填写 ARP 协议头信息:
此时协议树上将显示上层协议类型为“APR”,点击左端的“+”将该层协议展开,
会看到 ARP 协议的各个字段。单击协议树上的“ARP”协议或者点击单帧编辑器右下
方的“下一步”,在单帧编辑器中会出现 ARP 层各个字段及其默认值
(a) 硬件类型:1(以太网地址)
(b) 协议类型:0800(要映射的协议地址类型为 IP 地址类型)
(c) 硬件地址长度:6
(d) 协议地址长度:4
(e) 操作字段(APR 请求为 1,ARP 应答为 2)
(f) 发送方 MAC 地址:为所选择源主机的 MAC 地址;
(g) 发送方 IP 地址:为所选择源主机的 IP 地址;
(h) 目的 MAC 地址:全 0(表示 MAC 地址待求)。此地址是指目的 IP 地址所在主机
的 MAC 地址。;
(i) 目的 IP 地址:为所选择源目的主机的 IP 地址。
3、协议分析机开始捕获数据。
4、协议编辑机点击工具栏或菜单栏中的“发送”,在弹出菜单上选择“发送”按钮,发送 ARP
帧;
5、监控端捕获报文并进行分析:
(1) 其中是否有 ARP 请求及应答报文?
(2) ARP 应答报文由哪台主机发出?得到的 mac 地址是什么?
6、在命令提示符下运行 arp –a 命令,检查 ARP 高速缓存中的内容。有什么变化?
7、记录 ARP 的会话图。
练习三:仿真发送 ARP 请求报文(不同网段)
1、在命令提示符下运行 arp –d 命令,清空 ARP 高速缓存
2、在命令提示符下运行 arp –a 命令,检查 ARP 高速缓存
3、编辑 ARP 请求帧:
将目的 IP 地址改为不同网段的 IP 地址,其它同练习二。
4、在监控端捕获数据报文并分析:能否收到 ARP 应答报文?为什么?
5、在命令提示符下运行 arp –a 命令,检查 ARP 高速缓存中的内容是否发生变化,分析原因。
6、ping 不同网段的 IP 地址。
7、在监控端捕获数据报文并分析:
(1) 其中是否有 ARP 请求及应答报文?
(2) ARP 应答报文由哪台主机发出?得到的 mac 地址是什么,对应主机 IP 为多少?
(3) 得到的 mac 地址是你所查询 IP 地址所对应的 MAC 地址吗?为什么?
8、记录 ARP 的会话图。
【思考问题】
比较练习二和练习三两实验中得到的 ARP 报文,有何不同?分析产生二者区别的原因是什么?
【实验报告要求】
1、记录通过网络命令取得的主要信息。
2、回答提出的问题。