一、实验准备
1.在 Wireshark_NAT_v7.0 上下载实验指导书。
2.根据实验指导书,在 wireshark-traces 上下载实验指导书中截取的捕获包。
3.根据实验指导书,我们要分析的是NAT_home_side 和NAT_ISP_side 这两个捕获包,一个是在客户机上捕获的,一个是由路由器发送到ISP的包。
二、分析 NAT_home_side 捕获包
通过 Wireshark 打开 NAT_home_side.pcap 文件,截图如下:
根据实验指导书回答以下问题:
1.客户端的IP地址是什么?
从发送的第一个HTTP请求报文中的IPv4分组报文段中就可以看出,源IP地址为192.168.1.100,即客户端的IP地址为192.168.1.100。
2.客户端实际上与几个不同的Google服务器通信,以便实现“安全浏览”。
提供谷歌主页的谷歌主服务器IP地址为64.233.169.104,输入表达式http&&ip.addr==64.233.169.104到Wireshark中的过滤器中,以便仅显示包含HTTP消息的帧。
3.考虑HTTP在时间为7.109267的时候从客户端发送到Google服务器(其IP地址为64.233.169.104)。承载此HTTP GET的IP数据报的源IP地址和目的IP地址、TCP源端口号和目的端口号是什么?
- 源IP地址: 192.168.1.100
- TCP源端口号: 4335
- 目的IP地址: 64.233.169.104
- 目的端口号: 80
4.什么时侯从谷歌服务器收到相应的200 OK HTTP消息?承载此HTTP 200 OK消息的IP数据报上的源IP地址和目的IP地址、TCP源端口号和目的端口号是什么?
- 时间:7.158797 s
- 源IP地址: 64.233.169.104
- TCP源端口号: 80
- 目的IP地址: 192.168.1.100
- 目的端口号: 4335
5.回想一下,在向HTTP服务器发送GET命令之前,TCP必须首先使用三次SYN/ACK握手建立连接。客户端到服务器的TCP SYN段是在什么时候发送的,用于设置GET在7.109267发送时使用的连接?TCP SYN段的源IP地址和目的IP地址、源端口号和目的端口号是什么?响应SYN发送的ACK的源IP地址和目的IP地址、源端口号和目的端口号是什么?客户端何时收到此确认?
(注意:要查找这些段,需要清除上面输入的过滤器表达式。如果输入过滤器“tcp”,Wireshark只显示tcp段)。
- TCP SYN段发送时间:7.075657 s
- 请求报文:源IP地址192.168.1.100和目的IP地址64.233.169.104、源端口号4335和目的端口号80
- 响应报文:源IP地址64.233.169.104和目的IP地址192.168.1.100、源端口号80和目的端口号4335
- 客户端收到确认时间:7.108986 s
三、分析 NAT_ISP_side 捕获包
在这一步骤中,我们将重点介绍两条HTTP消息(GET和200 OK)以及上面标识的TCP SYN和ACK段。我们下的目标是在路由器和ISP之间的链路上捕获追踪文件(NAT_ISP_side 捕获包)中定位这两条HTTP消息和两个TCP段。因为这些捕获到的帧已经通过NAT路由器转发,所以NAT转换的结果会改变一些IP地址和端口号。
通过 Wireshark 打开 NAT_ISP_side.pcap 文件,截图如下:
需要注意的是,此文件和 NAT_home_side的时间戳不同步,因为两个位置的数据包捕获不是同时启动的。(实际上,在ISP链路上捕获的数据包的时间戳小于在客户端PC上捕获的数据包的时间戳),根据实验指导书继续回答以下问题:
6.在NAT_ISP_side捕获包中,查找 HTTP GET 消息在时间 7.109267从客户端发送到 Google 服务器的(其中 t=7.109267 是将此发送的时间记录在 NAT_home_side跟踪文件中)。 此消息在什么时间出现在NAT_ISP_side跟踪文件中? 携带此 HTTP GET 的 IP 数据图上的源和目的地 IP 地址以及 TCP 源和目的地端口(记录在NAT_ISP_side捕获包中)是什么? 这些字段与问题3中哪些是相同的,哪些是不同的?
- 时间:6.069168 s
- 源IP地址: 71.192.34.104
- TCP源端口号: 4335
- 目的IP地址: 64.233.169.104
- 目的端口号: 80
- 字段不同处:除IP源地址不同外,其他字段均相同(字段更改原因:由路由器转发,源IP地址改为路由器的地址)
7.HTTP 获取消息中的任何字段是否已更改?携带 HTTP GET 的 IP 数据报中的以下哪些字段已更改:版本、头长度、标志、校验和。 如果这些字段中的任何一个已更改,请给出一个原因(用一句话)说明该字段更改的原因。
只有校验和不同,其余的字段均未被修改。计算校验和时需要加上源地址,由于源地址发生了变化故校验和也会变化。
8.在NAT_ISP_side捕获包中,从 Google 服务器收到的第一个 200 个 OK HTTP 消息在什么时间? 携带此 HTTP 200 OK 消息的 IP 数据图上的源和目的地 IP 地址以及 TCP 源和目的地端口是什么?这些字段与问题4中哪些是相同的,哪些是不同的?
- 时间:6.117570 s
- 源IP地址: 64.233.169.104
- TCP源端口号: 80
- 目的IP地址: 71.192.34.10
- 目的端口号: 4335
- 字段不同处:除IP目的地址不同外,其他字段均相同(字段更改原因:HTTP数据包返回需要经过路由器转发,故目的IP地址改为路由器的地址)
9.在NAT_ISP_side捕获包中,与上述问题5中的段相对应的客户端到服务器TCP SYN段和服务器到客户端TCP ACK段是在什么时候捕获的?这两个网段的源和目标IP地址以及源和目标端口是什么?这些字段与问题5中哪些是相同的,哪些是不同的?
- 客户端到服务器TCP SYN段发送时间:6.035475 s
- 服务器到客户端TCP ACK段发送时间:6.067775 s
- SYN段:源IP地址71.192.34.104和目的IP地址64.233.169.104、源端口号4335和目的端口号80
- 响应报文:源IP地址64.233.169.104和目的IP地址71.192.34.104、源端口号80和目的端口号4335
- 字段不同处:除SYN 的源IP地址和 ACK 的目的IP地址不同外,其他字段均相同
10.填写上述问题 1-8 中考虑的 HTTP 连接的 NAT 翻译表条目。
WAN端 | LAN端 |
71.192.34.104:4335 | 192.168.1.100:4335 |
四、额外问题
上面研究的跟踪文件在上面研究的HTTP GET、200OK请求/响应之外,还有其他与谷歌服务器的连接。例如,在NAT_home_side获取包中,考虑客户机到服务器的GET时间为1.572315,GET时间为7.573305。研究这两条HTTP消息的用法,并解释每条消息的用途。
可以看到,这条HTTP报文的Host为 safebrowsing-cache.google.com,Chrome中有google加入的safe browsing software,会定时到safebrowsing-cache.google.com去取黑名单,来检测钓鱼网站和恶意软件。
可以看到,这条HTTP报文的Host为clients1.google.com,这是为了同步个人信息或使用信息。