1. 常用网络命令的使用;
2. 通过本实验,熟练掌握Wireshark的操作和使用,并学习对HTTP协议进行分析。
1、练习使用常见网络命令;
2、下载wireshark,在PC 机上访问Web 页面,截获报文,分析HTTP 协议的报文格式和HTTP协议的工作过程。
Ping是一个测试程序,运行正确就可以排除网络访问层、网卡、modem的输入输出线路、电缆和路由器等存在的故障,减小了问题的范围。
l Ping IP地址
l Ping ip -t
连续对IP地址执行ping命令,直到被用户以ctrl+c中断。
l Ping ip -l 长度
连续对IP地址执行ping命令,直到被用户以ctrl+c中断。指定ping命令中的数据长度为2000字节,而不是缺省的32字节。
l Ping ip -n 次数
执行特定次数的ping命令:
l Ping 域名
用于检查网络TCP/IP配置的信息。比如IP地址、MAC地址、DNS等。
MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。MAC地址是网卡决定的,是固定的。
l ipconfig
l ipconfig /all 显示详细信息
该命令用户显示各协议相关的统计及数据,一般用于检查本地主机的各个端口的网络连接情况。
l netstat
l netstat -r
显示网络各种通信协议的状态。
l netstat -E
显示以太网层的数据统计情况。
l netstat -A
显示网络中有效连接的信息。
l netstat -N
显示所有已经建立的连接。
该命令用于检查由本地主机到目标主机所经历的路由信息。
我们再请求一个Twitter.com,可以看出是无法访问的。
arp命令用于显示和修改“地址解析协议(ARP)”缓存中的项目。ARP缓存中包含一个或多个表,它们用于存储IP地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则ARP命令将显示帮助信息。
l arp –a
记录出现的IP地址与物理地址的列表信息。
l arp -a 特定IP地址1
记录出现的IP地址与物理地址的列表信息。
l arp -s IP地址 物理地址
添加一条静态地址映射,然后使用arp –a ,记录出现的IP地址与物理地址的列表信息。
此时需要启动管理员身份运行,否则无权限。
以管理员身份运行后,再使用arp -a指令可以看到增加的静态地址映射:
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
浏览器将会显示只有一行文本的HTML文件,如下图:
得到如下193、202两条数据报:
http请求报文:(浏览器)
http响应报文:(服务器)
1.浏览器运行的HTTP是1.1版本,服务器运行的HTTP也是1.1版本。
2.我的浏览器能接受zh-cn语言(简体中文)。
3.我的电脑的IP地址是192.168.43.153,服务器的IP地址是128.119.245.12。
4.从服务器返回到你的浏览器的状态码是200。
5.服务器端得到最后修正的 HTML 文件的时间是:
Wed,25 Apr 2018 05:59:01 GMT
6.一共有128字节的内容已经返回到我的浏览器:
Content-Length:128。
7.HTTP请求报文首部行中还有Host字段、connection字段、Accept字段、User-agent字段、Accept-Encoding字段等。
HTTP响应报文首部行中还有Server字段、ETag字段、Accept-Ranges字段、Connection字段、Content-Type等。
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
浏览器将显示了一个很简单的 5 行的 HTML 文件;
得到如下数据报,红框中的数据是两次HTTP的请求和响应:
第一次请求:
第一次响应:
第二次请求:
第二次响应:
8.从我的浏览器到服务器得到的请求中检查第一个 HTTP GET 的内容。在 HTTP GET中没有看到一行“ IF-MODIFIED-SINCE”,因为是浏览器首次获取该页面。
检查服务器回应内容,服务器明确地返回了文件的内容,从line-based text data中的数据可以看出。
现在从你的浏览器到服务器得到的请求中检查第二个 HTTP GET 的内容。在 HTTP GET 中有看到一行“ IF-MODIFIED-SINCE”,在“ IF-MODIFIED-SINCE”头部有上次访问该网址的时间。
11.第二次 HTTP 返回的状态码是304,从服务器返回的响应第二个 HTTP GET 的短语是Not Modified,服务器没有明确返回文件的内容。因为该网页内容在上次访问之后未被修改且本浏览器中有上次访问的缓存。
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html
12.浏览器发送了1个HTTP GET请求消息?
13.传输这一个HTTP响应需要4个TCP数据段?
14. 响应HTTP GET请求的相关的状态码和短语是200 OK。
15.在TCP“Continuation”附加关联的传输数据中没有HTTP状态码和短语。
实验四:带有内嵌对象的HTML文档
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
16. 浏览器发送了4个HTTP GET请求消息,这些GET请求发送到了IP地址:
128.119.254.12; 128.119.240.90。
17.浏览器是并发地从两个网站上下载的图片。因为两个连续的请求访问的地址不同。
18.服务器对起初的HTTP GET消息的响应(状态码和短语)是:
401 Authorization Required(没有权限),出现了www-Authenticate字段。
当浏览器第二次发送HTTP GET消息时,GET消息中出现了新的Authorization字段。服务器响应出现了新的ETag字段。
第一次请求:
第一次响应:
第二次请求:
第二次响应:
步骤1:在PC 机上运行Wireshark,开始截获报文;
步骤2:从浏览器上访问Web 界面,如http://www.163.com。打开网页,待浏览器的状态栏出现 “完毕”信息后关闭网页。
步骤3:停止截获报文,将截获的报文命名为http-学号保存。
我们首先访问www.hnu.edu.cn:
分析截获的报文,回答以下几个问题:
1)综合分析截获的报文,查看有几种HTTP 报文?
两种。一种为HTTP请求报文,另一种是HTTP响应报文。
2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细 分析它们的格式,填写表1.1 和表1.2。
表1.1 HTTP 请求报文格式
方 法 |
GET |
版 本 |
HTTP/1.1 |
URL |
www.hnu.edu.cn/images/fuwu-img8-1-1.png |
||
首部字段名 |
字段值 |
字段所表达的信息 |
|
Accept |
image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 |
指明服务器能发送的媒体类型,这里能发送图片 |
|
Referer |
http://www.hnu.edu.cn/
|
指明了请求当前资源的原始资源的URL |
|
Accept-Language |
zh-CN |
支持使用语言为简体中文 |
|
User-Agent |
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko |
用户代理, 向访问网站提供所使用的浏览器类型及版本(Mozilla/5.0 )、操作系统及版本、浏览器内核等信息的标识 |
|
Accept-Encoding |
gzip, deflate |
支持使用的编码方式 |
|
host |
www.hnu.edu.cn |
请求的主机名和端口号,虚拟主机环境下用于不同的虚拟主机 |
|
DNT |
1 |
禁止追踪,被第三方网站追踪网络痕迹 |
|
connection |
Keep-Alive |
持续连接,向同一个连接发送下一个请求,直到一方主动关闭连接。 |
|
cookie |
JSESSIONID=780B6F87800F6EC84F95214D6E2FBC94 |
客户端发送给服务器端身份标识 |
表1.2 HTTP 应答报文格式
版 本 |
HTTP/1.1 |
状态码 |
200 |
短 语 |
OK |
||
首部字段名 |
字段值 |
字段所表达的信息 |
|
Server |
VWebServer/6.0.0 |
向客户端标明服务器程序名称和版本 |
|
Content-Type |
Image/png |
实体的媒体类型 |
|
Last-Modified |
Thu, 16 Nov 2017 08:09:42 GMT |
资源的最后修改日期时间 |
|
ETag |
"5a0d47c6-999"
|
资源的匹配信息 |
|
Cache-Control |
Max-age=3600 |
设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒) |
|
X-Frame-Options |
SAMEORIGIN |
表示该页面可以在相同域名页面的 frame 中展示 |
|
Accept-Ranges |
bytes |
是否接受字节范围请求 |
|
Connection |
Keep-Alive |
持续连接 |
|
Date |
Tue, 01 May 2018 17:29:21 GMT |
消息产生的时间 |
|
Expires |
Tue, 01 May 2018 18:29:59 GMT |
实体主体过期的日期时间 |
|
Age |
0 |
(从最初创建开始)响应持续时间 |
|
Content-Length |
2457 |
实体主体的大小(单位:字节) |
3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用了哪几个端口号?
(因为该报文段过长,这里又使用了另一个URL来实验:www.baidu.com)
客户机和服务器建立了14个连接。
服务器使用了14个端口:
44706、44707、44708、44705、44714、44719、44720、44721、44722、44723、44724、44725、44726、41635。
客户机使用了1个端口:80端口。
4 )综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表1.3 中。
表1.3 HTTP 协议工作过程
HTTP客户机端口号 |
HTTP 服务器端口号 |
所包括的报文号 |
步骤说明 |
80 |
44708 |
357 |
浏览器向服务器发出连接请求, 此为TCP三次握手第一步 |
80 |
44708 |
401 |
服务器回应了浏览器的请求,并要求确认,此为三次握手的第二步 |
80 |
44708 |
402 |
浏览器回应了服务器的确认,连接成功,此为三次握手的第三步 |
80 |
44708 |
403 |
浏览器发出一个页面HTTP请求 |
80 |
44708 |
454 |
服务器确认 |
80 |
44708 |
455 |
服务器发送数据 |
80 |
44708 |
456 |
客户端浏览器确认 |
80 |
44708 |
457 |
服务器发送状态响应码 |
80 |
44708 |
458 |
客户端浏览器确认 |
因为connection为Keep-Alive持续连接,所以没有断开连接。下图为对应报文段:
1. Wireshark找不到接口。
【解决方案】
(1)确保自己安装了WinPcap(这个在安装Wireshark时会提示安装,但是我没有安装),我去官网下载了WinPcap:地址是
(2)以管理员身份打开命令提示符,输入:net start npf ,会提示打开驱动服务成功。如下图所示:
2. Wireshark截获了很多无用报文
【解决方案】
(1)将其他接入网络的应用程序关闭,避免捕捉到不需要的报文。
(2)将使用的浏览器设置成关闭时消除浏览记录,可以避免每次手工操作删除。
(3)学会利用过滤器,如使用http、TCP等过滤器,寻找到自己想要分析查看的报文内容。
通过这次实验,让我熟悉了常用网络命令,并学习了这些命令的使用环境以及使用方法;掌握了Wireshark的操作和使用。通过截获的报文,能够对HTTP协议进行分析,更清晰地认识了http协议的工作过程。
在用wireshark时掌握一些技巧能够帮助我们更好地分析理解报文,还需在使用过程中多加积累。