一、网络配置
由于本次作业须使用自己的学号作为IP地址,要修改IP地址的主机位为我的学号38,因此进入更改适配器选项——网卡属性——双击Internet协议版本4(TCP/IPv4)——修改IP地址为172.24.58.38,子网掩码为255.255.224.0,默认网关为172.24.48.1,DNS首选服务器为10.1.1.3,备用服务器为10.1.1.2。并在命令提示符中输入ipconfig命令查看配置信息是否正确。
对IP地址的修改首先要注意网关的地址要与修改前的一致,且修改后的IP地址与网关必须处于同一网段内,通过IP地址与子网掩码的与运算可判断本机IP与网关是否在同一网段内。
网络地址规划表:
源IP地址 |
目的IP地址 |
域名 |
172.24.58.38 |
183.232.231.174 |
www.baidu.com |
172.24.58.38 |
183.232.231.172 |
www.baidu.com |
最后进入命令提示符输入ping www.baidu.com,发现可以连通互联网。
二、应用层分析
2.1 对于www(HTTP)协议分析
尽量关闭系统的后台软件,减少网络流量,再打开wireshark软件,打开浏览器进入www.baidu.com网址,可看到wireshark软件成功抓到数据包。
网络的第1帧,当打开浏览器进入网址时,主机首先会像DNS地址解析服务器发送请求报文,标识为A,请求解析域名为www.baidu.com的IP地址。随后在第2帧里,DNS服务器会返回给主机一段该域名的IP地址信息,可以看到www.a.shifen.com并不是百度的网址,因此它是百度的代理服务器,其IP地址为183.232.231.172与183.232.231.174,这两个IP地址都是该代理服务器的地址。随后在第6-10帧,本机向该服务器进行TCP三次握手建立连接,并在发送第6帧时发送请求HTTP客户端的请求报文,请求方法为GET,服务器收到请求报文后在第10帧发送客户端的响应报文给主机。
找到类型为HTTP的数据可看到百度的代理服务器(IP地址为183.232.231.172)给本机发送响应报文(第10帧)的一些信息:
源MAC地址:08:35:71:eb:09:4a
目的MAC地址:0c:9d:92:10:e9:42
源IP地址:183.232.231.172
目的IP地址:172.24.58.38
源端口号: 80
目的端口号:51376
序号seq为1
报文长度len为485
HTTP协议版本为HTTP/1.1 状态为302
定位:https://www.baidu.com/\r\n
2.2直播
与网页相比,直播间的数据抓包大有不同。在DNS域名解析上,本机会对直播间的网址进行多重请求:直播间的网址、直播软件客户端网址、弹幕系统等多个服务器。DNS对多个域名进行解析后,本机向所有域名建立TCP连接,最后进入网页加载直播播放器的数据。
在http协议上,主机同样会向该直播间网址的服务器、直播播放器服务器进行客户端申请,申请方法为GET,并获得服务器回复,最终登录直播网站。
三、传输层分析
3.1 TCP协议建立连接3次握手
在上文对www.baidu.com网站的抓包中,也有相应的TCP协议产生,TCP协议的3次握手建立连接,4次握手释放连接。在3次握手建立连接的过程中,本机首先会向服务器发一段请求连接报文(同步号SYN=1,序号seq=x),服务器接收到请求连接报文后会返回给本机一段确认并请求本机连接的报文(SYN=1 ACK=1,seq=y,ack=x+1),最后主机再向服务器发送确认报文(ACK=1,seq=x+1,ack=y+1),完成3次握手。以下对TCP协议的3次握手建立连接进行分析。
在第4帧中本机向服务器发送请求连接报文:
源端口号:51376
目的端口号:80
报文首部长度为32bytes
SYN=1
ACK=0 确认号无效
序号seq=0
窗口大小为65535
校验和:0x599f
在第6帧中服务器的TCP收到连接请求报文段后,返回确认报文,同时服务器向主机发起连接请求报文:
源端口号:80
目的端口号:51376
报文首部长度为32bytes
SYN=1
ACK=1 确认号有效
确认号ack=1
序号seq=0
窗口大小为8192
校验和:0xd7c5
在第7帧中,主机收到服务器的确认和连接请求后,向服务器发送确认连接报文,双方建立连接:
源端口号:51376
目的端口号:80
报文首部长度为20bytes
SYN=0
ACK=1 确认号有效
确认号ack=1
序号seq=1
窗口大小为262144
校验和:0x345a
3.2 TCP协议4次握手释放连接
由于百度服务器对外隐藏自己的服务器真实地址,因此会转接多个服务器,在本机断开连接时,所连接的服务器地址转接至IP地址为13.107.3.128的服务器,现在关闭浏览器,TCP协议进行4次握手释放连接。本机先会向服务器主动发送释放连接请求报文(FIN=1,seq=u);服务器收到请求报文后会向本机发送一段确认收到报文(ACK=1,seq=v,ack=u+1),同时也会发送一条释放连接请求报文(FIN=1,ACK=1,seq=w,ack=u+1);本机收到这两条报文后再向服务器发送一条确认收到报文(ACK=1,seq=u+1,ack=w+1),完成4次握手。
在第304帧中,关闭浏览器,主机向服务器主动发起释放连接请求报文:
源端口号:63156
目的端口号:443
报文首部长度为20bytes
FIN=1
ACK=1 确认号有效
确认号ack=6831
序号seq=1442
窗口大小为262144
校验和:0xf436
在第309帧中,服务器接收到释放连接请求报文并同意释放连接,服务器的TCP进程通知高层应用进程,最后向主机发送确认报文与释放连接报文:
第309帧,确认报文:
源端口号:443
目的端口号:63156
报文首部长度为20bytes
ACK=1 确认号有效
确认号ack=1443
序号seq=6831
窗口大小为263168
校验和:0xf832
第310帧,释放连接报文:
源端口号:443
目的端口号:63156
报文首部长度为20bytes
FIN=1
ACK=1 确认号有效
确认号ack=1443
序号seq=6831
窗口大小为262144
检验和:0xf831
主机收到服务器的确认报文与释放连接报文后,向服务器发送确认报文(第309帧):
源端口号:63156
目的端口号:443
报文首部长度为20bytes
ACK=1 确认号有效
确认号ack=6832
序号seq=1443
窗口大小为262144
校验和:0xf435
3.3 UDP协议
DNS域名解析系统采用了UDP协议,主机向DNS发送请求时使用了UDP报文:
源端口号:50345
目的端口号:53
报文长度:39
校验和:0xf17a
相对于TCP协议,UDP协议的传输效率更高,但是不能保证数据包的可靠性,因此DNS采用UDP协议来降低服务器的负载,同时降低网络流量。此外,DNS服务器的网络环境通常非常稳定,万一数据丢失需要重发时的损失也不大,而当DNS服务器之间的数据传输就必须使用TCP协议来保证数据包的正确率。
四、网络层分析
4.1 IP报文分析
随机查看一段报文(第4帧),分析IP报文段。
从该IP报文段中可看出:
版本号为4,即IPV4协议版本
头部长度:20bytes
服务类型:0x00默认值
报文总长度:52
标识字段:0x592c
标志字段:0x02
DF=1不可分片
MF=0最后一个分片
片偏移字段:0
生存时间TTL:64
协议字段:TCP定义为用TCP协议传送数据
首部校验和:0x0000
源IP地址:172.24.58.38
目的IP地址:183.232.231.172
4.2 ARP协议分析
设置宿舍里另一台主机的IP地址信息为172.24.50.191/19,网关同为172.24.48.1通过IP地址、子网掩码与运算得出本机与另一台主机处于同一网段中。关闭双方的防火墙,在本机中输入ping命令,双方建成连接。
通过wireshark软件捕获到ARP请求数据帧:
设备类型:以太网
版本类型:IP
设备大小:6
版本大小:4
操作码:request请求
源MAC地址:0c:9d:92:10:e9:42
源IP地址:172.24.58.38
目的MAC地址:00:00:00_00:00:00
目的IP地址:172.24.50.191
本机发送了一段ARP广播帧(第10帧),网段内的所有主机均收到此广播帧,表示提问哪个网卡的IP地址是172.24.50.191。
随后同网段内IP地址为172.24.50.191的主机发送了单播响应报文(第11帧)响应本机的请求:
设备类型:以太网
版本类型:IP
设备大小:6
版本大小:4
操作码:reply回复
源MAC地址:80:fa:5b:48:05:ec
源IP地址:172.24.50.191
目的MAC地址:0c:9d:92:10:e9:42
目的IP地址:172.24.58.38
该主机的报文译为IP地址为172.24.50.191的MAC地址为80:fa:5b:48:05:ec。
同理,目的主机同样会发送广播帧(第22、23帧)请求本机的MAC地址,存放在路由表中。
4.3 ICMP协议
在本机找到目的MAC地址后,进行ICMP协议的ping命令,捕获到ICMP协议ping命令的数据包(第12帧):
类型:8(请求)
操作码:0
校验和:0x4c5b
标识字段:0x0100
序列号:1(0x0001)
序列号(LE):256(0x0001)
数据长度:32bytes
本机向主机172.24.50.191通过ping命令发送ICMP请求报文,数据大小为32字节。
注:对于序列号与序列号(LE)的区别是wireshark为了区分Windows系统与Linux系统的ping命令中标识字段顺序不一样的问题,两者同样指向相同的对应数值。
主机172.24.50.191接收到本机的ICMP请求报文后向本机发送响应报文(第13帧):
类型:0(响应)
操作码:0
校验和:0x545b
标识字段:0x0100
序列号:1(0x0001)
序列号(LE):256(0x0001)
数据长度:32bytes
在DOC命令中可看到ping命令共执行了4遍,在之后的第14、16、18-21帧做出相同的操作,即请求——响应,数据大小相同,标识字段相同,序列号则分别是1、2、3、4(0x0001、0x0002、0x0003、0x0004)。
五、数据链路层分析
5.1 MAC帧格式分析
以下对www.baidu.com抓包中的第6帧进行MAC帧格式分析。
从图中可获得以下信息:
到达时间:十月 27,2019 15:34:30
历元时间:1572161670.231918000秒
与前一帧捕获的时间间隔:0.006860000秒
与前一帧显示时间间隔:0.006860000秒
与第一帧捕获的时间间隔:0.046210000秒
帧序号:6
帧总长度:66bytes(528bits)
总捕获长度:66bytes(528bits)
该帧是否被标记:否
该帧是否被忽略:否
帧内封装的协议层次结构:eth(以太网协议):ip(IP协议):tcp(TCP协议)
颜色填充规则:HTTP
颜色填充字符串:http||tcp.port == 80
5.2 MAC地址分析
源MAC地址:0c:9d:92:10:e9:42
目的MAC地址:08:35:71:eb:09:4a
封装的上层协议类型:IP协议