计算机网络Wireshark实验(西安交通大学)

实验名称 计算机网络Wireshark实验
实验日期 2021 年 5 月 17 日 实验地点 XJTU

一、实验目的
1、 掌握WireShark软件,通过监测网络流量理解计算机网络体系结构的分层原理。
2、 掌握TCP、IP、ETHERNET II协议内容。

二、实验内容
1、 安装WireShark软件
2、 通过WireShark软件捕获实时网络数据
3、 通过DNS协议单元分析网络体系结构的分层原理
1)找到一个有www.xjtu.edu.cn内容的DNS单元,分析请求过程的分层情况
2)找到一个有202.117.1.13内容的DNS单元,分析响应过程的分层情况
4、 通过HTTP协议单元分析TCP、IP、ETHERNET II协议数据单元内容
1)找到一个目的地址为202.117.1.13的HTTP单元,分析请求过程中的TCP、IP、ETHERNET II协议数据单元内容
2)找到一个源地址为202.117.1.13的HTTP单元,分析响应过程中的TCP、IP、ETHERNET II协议数据单元内容

三、实验环境
(1)OS: win10
(2)software: wireshark-3.4.4
(3)Wi-Fi: xjtu_lib

四、实验记录
1.概览
在展开探索每一层的协议数据单元之前,让我们先对在浏览器上打开一个web网页的流程有一个整体的认识。
在这里插入图片描述
Figure 1 👆👆👆

(1) 在浏览器键入www.xjtu.edu.cn 并按下Enter后,browser生成一个TCP socket,用于向www.xjtu.edu.cn发送HTTP Request message。在生成socket的过程中,需要知道www.xjtu.edu.cn的IP地址,所以操作系统调用gethostbyname()生成了一个DNS Query message,放在一个具有port=53的UDP Segment中,再放入一个具有目的IP地址为default local DNS server 的IP地址的IP datagram中(default local DNS server 的IP地址由DHCP分配IP地址时一并发给主机),再将IP datagram放入一个Ethernet frame中,通过路由器和链路层交换机传输到default local DNS server,这即是figure 1中第一个message的内容。

(2) default local DNS server接收到该Ethernet frame后,按照协议规则一层一层的解码,最终抽取出DNS Query message,然后在它的数据库中查找域名www.xjtu.edu.cn,找到包含该域名对应IP地址的DNS资源记录,并按照格式生成DNS Response message,同上述过程包成Ethernet frame,通过链路层传回我们的主机。主机一层一层解码抽取出DNS Response message,即得到了www.xjtu.edu.cn对应的IP地址,这即是figure 1中第二个message的内容。

(3) 得到IP地址后,TCP socket就可以顺利生成了。但是在传送数据之前,主机10.164.247.204中的TCP进程和服务器www.xjtu.edu.cn中的TCP进程先要进行三次握手,对应figure 1中第3、4、5行的内容。

  • 第一次握手:client向server发送SYN报文,seq_client=0;
    作用:server确认client-send和server-receive正常;
  • 第二次握手:server向client发送SYN ACK报文,
    ack_server=seq_client+1=1 ,seq_server=0;
    作用:client确认server-send和client-receive正常,
    并间接确认client-send和server-receive正常;
  • 第三次握手:client向server发送ACK报文,
    ack_client=seq_server+1=1,seq_client=seq_client+1=1;
    作用:server间接确认client-receive和server-send正常;
    经过三次握手后,client和server双方都确认了client-send、client-receive、server-send、server-receive正常,建立了可靠连接,准备开始传输数据。

(4) 浏览器生成一个GET类型的HTTP Request message并送进刚建立的TCP socket,送给server。server收到后,发送一个ACK报文向client确认已收到请求。这一来一回对应于figure 1中第6、7行。

(5) 随后,server开始向client发送其GET请求的内容,而client也在不断向server发送确认收到的ACK报文。本例中server对client的GET请求返回的数据过大,分成了多个TCP包发送,对应figure 1中序号17、19、21、23、25、26这几个包,wireshark也做出了提示[TCP segment of a ressembled PDU],而序号18、20、22、24、27则分别为对应的ACK确认。值得一提的是,本例中发送了6个TCP包,却只返回了5个ACK确认,仔细观察可以发现,27确认了25、26这两个包,这就是TCP的累计确认机制。

(6) 数据传输完毕,client接收到server发来的状态为OK的HTTP Response message后,返回一个ACK确认,分别对应figure1中序号为26、27的包。

(7) 随后,准备关闭TCP socket(注意,上面所有数据都是仅通过port=22333的这一个TCP socket传输的),即四次挥手过程。本例中捕捉到为三次,因为原来的第2、3次挥手合并成了一次,对应figure 1中序号为28、29、30的包。

  • 第一次挥手:client向server发送FIN报文,seq_client=437;
    作用:client向server请求关闭client->server通道;
  • 第二、三次挥手:server向client发送ACK FIN报文,
    ack_server=seq_client+1=438,seq_server=13400;
    作用:server关闭client->server通道,
    并向client请求关闭server->client通道;
  • 第四次挥手:client向server发送ACK报文,
    ack_client=seq_server+1=13401;seq_server=seq_server+1=438;
    作用:client关闭server->client通道;
    经过四次挥手后,TCP的全双工通道均关闭,资源均释放。

(8) 至此,网页内容已经全部显示在浏览器中,通信结束。接下来,更详细的探索将分为2部分:
(a) 通过DNS协议单元分析网络体系结构的分层原理;
(b) 通过HTTP协议单元分析TCP、IP、ETHERNET II协议数据单元内容;

2.通过DNS协议单元分析网络体系结构的分层原理
(1)DNS Query Message
DNS查询报文共有5层协议,自顶向下分别为应用层(DNS)、运输层(UDP)、网络层(IP)、链路层(Ethernet II)、物理层。

在这里插入图片描述

DNS查询报文中,核心内容为Queries字段,该字段包含了此条DNS报文正在进行查询的信息,包括域名部分和类型部分。

本例中,域名部分为www.xjtu.edu.cn,类型部分为A,即表示本条DNS查询报文想要查询www.xjtu.edu.cn对应的IP地址,并且需要返回的资源记录为A类型。

(2)DNS Response Message
DNS响应报文共有5层协议,自顶向下分别为应用层(DNS)、运输层(UDP)、网络层(IP)、链路层(Ethernet II)、物理层。
在这里插入图片描述

DNS响应报文中,核心内容为Answers字段,该字段包含了对于DNS查询报文回答的资源记录,除此之外,Authoritative nameservers字段和Additional records字段还提供了一些额外的资源记录,比如包含上层权威DNS服务器域名的NS类型资源记录和包含权威DNS服务器IP地址的A类型资源记录。

本例中,Answers字段包含一条A类型资源记录,里面记录了域名www.xjtu.edu.cn和对应的IP地址202.117.1.13;Authoritative nameservers字段包含两条NS类型的资源记录,提供了www.xjtu.edu.cn的上层权威DNS服务器的域名,分别为ns2.xjtu.edu.cn和dec3000.xjtu.edu.cn;Additional records字段提供了储存有www.xjtu.edu.cn资源记录的上层DNS服务器dec3000.xjtu.edu.cn对应的IP地址。

3.通过HTTP协议单元分析TCP、IP、ETHERNET II协议数据单元内容
(1)HTTP Request Message
a.应用层:HTTP请求报文主要分为三部分:require line、headline、entity body
require line有三个字段:Method、URL、Version;head line提供了一些相关信息;entity body负责传输真正的数据(如向服务器post表格的时候)。本例中,methor为GET代表向server请求一个页面,URL为空代表访问默认主页,version为HTTP v1.1版本。

b.传输层:TCP

c.网络层:IP

d.链路层:Ethernet II

(2)HTTP Response Message
a.应用层:HTTP响应报文也分为三部分:status line、headline、entity body
status line主要三个字段:version、status code、response phrase;head line提供了一些相关信息;entity body负责传输真正返回的数据;本例中,状态码为200,状态信息为OK,代表请求成功,信息在返回的响应报文里。

b.运输层:TCP

c.网络层:IP

d.链路层:Ethernet II

五、实验总结
TCP/IP四层模型,每一层都有各自的特点,应该对于每一层的报文结构中重要的部分进行相对深入的理解。
关于更多相关的实验内容,我已上传到博客。
HTTP:Wireshark Labs(2): HTTP_v7.0 沉鱼叶的博客-CSDN博客
DNS:Wireshark Labs(3): DNS v7.0_沉鱼叶的博客-CSDN博客
TCP:Wireshark Labs(4): TCP v7.0_沉鱼叶的博客-CSDN博客
IP:Wireshark Labs(6): IP v7.0_沉鱼叶的博客-CSDN博客

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值