一、网络地址规划
1、网络地址规划表
目的网站名称 | IP地址 | 本地IP地址 | 类型 |
腾讯网 www.qq.com | 121.51.142.21 | 172.31.148.144 | TCP |
腾讯QQ | 183.232.93.32 | 172.31.148.144 | OICQ(UDP) |
2、配置步骤
首先打开命令指示符,然后输入nslookup www.qq.com 就会出现腾讯网的IP地址,由于我选择使用QQ聊天软件抓取UDP报文,所以没有配置图。
3、连通性测试
测试网络的连通性,还是先打开命令指示符,然后输入ping www.qq.com 便会得到来着121.51.142.21的回复,说明连通成功;同理输入ping 183.232.93.32 便会得到来自183.232.93.32的回复,说明连通成功。
二、应用层
1、www(http)
(1)http请求报文
HTTP协议是运行在TCP协议之上的,该报文是实验主机向IP地址发出的HTTP请求。端口号为周知端口号80,主机上的源端口为52638,Next sequence number为861。
(2)http回复报文
这是目的主机给实验源主机发的HTTP回复报文,此时 Sequence Number 为372,Ack number为861,表示源实验主机发送的该号之前的字节它都已经收到。
三、传输层
1、UDP协议
配置好Wireshark登录QQ,就可以获取到UDP协议的数据包,其中OICQ就是腾讯QQ的协议,此协议是基于UDP协议的。
随便选中上述包中的一个,可知源端口为4021,目标端口为8000,长度字节为47,我的QQ为812432708,并且Wireshark认为腾讯QQ的协议在中国是一种流行的协议。
2、TCP协议
(1)、三次握手
从红框看出是一次完整的TCP建立链接的过程:
1.客户端先向服务端443端口发送一个syn标志位,56560->443 seq=x
2.服务端接收到请求,返回一个数据包syn标志位为1,ACK位置为客户端x+1,seq=y,通知客户端,443端口开放,为了保证数据传输可靠性,56560端口务必打开。
3.客户端再一次向服务端发送一个数据包的ACK=y+1,Seq=x+1,56560->443,到此TCP链接建立完成。
下面更直观地感受一下,三次握手过程中标志位的变化情况,首先客户端发送的数据包syn位置1,然后服务器端回复的数据包syn位置1,ack位置1,最后客户端发送的数据包ack位置1.以下三幅图分别为TCP三次握手的数据包中传输层的标志位字段
(2)、四次握手
所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。中断连接端可以是Client端,也可以是Server端。
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
四次挥手分析如下:
- 客户端向服务端停止提出链接请求
- 服务端向客户端提出停止连接请求,FIN = 1 433->56560
- 服务端接收到请求
- 客户端收到,ACK = 1 56560->433
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
四、网络层
1、IP报文
版本:IP协议的版本,此版本为4
首部长度:IP报头的长度。固定部分的长度(20字节)和可变部分的长度之和。共占4位。最大为1111,即10进制的15,代表IP报头的最大长度可以为15个32bits(4字节),也就是最长可为15*4=60字节,除去固定部分的长度20字节,可变部分的长度最大为40字节。
总长度:IP报文的总长度。此报文长度为40
标识:唯一的标识主机发送的每一分数据报。通常每发送一个报文,它的值加一。当IP报文长度超过传输网络的MTU(最大传输单元)时必须分片,这个标识字段的值被复制到所有数据分片的标识字段中,使得这些分片在达到最终目的地时可以依照标识字段的内容重新组成原先的数据。
标志:共3位。R、DF、MF三位。目前只有后两位有效,DF位:为1表示不分片,为0表示分片。MF:为1表示“更多的片”,为0表示这是最后一片。
源IP地址:172.31.148.144
目的IP地址:121.51.142.21
2、ARP协议
如果是请求ARP报文的话,以太网目的地址: 是(全1)的,是广播报,目的是让局域网上所有主机都收到ARP请求包。以太网源地址: 就是发送端地址。帧类型: 如果是ARP报文,值为0x0806。硬件类型: 表明ARP协议实现在那种类型的网络上,它的值为1,即表示以太网地址。协议类型:表示解析协议(上层协议),这里一般是0800,即IP。硬件地址长度:也就是MAC地址长度,即6个字节。协议地址长度:也就是IP地址长度,即4个字节。操作类型:表示ARP协议数据报类型。1表示请求报文,2表示应答报文。发送端以太网地址:也就是源MAC地址。发送端IP地址:也就是源IP地址。目的端以太网地址:目标端MAC地址(如果是请求报文,是全0)。目地端IP地址:也就是目地端的IP地址。
3、ICMP协议
首先在命令提示符中输入:tracert www.qq.com
172.31.148.144发送到121.51.142.21
121.51.142.21发送到172.31.148.144
五、数据链路层
MAC帧格式
源MAC地址:c8 5b 76 8f d4 7d
目的MAC地址:70 f9 6d 47 d9 00
六、总结
通过这次试验,培养了自己动手的能力,另外,通过对wireshark抓包软件的使用,用其来抓取数据包,对TCP协议、UDP 协议、IP报文、 ARP协议、ICMP协议、MAC帧格式的格式有了进一步的了解,通过对报文格式的分析,并且把课本上多学的理论知识与实践结合起来,对以前的知识得到深化和巩固,为以后学习新的知识打下基础,也提高了学习的兴趣,收获很大。
在此次作业中,我遇到的问题有:打开直播网站没有UDP报文。
解决方法:因为QQ的OICQ报文是以UDP为基础的一种报文,所以我抓取了OICQ报文来取代UDP报文。