赞
踩
1、 学习安装、使用协议分析软件。
2、掌握基本的数据报捕获、过滤和协议的分析技巧,能对抓取数据包进行分析。
使用 Windows 操作系统;具备 Internet 连接。抓包软件 Wireshark。
1、协议分析软件的安装和使用。
2、学会抓取数据包的方法并对对抓取数据包进行分析。
1、打开 Wireshark 程序执行抓包,访问深大外网网站 https://www.szu.edu.cn/。
2、抓包并分别分析 DNS、HTTP、TCP、UDP 数据包。
3、结合层次结构,截图给出各协议的封装和含义。
4、给出 TCP、UDP、IP 和 EthernetII 协议头部大小,结合抓取的数据包分析有效载荷
如图 1所示,打开Wireshark软件,选择想要监听的网卡。 若能正常返回响应,且用时和丢包率均不高,说明能与目标主机正常通信。
如图 2所示,启动抓包,在过滤器部分选择想要抓取的封包,对数据进行过滤。
最上面一栏分别显示的是封包编号、抓取时间,源地址和目标地址,所用协议、数据包长度与数据包信息。
双击封包或查看界面下方,可查看该封包每层结构的具体信息。如图 3所示包括:
1、Frame物理层数据帧信息,物理层封装将数据帧转换成电信号,并通过物理网络传输到目标计算机。
2、Ethernet II: 数据链路层以太网帧头部信息,数据链路层封装将 DNS 数据报封装成数据帧,以便在物理网络上传输。
3、Internet Protocol Version 4: 互联网层IP包头部信息,网络层封装使用 IP(Internet Protocol)协议将 DNS 数据报从传输层传输到数据链路层。
4、Transmission Control Protocol: 传输层T的数据段头部信息,传输层封装使用 UDP或 TCP将 DNS 数据报从应用层传输到网络层。
5、Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议,应用层封装负责将应用程序中的 DNS 请求封装成 DNS 协议格式的数据报,然后通过网络发送到 DNS服务器。
DNS(Domain Name System,域名系统)协议是一个分布式的命名系统,它用于将域名转换为IP地址。DNS协议在网络协议栈中位于应用层,一般使用UDP协议在传输层进行通信。当返回的数据量较大时,为确保数据的可靠性,就需要使用TCP协议进行通信。
DNS在应用层添加DNS头部,使其成为DNS消息进行传输,头部长度一般为12字节,包括以下字段:
1、标识(16 bit):用于标识查询消息和响应消息之间的关系。
2、标志(16 bit):包括查询/响应标志、操作码、授权回答标志、递归查询标志等。
3、问题数(16 bit):指定DNS消息中包含的查询数量。
4、回答数(16 bit):指定DNS消息中包含的响应数量。
5、权威记录数(16 bit):指定DNS消息中包含的权威记录数量。
6、附加记录数(16 bit):指定DNS消息中包含的附加记录数量。
打开Wireshark软件监听,访问深大外网网站https://www.szu.edu.cn/。访问网站,首先网站域名要经过DNS服务器解析IP。
如图 5所示,通过过滤,我们可以看到有两组DNS封包与szu.edu.cn有关。
其中一组是A类型,提供域名到IPv4地址的映射;另一组是AAAA类型,提供域名到IPv6地址的映射。
以本机服务器向DNS服务器发出A类域名解析请求为例。如图 5数据报解读如下:
1、Frame物理层可以看到数据包总长度为74字节(592比特)。
2、EthernetII数据链路层的头部大小为14字节,其中12字节分别表示源和目的的地址,2字节表示类型。可以看到数据源地址在名为Dell的主机上,目的地在杭州的服务器。
3、IP网络层的头部大小为20字节,其中8个字节存储了主机IP和DNS服务器IP,DNS服务器地址为114.114.114.114,使用的协议为Ipv4。
4、Protocol传输层的头部大小为8字节,主机端口为51179,DNS服务器端口为53,使用的协议为UDP。
5、应用层存储了该请求报文的主要信息,长度为32字节,其内容另外解读。
应用层内容解读:
1、Transaction ID:0xacda 标识字段;
2、Response:0,标准DNS查询请求;
3、Truncated:0,没有发生截断;
4、Recursion desired:1,期望得到递归回答;
5、查询域名:www.szu.edu.cn
如图 6可见本机向DNS服务器发出了一条ID为0xacada、没有被截断、期望得到递归回答的标准DNS查询请求,所查询的域名为www.szu.edu.cn。
根据最下方的Response,我们可以看到DNS服务器的回复报文在1584条。如图 7所示,其回复内容(应用层)解读如下:
1、Transaction ID:0xacda 标识字段,和请求报文一致;
2、Response:1,标准DNS回复报文;
3、Reply code:0,没有发生错误;
4、Recursion available:1,服务器可以做递归查询;
5、查询域名:www.szu.edu.cn
6、域名解析结果Addr:210.39.4.1,数据长度为4个字节。
可见DNS服务器向本地服务器发出了一条没有错误、递归查询的DNS查询答复,所查询的域名为www.szu.edu.cn,解析出来的IP地址为210.39.4.1。
DNS服务器成功查询所需域名对应的IP地址,并成功发回了本机服务器。
TCP(Transmission Control Protocol,传输控制协议)是一种基于连接的、可靠的、面向字节流的传输协议。TCP在互联网协议族中属于传输层协议,是因特网的核心协议之一。TCP是一种可靠的数据传输协议,通过建立连接、数据分段和确认、重传机制、流量控制和拥塞控制等机制来确保数据的可靠传输。
TCP协议建立通信需要进行三次握手,具体步骤如下:
第一次握手:客户端发送SYN(同步)数据包给服务器端,请求建立连接。SYN包中会包含客户端的初始序列号。客户端进入SYN_SEND状态,等待服务器端的确认。
第二次握手:服务器端收到客户端发送的SYN数据包后,发送一个SYN+ACK(同步和确认)数据包给客户端,表示同意建立连接。SYN+ACK包中会包含确认号和服务器端的初始序列号。服务器端进入SYN_RECV状态,等待客户端的确认。
第三次握手:客户端收到服务器端发送的SYN+ACK数据包后,向服务器端发送一个ACK(确认)数据包,确认连接已建立。ACK包中包含客户端的序列号和确认号。客户端进入ESTABLISHED状态,服务器端也进入ESTABLISHED状态,TCP连接建立完成。
经过三次握手之后,双方就可以开始进行数据的传输了。
TCP在传输层为数据包加上20字节的TCP头,包含源端口和目标端口的信息,以及一些控制标志。用于实现可靠的传输和流控制。分别是:
1、源端口号(16 bit):标识发送端的应用程序使用的端口号。
2、目的端口号(16 bit):标识接收端的应用程序使用的端口号。
3、序列号(32 bit):用于对发送的数据进行编号,以便接收端进行排序和重组。
4、确认号(32 bit):用于确认已经收到的数据,以便进行数据重传和流控制。
5、数据偏移(4 bit):指定TCP头部的长度,以便接收端正确解析TCP数据包。
6、标志(6 bit):包括URG、ACK、PSH、RST、SYN和FIN等标志,用于控制TCP连接的建立、维护和关闭。
7、窗口大小(16 bit):用于流控制,指定发送端可以发送多少个字节的数据。
8、校验和(16 bit):用于检测TCP数据包在传输过程中是否有错误发生。
9、紧急指针(16 bit):用于指定TCP数据包中紧急数据的结束位置。
根据我们刚才获取的深大官网IP地址,进行IP和TCP过滤,可以得到多条TCP封包信息。如图 8所示,前三条为三次握手建立过程。
1、Frame物理层看到该数据报总长度为66字节(528比特)。
2、EthernetII数据链路层的头部大小为14字节,主机地址在名为Dell的主机上,目的地在杭州的服务器。
3、IP网络层的头部大小为20字节,主机IP为172.29.97.108,目标服务器IP为210.39.4.1,使用的协议为Ipv4。
4、Protocal传输层头部大小为32字节,使用的协议为TCP,主机端口为7174,目标服务器端口为443。
首先可以看到Flag:0x002后面有SYN标识,意味这本数据报是第一次握手的SYN同步数据报。
第一次握手请求的初始序列号Sequence Number相对值为0,实际值为263749523,同时Acknowledgment Number也为0。
发送完第一次握手请求后,主机端就进入SYN_SEND状态,等待服务器端的第二次握手请求。
1、Frame物理层看到该数据报总长度为66字节(528比特)。
2、EthernetII数据链路层的头部大小为14字节,主机地址在杭州服务器,目的地在本地主机Dell,与第一次握手相反。
3、IP网络层的头部大小为20字节,主机IP为210.39.4.1,目标服务器IP为172.29.97.108,与第一次握手相反,使用的协议为Ipv4。
4、Protocal传输层头部大小为32字节,使用的协议为TCP,主机端口为443,目标服务器端口为7174。
首先可以看到Flag:0x012后面有SYN,ACK标识,意味这本数据报是服务器端收到客户端发送的SYN数据包后,向客户端发送的第二次握手同步和确认数据报。
第二次握手答复的序列号Sequence Number相对值为0,实际值为3243080206,同时Acknowledgment Number被改为第一次握手seq+1,即为1。
发送完第二次握手请求后,服务器端表示同意建立通信,进入SYN_RECV状态,等待客户端的第三次握手确认。
1、Frame物理层看到该数据报总长度为54字节(432比特)。
2、EthernetII数据链路层的头部大小为14字节,主机地址在名为Dell的主机上,目的地在杭州的服务器。
3、IP网络层的头部大小为20字节,主机IP为172.29.97.108,目标服务器IP为210.39.4.1,使用的协议为Ipv4。
4、Protocal传输层头部大小为32字节,使用的协议为TCP,主机端口为7174,目标服务器端口为443。
首先可以看到Flag:0x012后面有ACK标识,意味这本数据报客户端收到服务器发送的SYN+ACK数据包后,向服务器发送的第三次握手确认数据报。
第三次握手请求的序列号Sequence Number相对值为1,实际值为263749524, Acknowledgment Number相对值为第二次握手seq+1,实际值为3243080207。
发送完第三次握手请求后,主机端和服务器端都进入ESTABLISHED状态,TCP连接建立完成。
经过TCP三次握手后,连接建立,可以进行数据传送。而关闭TCP通信,需要经历相似的四次握手过程。
UDP(User Datagram Protocol)是一种传输层协议,用于在计算机网络中传输数据包。它是一个简单的、无连接的协议,不提供可靠性、流量控制、拥塞控制、重传等服务,也不保证数据包的顺序性,因此数据包有可能丢失或乱序。UDP的主要优势在于它的高效性和低延迟性,因为它不需要在每个数据包中添加额外的控制信息。
数据在应用层被封装为数据报后,在传输层被UDP协议加上UDP头,UDP头有8个字节,包含以下字段信息:
1、源端口号(16 bit):标识发送端的应用程序使用的端口号。
2、目的端口号(16 bit):标识接收端的应用程序使用的端口号。
3、UDP长度(16 bit):指定UDP数据报的长度,包括UDP头和数据部分。
4、校验和(16 bit):用于检测UDP数据报在传输过程中是否有错误发生。
我们访问www.szu.edu.cn时,要先将域名传送至DNS服务器解析为IP地址,这个传输过程使用的就是UDP协议,故使用DNS数据报进行内容分析即可。
由于该DNS报文已经做过分析,故这里只分析其UDP头的内容,如图 12所示。
1、源端口号为51179,目的端口号为53.
2、检验和Checksum为0xf2a7
3、总长度Length为40,数据报长度为40-8=32字节。
HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在Web应用程序之间传输数据。HTTP协议基于客户端-服务器模型,客户端发送HTTP请求到服务器,服务器响应HTTP请求并返回数据。
HTTP是应用层协议,能在应用层将HTTP消息打包成标准的数据报格式进行传输,其对信息的封装主要由以下部分构成:
1、HTTP请求行:包括请求方法、请求资源路径以及HTTP协议版本号。
请求方法有GET、POST、HEAD、PUT、PATCH、DELETE、TRACE等。
2、HTTP请求头部:包括请求的相关信息,如请求的主机、Accept头、Content-Type头等。
3、HTTP请求主体:可选部分,包含请求的实际数据。
4、HTTP响应行:包括响应的状态码、状态消息以及HTTP协议版本号。
响应状态码有:200:客户端请求成功、302:重定向、404:请求资源不存在、400:客户端请求有语法错误,不能被服务器所理解、401:请求未经授权、403:服务器拒绝提供服务、500:服务器内部错误、503:服务器当前不能处理客户端的请求等。
5、HTTP响应头部:包括响应的相关信息,如响应的内容类型、响应的长度等。
6、HTTP响应主体:包含实际的响应数据
7、空行:一个空行用于分隔请求头部和请求主体。
经过封装后的HTTP信息,可以被接收方正确的解析和处理,实现Web应用之间的通信。
www.szu.edu.cn在内的许多网站都更换为了HTTPS(HTTP+SSL)等更安全的加密协议(443端口),由于https是加密的,Wireshark无法直接解密HTTPS封包(若有私钥的话可以解密)。故测试网站改为http://www.uooc.net.cn/league/union。
通过查看DNS报文可以看到UOOC平台IP地址为120.78.21.18。经过筛选,如图 13和图 14所示,我们可以看到截取的HTTP的请求和答复报文,还能截取到TCP通信建立的三次握手过程。
首先观察http请求数据包,如图 15所示:
1、Frame物理层可以看到数据包总长度为660字节(5280比特)。
2、EthernetII数据链路层的头部大小为14字节,其中12字节分别表示源和目的的地址,2字节表示类型。可以看到数据源地址在名为Dell的主机上,目的地在杭州的服务器。
3、IP网络层的头部大小为20字节,其中8个字节存储了主机IP和目的地服务器IP,主机IP地址为172.29.97.108,目的地服务器IP地址为120.78.21.18,使用的协议为Ipv4。
4、Protocol传输层的头部大小为20字节,主机端口为10002,http服务器端口为80,使用的协议为TCP。Seq=Ack=1,说明TCP通信已建立,负载为606字节。
5、应用层存储了该http请求报文的主要信息,长度为606字节,其有效内容如下:
① 该报文使用了GET请求方法,使用的协议为HTTP1.1。
② 请求页面信息的域名为www.uooc.net.cn,返回实体主体。
③ 接收的资源格式有文本、html、xml、图片等。
④ 接收的编码方式有gzip,语言优先为zh-CN中文。
观察http答复数据报文如图 16所示:
1、Frame物理层可以看到数据包总长度为558字节(4464比特)。
2、EthernetII数据链路层的头部大小为14字节,其中12字节分别表示源和目的的地址,2字节表示类型。可以看到数据源地址在杭州的服务器,目的地在Dell上。
3、IP网络层的头部大小为20字节,其中8个字节存储了主机IP和目的地服务器IP,主机IP地址为20.78.21.18,目的地服务器IP地址为172.29.97.1081,使用的协议为Ipv4。
4、Protocol传输层的头部大小为20字节,主机端口为80,http服务器端口为10002,使用的协议为TCP。Seq=Ack=1,说明TCP通信已建立,负载为504字节。
5、应用层存储了该http应答报文的主要信息,长度为504字节,其有效内容如下:
① 答复报文的响应状态码为200,说明服务器端成功应答,使用的协议为HTTP1.1。
② 内容类型为:UTF-8编码的文本和html。
③ 打包方式为:gzip。
④ Date为当前时间。
⑤ File Data为html网页主体内容,被http协议压缩后传输给用户,再被解析就能在用户端显示网页,带线啊哦为65845字节。
通过本次实验,我掌握了Wireshark的基本操作,并通过实操分析了DNS、HTTP、TCP、UDP数据包。更加深刻了理解了各种协议的特点和用途,学习了从数据报在提取有用信息。
同时,通过逐层分析不同协议的封装和有效载荷,我对网络协议体系的理解更加深入,形成了更直观的认识,提高了我对计算机网络的认知水平。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。