实验目的
应用所学知识,理解 NAT 协议的运作。
实验步骤与结果
1.任务一:
(1)客户端的 IP 地址是多少?
可见,客户端IP地址为192.168.1.100。
(2)客户端实际上与几个不同的 Google 服务器通信,以实现“安全浏览”(请参阅任务三)。提供主要 Google 网页的服务器地址是 64.233.169.104,为了仅仅显示客户端的请求和服务器的响应,请在 Wireshark 过滤器输入以下过滤条件“http && ip.addr == 64.233.169.104 ”(不包括引号)。请截图当前显示的内容。
(3)请选择在 7.109267 s 时间的客户端发送到 Google 服务器(其 IP 地址为 IP 地址 64.233.169.104)的 HTTP GET。承载此 HTTP GET 的 IP 数据报上的源 IP 地址和目标 IP 地址以及 TCP 源端口和目标端口是什么?
可见,源 IP 地址为192.168.1.100,目标IP地址为64.233.169.104,TCP 源端口为4335,目标端口为80。
(4)对于前一问发送的 HTTP GET 消息,在什么时间客户端从 Google 服务器收到对应的状态码 200、状态 OK 的 HTTP 响应消息?携带状态码 200、状态 OK 的 HTTP 响应消息的 IP 数据报上的源和目标 IP 地址以及 TCP 源和目标端口是什么?
可见在7.158797s客户端从 Google 服务器收到对应的状态码 200、状态 OK 的 HTTP 响应消息。
查看其IP数据报:
可见,源 IP 地址为64.233.169.104,目标IP地址为192.168.1.100,TCP 源端口为80,目标端口为4335。
(5)回想一下,在将 GET 请求发送到 HTTP 服务器之前,TCP 必须首先使用三次 SYN/ACK 消息建立连接。在什么时间客户端发送了含有 TCP SYN 的报文建立连接消息,以后续用于发送在7.109267 s 的 GET 请求?TCP SYN 报文的源 IP 地址和目标 IP 地址以及源端口和目标端口是什么?在什么时间客户端收到了对应的 SYN-ACK 报文?此 SYN-ACK 报文的源和目标 IP 地址以及源端口和目标端口是什么?(注意你需要清除在第 2 题中的过滤器表达式并且输入“tcp”(不含引号)表达式,仅仅显示 TCP 报文消息。)
可见,在7.109267 s 的 GET 请求之前,客户端在7.075657s左右发送了含有 TCP SYN 的报文建立连接消息,在7.108986s左右收到了对应的 SYN-ACK 报文。
查看SYN报文的IP数据报:
可见,源 IP 地址为192.168.1.100,目标IP地址为64.233.169.104,TCP 源端口为4335,目标端口为80。
查看ACK报文的IP数据报:
可见,源 IP 地址为64.233.169.104,目标IP地址为192.168.1.100,TCP 源端口为80,目标端口为4335。
2.任务二:
(1)在 NAT_ISP_side 跟踪文件中,找到跟刚才客户端 7.109267s 同样目的地发送的 HTTP GET 消息(这个时间是在 NAT_home_side 跟踪文件中记录的时间)。该消息何时出现在 NAT_ISP_side 跟踪文件中?承载此 HTTP GET 消息的 IP 数据报的源和目标 IP 地址以及 TCP 源和目标端口是什么?
使用http过滤跟踪文件中的数据包,并找到跟刚才客户端 7.109267s 同样目的地发送的 HTTP GET 消息:
可见该消息在6.069168s出现在NAT_ISP_side 跟踪文件中。查看其IP数据报:
可见,源 IP 地址为71.192.34.104,目标IP地址为64.233.169.104,TCP 源端口为4335,目标端口为80。
(2)与任务一的第 3 问中找到的 HTTP GET 消息相比,此 HTTP GET 消息中的某些字段发生了变化。试分析 IP 层中的所有字段,找到发生改变的字段,说明这些字段的值由原来的什么数值改变成了现在的什么数值,并解释改变的原因。
可以发现,源IP地址相较于任务一的第 3 问中找到的 HTTP GET 消息相比发生了改变。
对比IP层所有字段:
发现校验和Checksum 由0xaef3变为了0x386d,因为源ip地址字段发生了变化,校验和Checksum自然也随之发生改变。
(3)在 NAT_ISP_side 跟踪文件中,从 Google 服务器收到的第一条 HTTP 200 OK 消息在什么时间?携带此 HTTP 200 OK 消息的 IP 数据报上的源 IP 和目标 IP 地址以及 TCP 源和目标端口是什么?与你在任务一的第 4 问对于回答的 NAT_home_side 的结果相比,哪些字段相同,哪些字段不同?
可见,在6.117570s从 Google 服务器收到的第一条 HTTP 200 OK 消息。
查看其IP数据报:
可见,源 IP 地址为64.233.169.104,目标IP地址为71.192.34.104,TCP 源端口为80,目标端口为4335。
易知,目标IP地址发生了变化。
(4)在 NAT_ISP_side 跟踪文件中,跟任务一的第 5 问相同的客户端到服务器 TCP SYN 报文段和服务器到客户端 TCP SYN-ACK 报文段是在什么时间出现的?这两个报文段的源 IP 和目标 IP 以及源端口和目标端口是什么?与你在任务一的第 5 问的回答相比,哪些字段相同,哪些字段与不同?
跟任务一的第 5 问相同的客户端到服务器 TCP SYN 报文段和服务器到客户端 TCP SYN-ACK 报文段分别在6.035475 s 和 6.067775 s出现。
TCP SYN 报文段源 IP 地址为71.192.34.104,目标IP地址为64.233.169.104,TCP 源端口为4335,目标端口为80。
SYN-ACK 报文段源 IP 地址为64.233.169.104,目标IP地址为71.192.34.104,TCP 源端口为80,目标端口为4335。
(5)使用对于之前问题的回答,做出类似图 1 的 NAT 转换表(NAT translation table)。
内网地址及端口 | 外网地址及端口 |
192.168.1.100, 4335 | 71.192.34.104, 4335 |
3.任务三:
除了上面提到的 HTTP GET 消息和 HTTP 200 OK 消息以外,还与其他 Google 服务器有额外的连接,例如,在 NAT_home_side 跟踪文件中,分析时间为 1.572315s 的客户端到服务器 GET 消息,以及时间为 7.573305s 的 GET 消息。仔细研究这两个 HTTP 消息的使用,写出说明分别解释这两个消息的作用。
找到时间为 1.572315s 的客户端到服务器 GET 消息:
以及时间为 7.573305s 的 GET 消息:
作用为检测网络连接是否可用并保证网络通信安全。