windows环境下计算机网络wareshark抓包具体分析
0、wareshark简介0.1 本文目的0.2 wireshark 简介0.3 wireshark 相关链接(下载、配置、使用)0.4 Internet网络分层简述 1、数据链路层1.1 熟悉 Ethernet 帧结构1.1.1 帧结构组成1.1.2 实作:用wireshark抓包查看MAC地址 1.2 了解子网内/外通信时的 MAC 地址1.2.1 实作内容1.2.2 结论: 1.3 掌握 ARP 解析过程1.4 综合结论 2、网络层2.1 熟知网络层ip包结构(以ipv4为例)2.1.1 ip简介2.1.2 ip包格式2.1.3 抓包看结构 2.2 实作:IP 包的分段与重组2.3 实作:考察 TTL 事件 3、传输层3.1 熟悉 TCP 和 UDP 段结构3.1.1 TCP结构3.1.2 UDP3.1.3 抓包看结构 3.2 实作:分析TCP建立和释放连接 4、应用层4.1 了解 DNS 解析4.2 了解 HTTP 的请求和应答 5、总结0、wareshark简介
0.1 本文目的
之前我们简单了解了一些计算机网络的配置信息,和如何得到这些信息,这次我们将通过wareshark来完成一些具体的计算机网络传输的数据包的分析,我将使用Wireshark抓包来和大家一起分析计算机网络各个层中帧、包、段等各自的结构内容,帮助大家更深入的理解计算机网络。
0.2 wireshark 简介
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
0.3 wireshark 相关链接(下载、配置、使用)
wireshark下载 地址
wireshark安装指南
wireshark新手使用指南
0.4 Internet网络分层简述
互联网一般是五层结构,从下层到上层依次是:
物理层(physicallayer)
通过线路(可以是有形的线也可以是无线链路)传送原始的比特(bit)流
只完成一个节点到另一个节点的传送(单跳)
数据链路层(data-link layer)
通过物理网络传送包(package)–这里的包是通过网络层交过来的数据报(datagram)
只完成一个节点到另一个节点的传送(单跳)(hop-by-hop, node-to-node)
网络层(network layer)
把包里面的目的地址拿出来,进行路由选择(routing),决定要往哪个方向传输
负责从源(source)通过路由选择到目的地(destination)的过程,达到从源主机传输数据到目标主机的目的(host-to-host)
传输层(transportlayer)
网络层只把数据送到主机,但不会送到进程。传输层负责负责进程与主机(host)间的传输,主机到主机(host-to-host)的传输交由网络层负责–传输层也称为端到端送
应用层(application layer
专门针对某些应用提供服务
其中下层为上层服务,由于物理层属于电路上的知识,本文就将从其他四层从下层到上层依次解析其数据结构组成。
1、数据链路层
1.1 熟悉 Ethernet 帧结构
1.1.1 帧结构组成
在以太网链路上的数据包称作以太帧(Ethernet)。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。
出自百度百科
1.1.2 实作:用wireshark抓包查看MAC地址
打开你要抓包的网络
查看
目的MAC
为了保密我将mac地址打个马赛克
源MAC
1.2 了解子网内/外通信时的 MAC 地址
1.2.1 实作内容
分别ping旁边机器,ping qige.io ,ping , ping
1、ping旁边机器一下,获得MAC地址
2、ping qige.io获得MAC地址
3、ping百度服务器获得MAC地址
4、ping
1.2.2 结论:
访问本子网的计算机时,目的 MAC 就是该主机的访问非本子网的计算机时,目的 MAC 一致是网关的1.3 掌握 ARP 解析过程
输入命令:arp -d *命令清空 arp 缓存
再输入命令:ping x.x.x.x(同一子网IP)
抓包输入ARP查看结果
用arp -a查看arp表发现已经被记录下来了
-
1.4 综合结论
如果在同一子网下,需要知道其MAC地址直接进行通信,如果不知道,计算机会发一个广播帧来找到这个MAC地址的计算机;但如果不在同一子网下,需要知道对方的网关MAC,发送到对方的网关上,然后网关再根据IP目的地址找到对方网络MAC因此,目的MAC是网关的。
2、网络层
2.1 熟知网络层ip包结构(以ipv4为例)
2.1.1 ip简介
IP协议控制传输的协议单元称为IP数据报(IP Datagram,IP数据报、IP包或IP分组)。IP协议屏蔽了下层各种物理子网的差异,能够向上层提供统一格式的IP数据报。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。IP数据报的格式能够说明lP协议具有什么功能。IPv4数据报由报头和数据两部分组成,其中,数据是高层需要传输的数据,报头是为了正确传输高层数据而增加的控制信息。报头的前一部分长度固定,共20字节,是所有IP数据报必须具有。在首部固定部分的后面是可选字段,长度可变。
2.1.2 ip包格式
具体解析见百度百科
2.1.3 抓包看结构
可以看到有版本、头部长度、总长、标识符、标志、分段偏移量、生命周期TTL、协议、头部校验、源地址、目的地址。
2.2 实作:IP 包的分段与重组
输入命令ping qige.io -l 2000
wireshark抓包查看
可以看出,因为IP包最大长度只能1500B,所以就分成了1500B和500B分别进行传输,第一个包总长为1514B是因为还有帧结构目的MAC地址6B和源MAC地址6B和类型2B共14,而第二个包总长就是562B中除过500B内容外,14B是帧结构,而多的48B就可能和ICMP协议格式有关了。
分段标志如图:
2.3 实作:考察 TTL 事件
输入命令tracert qige.io进行追踪并用wireshark抓包
抓包找到对应ip
10.160.255.254
172.19.2.2
可以注意到,经过一个节点后TTL的值发生了变化,减小了1。
一共经过了12跳即访问到qige.io
3、传输层
3.1 熟悉 TCP 和 UDP 段结构
3.1.1 TCP结构
端口号:16b,源和目的端口唯一定义一条TCP连接顺序号:32b,表明本segment在字节流中的相对位置(开始位置)确认号:32b,希望收到的下一字节序号头部长度:4b,以32b(一行)为单位。TCP头部长度不固定,因此必须设置该字段,实际也指出了数据部分的开始位置FLAGURG紧急位:一般为0。当置1时,表示数据段中有紧急数据,位置从当前顺序号加上紧急指针(偏移量)开始。发送方传输层实体接到进程紧急指示后,后面收到的数据即为紧急数据,将立即发送已有的数据和紧急数据(不再继续累积数据),且到达后接收方立刻中断,将紧急数据提前提交上层应用程序。ACK确认号位:置1表示确认号有效;否则忽略确认号字段。用于连接请求时的第一次握手PSH推位:置1,表示数据段是被“推”过来的,即发送方正在等待一些字节以形成段时突然得到应用程序的Push指令,将立即把此时缓存中的数据形成段,马上递交给IP层(一般在连接好后的第一个请求包置PSH为1)RST恢复位:置1,可用于表示数据段非法(如确认号不对),拒绝(Reject)不正确的连接请求确认等。一般而言,如你接收到了一个RST位为1的段,表明你这方出现了问题。SYN同步位:一般为0。置1时只用在连接建立时的3次握手中的前2次,即用于连接双方互相通知顺序号,初始化一个连接。FIN结束位:置1时用于释放连接,发送方告知接收方已无数据要发送或请求方不再请求数据(现在基本都是4次握手释放)窗口尺寸:16b,接收方告诉发送方:
(确认号-1)之前的字节已经正确接收,还可最多发送这么多字节。
如果为0,表示(确认号-1)之前的字节已正确接收,但希望暂停发送;其后再发送一个有相同确认号但窗口尺寸非0的段告诉发送方恢复传输
校验核选项:必须32b的整数倍,一般在连接建立时,如:
协商MTU
注意:传输层的MTU即MSS(Maximum Segment Size )仅为数据部分,多为1460B
协商窗口尺寸因子:由于窗口尺寸为16b,因此最大为64KB。对于特定情况(如1000Mbps但线路延迟100ms且双方方有足够的缓存)应根据线路的状态和发送方及接收方的情况动态的改变窗口尺寸使得其可以大于64KB(左移因子,最大可将窗口尺寸从16b扩大为30b),以提高线路利用率
协商重发方式:选择性 或全部。缺省为选择性重发(SACK)
3.1.2 UDP
源端口目的端口头部长度校验核3.1.3 抓包看结构
查看方法:
直接在wireshark命令栏输入TCP 或者UDP 如图:
TCP
UDP
3.2 实作:分析TCP建立和释放连接
先输入TCP,在找到具有SYN或者FIN字样的ip,作为过滤项查看内容
找到具有SYN的tcp段
这就是连接建立的时候
找到具有FIN的tcp段
这就是连接释放的时候!!!!
4、应用层
4.1 了解 DNS 解析
1、
输入指令ipconfig /flushdns
2、
①:开启wireshark 抓包ping qige.io设置过滤条件为DNS
②:也可以开启wireshark 抓包,输入指令nslookup qige.io设置过滤条件为DNS
查看细节:
可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。
4.2 了解 HTTP 的请求和应答
开启wireshark抓包并访问qige.io
可以看出一个消息是request另一个是response
而回应消息有一个200,意思是请求成功
状态消息包括
1xx: 信息
该状态码属于临时响应类型,代表请求已被接受,需要继续处理。
该类状态码只包含状态行和某些可选的响应头信息,并以空行结束。
2xx: 成功
该类型的状态码,表示请求已成功被服务器接收、理解、并接受。
3xx: 重定向
该类状态码完成请求的要求是需要客户端采取进一步的操作。它通常用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
4xx: 客户端错误
该类的状态码表示客户端看起来可能发生了错误,妨碍了服务器的处理。
5xx: 服务器错误
该类状态码表示服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器无法使用当前的软硬件资源完成对请求的处理。
具体可点击此处
5、总结
通过本次对计算机网络具体的学习,我们了解了不同的计算机网络层的数据结构构成,了解了他们的功能以及如何使用wireshark去细看一些计算机网络不同层的包装。那么下次,我将用CPT来模拟仿真一个计算机网络,让大家能都对计算机网络有一个更深的了解。
如果觉得《windows环境下计算机网络学习(二)wareshark抓包具体分析》对你有帮助,请点赞、收藏,并留下你的观点哦!