文章导航
大三下计算机网络与通信实验报告
一、实验目的
掌握WireShark软件;
通过监测网络流量理解计算机网络体系结构的分层原理。
掌握TCP、IP、ETHERNET II协议内容。
二、实验内容
安装WireShark软件;
通过浏览器访问www.xjtu.edu.cn,使用WireShark监测应用层、传输层、网络层、数据链路层协议数据单元的内容。
(1)在WireShark中捕获某一应用层协议信息,分析数据中每层协议同网络体系结构的对应分层
(2)在WireShark中捕获某一HTTP协议信息,分析数据中TCP、IP、ETHERNET II协议数据单元内容。
三、实验环境
操作系统:Windows10
实验软件:Wireshark 3.2.4-64bit
使用浏览器:Internet Explorer
四、实验记录
1.安装WireShark软件
注:此处安装汉化版Wireshark 3.2.4-64bit
2.通过WireShark软件捕获实时网络数据
(1)点击“Start”键
(2)打开浏览器,在URL输入www.xjtu.edu.cn并回车
(3)点击“Stop”键
(4)存储当前网络数据捕获结果
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协议数据单元内容
五、实验结论及分析
对于每个数据包,我们采用先整体分析,再从上向下的分析方法,即先分析整个数据包的性质,再按照应用层、传输层、网络层、网络层、数据链路层的顺序进行展开分析,上一级的协议数据单元(PDU)的全部或一部分就是下一层的用户数据(SDU),仅分析每一层的协议控制信息(PCI)即可。
1. 通过DNS协议单元分析网络体系结构的分层原理
(1)找到一个有www.xjtu.edu.cn内容的DNS单元,分析请求过程的分层情况
如第四部分所示,我们已经找到了有www.xjtu.edu.cn内容的DNS单元,它是一个请求过程中产生的DNS协议单元。
它每一层遵循的协议如下:
应用层:DNS——域名系统(服务)协议
传输层:UDP——用户数据报协议
网络层:IPv4——网际协议版本4
数据链路层:Ethernet II——以太网协议
① 数据包情况:
里面主要是接口ID、封装形式、到达时间、纪元时间、帧编号(108)、帧长(75bytes)、捕获长度(75bytes)、框架内的协议等等信息。
② 应用层(DNS)协议字段:
DNS报文结构:
第一个Transaction ID为事务 ID,是DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。此处为0xbd8d。 第二个Flags为标志字段,2字节,此处为0x0100 Flags结构:
QR(Response):查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。(1byte)
Opcode:操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。(4byte)
AA(Authoritative):授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
TC(Truncated):表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。
rcode(Reply code):返回码字段,表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。
QR=0表示是查询请求;Opcode=0表示标准查询;AA无效(请求报文无效);TC=0表示未被截断;RD=1表示期望得到一个递归查询;RA无效(请求报文);Z=0保留字段必须为0;rcode=0表示没有错误。
第三个Questions为问题计数,是DNS 查询请求的数目。此处Questions=1表示请求查询的数目为1
第四到第六个Answer RRS、Authority RRs、Additional RRs分别表示: 回答资源记录数(DNS 响应的数目);权威名称服务器计数(权威名称服务器的数目);附加资源记录数(额外的记录数目(权威名称服务器对应 IP 地址的数目))它们都是0,表示都没有。
第七个Queries是问题部分,它的结构为:
Name查询名:一般为要查询的域名,有时也会是 IP 地址用于反向查询。
Type查询类型:DNS 查询请求的资源类型。通常查询类型为 A 类型,表示由域名获取对应的 IP 地址。
Class查询类:地址类型,通常为互联网地址,值为 1。
此处返回的结果为:
查询名字段:这里请求域名www.xjtu.edu.cn;查询类型字段:这里为A类型;查询类字段:这里为IN,表示互联网地址
后面的缺省所以不再表示,将在第二小问中具体介绍。
③ 传输层(UDP)协议字段:
UDP报文格式如下图:
可以看出:
源端口为50005,是我自己电脑分配的端口;目的端口为53,是学校服务器的默认端口;数据报长度为41bytes;校验值为0xde33
④ 网络层(IPv4)协议字段:
IP数据包结构:
Version(版本):4(IPv4); Header Length(头长):20 bytes(5);服务类型:0x00,全部为正常;包裹总长:61bytes;重组标识:0x73d6;标志位:0000允许数据报分段,数据包后面没有包,该包为最后的包;段偏移量:0;生存时间:64;协议代码:UDP(17);头部校验和:0x063f;32位原始地址:192.168.1.105,这是我们宿舍局域网为我分配的IP地址;32位目的地址:61.134.1.4,这应该是局域网路由器的公网IP地址,经过查询,确实是陕西西安电信网的DNS服务器的IP地址。
⑤ 数据链路层(Ethernet II)协议字段:
Ethernet II帧格式:
目的MAC地址:Tp-LinkT_f7:ec:a2 (20:6b:e7:f7:ec:a2)这是我们宿舍路由器的MAC地址,前面有普联公司特有的MAC字段:20:6b:e7;原MAC地址:IntelCor b2:81:c1(cc:2f:71:b2:81:c1),这是我电脑的MAC地址,前面有英特尔酷睿的特有字段:cc:2f:71。
数据字段类型:IPv4
(2)找到一个有202.117.1.13内容的DNS单元,分析响应过程的分层情况
如第四部分所示,我们已经找到了有202.117.1.13内容的DNS单元,它是一个响应过程中产生的DNS协议单元。
它每一层遵循的协议如下:
应用层:DNS——域名系统(服务)协议
传输层:UDP——用户数据报协议
网络层:IPv4——网际协议版本4
数据链路层:Ethernet II——以太网协议
① 数据包情况:
里面主要是接口ID、封装形式、到达时间、纪元时间、帧编号(113)、帧长(91bytes)、捕获长度(91bytes)、框架内的协议等等信息。
② 应用层(DNS)协议字段:
事务 ID为0xbd8d,和之前请求的ID相匹配;
标志位分别为:QR=1表示是响应;Opcode=0表示标准查询;AA=0表示不是权威服务器;TC=0表示未被截断;RD=1表示请求方希望递归查询;RA=1表示服务器支持递归查询;Z=0保留字段必须为0;rcode=0表示没有错误。
Questions=1表示请求查询的数目为1;Answer RRS=1表示回答资源记录数为1、Authority RRs、Additional RRs都是0,表示都没有。
Queries部分:
查询名字段:这里请求域名www.xjtu.edu.cn;查询类型字段:这里为A类型;查询类字段:这里为IN,表示互联网地址
资源记录部分:资源记录部分是指 DNS 报文格式中的最后三个字段,包括回答问题区域字段、权威名称服务器区域字段、附加信息区域字段。这三个字段均采用一种称为资源记录的格式,格式如图所示。
查询名字段:这里请求域名www.xjtu.edu.cn;查询类型字段:这里为A类型;查询类字段:这里为IN,表示互联网地址;生存时间:987(16min27s);数据长度:4;资源数据(返回的地址):202.117.1.13。
③ 传输层(UDP)协议字段:
目的端口为50005,是我自己电脑分配的端口;原端口为53,是学校服务器的默认端口;数据报长度为57bytes;校验值为0xed02
④ 网络层(IPv4)协议字段:
Version(版本):4(IPv4); Header Length(头长):20 bytes(5);服务类型:0x00,全部为正常;包裹总长:77bytes;重组标识:0x73d6和请求的标识相同;标志位:0000允许数据报分段,数据包后面没有包,该包为最后的包;段偏移量:0;生存时间:47;协议代码:UDP(17);头部校验和:0x172f;32位原始地址:61.134.1.4,这是陕西西安电信网的DNS服务器的IP地址;32位目的地址:192.168.1.105,这是我们宿舍局域网为我分配的IP地址。
⑤ 数据链路层(Ethernet II)协议字段:
目的MAC地址:IntelCor b2:81:c1(cc:2f:71:b2:81:c1),这是我电脑的MAC地址,前面有英特尔酷睿的特有字段:cc:2f:71;原MAC地址:Tp-LinkT_f7:ec:a2 (20:6b:e7:f7:ec:a2)这是我们宿舍路由器的MAC地址,前面有普联公司特有的MAC字段:20:6b:e7。
数据字段类型:IPv4
2.通过HTTP协议单元分析TCP、IP、ETHERNET II协议数据单元内容
(1)找到一个目的地址为202.117.1.13的HTTP单元,分析请求过程中的TCP、IP、ETHERNET II协议数据单元内容
如第四部分所示,我们已经找到了目的地址为202.117.1.13的HTTP单元,它是一个请求过程中产生的HTTP数据单元。 它每一层遵循的协议如下: 应用层:HTTP——请求-响应协议 传输层:TCP——传输控制协议 网络层:IPv4——网际协议版本4 数据链路层:Ethernet II——以太网协议 ① 数据包情况:
里面主要是接口ID、封装形式、到达时间、纪元时间、帧编号(159)、帧长(340bytes)、捕获长度(340bytes)、框架内的协议等等信息。
② 应用层(HTTP)协议字段:
HTTP的请求报文包括:请求行(request line)、请求头部(header)、空行 和 请求数据(request data) 四个部分组成。
请求行包括: 请求方法,URL(包括参数信息),协议版本这些信息:
GET /_sitegray/_sitegray_d.css HTTP/1.1
请求头部(Header)是一个个的key-value值:
空行(CR+LF):请求报文用空行表示header和请求数据的分隔:
请求数据:GET方法没有携带数据, POST方法会携带一个body:
③ 传输层(TCP)协议字段:
TCP数据包结构:
源始端口:52203(本机端口);目的端口:80(TCP协议默认端口);数据序号:1;确认序号:1;偏移(头部字节数):20bytes;保留部分:0;U、A、P、R、S、F:0 1 1 0 0 0(紧急指针字段无效,确认号字段有效,上交数据,复位字段无效,同步字段无效,中止字段无效);窗口字段:1024(对应的窗口大小为262144);包校验和:0x047f;紧急指针:0。
④ 网络层(IPv4)协议字段:
Version(版本):4(IPv4); Header Length(头长):20 bytes(5);服务类型:0x00,全部为正常;包裹总长:326bytes;重组标识:0x28b5;标志位:4000禁止数据报分段,数据包后面没有包,该包为最后的包;段偏移量:0;生存时间:64;协议代码:TCP(6);头部校验和:0x8369;32位原始地址:192.168.1.105,这是我们宿舍局域网为我分配的IP地址;32位目的地址:202.117.1.13,这是学校服务器的IP地址。
⑤ 数据链路层(Ethernet II)协议字段:
目的MAC地址:Tp-LinkT_f7:ec:a2 (20:6b:e7:f7:ec:a2)这是我们宿舍路由器的MAC地址,前面有普联公司特有的MAC字段:20:6b:e7;原MAC地址:IntelCor b2:81:c1(cc:2f:71:b2:81:c1),这是我电脑的MAC地址,前面有英特尔酷睿的特有字段:cc:2f:71。
数据字段类型:IPv4
(2)找到一个源地址为202.117.1.13的HTTP单元,分析响应过程中的TCP、IP、ETHERNET II协议数据单元内容
如第四部分所示,我们已经找到了源地址为202.117.1.13的HTTP单元,它是一个响应过程中产生的HTTP数据单元。 它每一层遵循的协议如下: 应用层:HTTP——请求-响应协议 传输层:TCP——传输控制协议 网络层:IPv4——网际协议版本4 数据链路层:Ethernet II——以太网协议 ① 数据包情况:
里面主要是接口ID、封装形式、到达时间、纪元时间、帧编号(164)、帧长(226bytes)、捕获长度(226bytes)、框架内的协议等等信息。
② 应用层(HTTP)协议字段:
HTTP的响应报文包括:状态行,响应头,空行,数据(响应体):
状态行包括:HTTP版本号,状态码和状态值组成:
响应头类似请求头,是一系列key-value值:
空白行:同上,响应报文也用空白行来分隔header和数据:
响应体:响应的data,本例中是一段js脚本。
在另一个例子中,响应体是一张jpg图片:
③ 传输层(TCP)协议字段:
源始端口:80(TCP协议默认端口);目的端口:52203(本机端口);数据序号:4321;确认序号:280;偏移(头部字节数):20bytes;保留部分:0;U、A、P、R、S、F:0 1 1 0 0 0(紧急指针字段无效,确认号字段有效,上交数据,复位字段无效,同步字段无效,中止字段无效);窗口字段:123(对应的窗口大小为15744);包校验和:0xec9a;紧急指针:0。
④ 网络层(IPv4)协议字段:
Version(版本):4(IPv4); Header Length(头长):20 bytes(5);服务类型:0x00,全部为正常;包裹总长:212bytes;重组标识:0xfcfd;标志位:4000禁止数据报分段,数据包后面没有包,该包为最后的包;段偏移量:0;生存时间:59;协议代码:TCP(6);头部校验和:0xb492;32位原始地址:202.117.1.13,这是学校服务器的IP地址;32位目的地址:192.168.1.105,这是我们宿舍局域网为我分配的IP地址。
⑤ 数据链路层(Ethernet II)协议字段:
源MAC地址:Tp-LinkT_f7:ec:a2 (20:6b:e7:f7:ec:a2)这是我们宿舍路由器的MAC地址,前面有普联公司特有的MAC字段:20:6b:e7;目的MAC地址:IntelCor b2:81:c1(cc:2f:71:b2:81:c1),这是我电脑的MAC地址,前面有英特尔酷睿的特有字段:cc:2f:71。 数据字段类型:IPv4
六、实验体会
这次实验我通wireshark软件对访问学校官网的过程做了简单的抓包,通过软件的展示,我研究了应用层的两个协议:DNS和HTTP的不同工作过程。它们都遵循同样的分层模式,在数据链路层都是Ethernet II,在网络层都是IPv4,这与我们宿舍网络配置有关。而对于传输层,DNS使用的是不太可靠的UDP协议,而HTTP采用的是比较可靠的TCP协议,这也与它们传递的信息不同有关。 在实验过程中,我分析了DNS和HTTP的简要结构,也在这个基础上向下研究了TCP、UDP、IP、Ethernet II的协议数据单元的内容,对于计算机网络的分层结构有了更深入的了解。实验中最大的感受就是在互联网传递一个简单信息时要产生许多的“冗余信息”,正是网络中每一层产生的这些控制信息,才能保证我们在网络中使用不太可靠的物理设备进行可靠的数据连接。