wireshark初学者使用

介绍

Wireshark是一款网络封包分析软件,截取网络封包,显示其封包的详细信息。日常工作中用的比较多。在使用wireshark之前须了解常用的网络协议。如:tcp,http,ip,udp等。(其实这篇文章是用来给应届生培训的,入门级简单使用),以下图都是从网上找的,感觉很有用

一、wireshark的安装

下载地址:http://www.wireshark.org/ (官方网站有windows64位和32位的下载包)

安装简单,默认选项,直接下一步下一步就可以。

wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,所以在开始抓包之前需要先选择网卡,上图红色框中。

二、抓包过程

1、Capture Filter:捕获过滤器,写抓包规则,用于决定将什么样的信息记录在捕捉结果中,需在捕捉前设置。

语法:protocol+direction+host(s)+value+logical operation 即:

          协议+src/dst+net/port/host+value+not/and/or

例:ip src host 192.168.31.231  捕捉来源IP为192.168.31.231的封包

       tcp dst port 3182  捕捉目的端口为3182的tcp封包

2、Display Filter:显示过滤器。在捕捉结果中查找封包。

语法:protocol.string1.string2+comparison operator+value+logical operations+other expression  

    即:协议.协议的子类+比较运算符+value+逻辑运算符

例:snmp||dns||icmp  显示snmp或者dns或者icmp的封包

       Ip.addre==192.168.31.132  显示来源或目的ip为192.168.31.132的封包

可参照链接:https://www.cnblogs.com/bigben0123/p/5019078.html使用

 逻辑运算符:

英文

C语言

含义

and

&&

or

||

xor

^^

异或

not

!

比较运算符:

英文

C语言

含义

eq

==

等于

he

!=

不等于

gt

>

大于

it

<

小于

ge

>=

大于等于

le

<=

小于等于

点击Expression可以查看支持哪些协议和协议的子类。

三、包分析

1、窗口介绍:

封包详细信息面板介绍:该模块是按照网络层协议来展示

Frame:   物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP

Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

①第一层物理层的数据帧概况

Frame 1 (62 bytes on wire, 62 bytes captured) 1号帧,线路62字节,实际捕获62字节

     Arrival Time: Jan 21, 2018 15:17:33.910261000     捕获日期和时间

     [Time delta from previous packet:0.00000 seconds]此包与前一包的时间间隔

     [Time since reference or first frame: 0.00 seconds]此包与第1帧的间隔时间

     Frame Number: 1                                    帧序号

     Packet Length: 62 bytes                            帧长度

     Capture Length: 62 bytes                           捕获长度

     [Frame is marked: False]                         此帧是否做了标记:否

     [Protocols in frame: eth:ip:tcp]                   帧内封装的协议层次结构

     [Coloring Rule Name: HTTP]               用不同颜色染色标记的协议名称:HTTP

     [Coloring Rule String: http || tcp.port == 80]     染色显示规则的字符串:

②  第二层数据链路层以太网帧头部信息

Ethernet II, Src: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61), Dst: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a)   以太网协议版本II,源地址:厂名_序号(网卡地址),目的:厂名_序号(网卡地址)

    Destination: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a)   目的:厂名_序号(网卡地址)

    Source: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61)    源:厂名_序号(网卡地址)

    Type: IP (0x0800)     帧内封装的上层协议类型为IP(十六进制码0800)

③第三层网层IP包头部信息

Internet Protocol, Src: 202.203.44.225 (202.203.44.225), Dst: 202.203.208.32 (202.203.208.32)    互联网协议,源IP地址,目的IP地址

     Version: 4     互联网协议IPv4

     Header length: 20 bytes                             IP包头部长度

     Differentiated Services Field:0x00(DSCP 0x00:Default;ECN:0x00)差分服务字段

     Total Length: 48                                         IP包的总长度

     Identification:0x8360 (33632)                            标志字段

     Flags:       标记字段(在路由传输时,是否允许将此IP包分段

     Fragment offset: 0   分段偏移量(将一个IP包分段后传输时,本段的标识)

     Time to live :128                                           生存期TTL

     Protocol: TCP (0x06)                         此包内封装的上层协议为TCP

     Header checksum: 0xe4ce [correct]                 头部数据的校验和

     Source: 202.203.44.225 (202.203.44.225)                   源IP地址

     Destination: 202.203.208.32 (202.203.208.32)               目的IP地址

传输层TCP数据段头部信息

Transmission Control Protocol, Src Port: 2764 (2764), Dst Port: http (80), Seq: 0, Len: 0    传输控制协议TCP的内容

     Source port: 2764 (2764)          源端口名称(端口号)

     Destination port: http (80)                 目的端口名http(端口号80)

     Sequence number: 0    (relative sequence number)    序列号(相对序列号)

    Header length: 28bytes                                        头部长度

     Flags: 0x02 (SYN)        TCP标记字段(本字段是SYN,是请求建立TCP连接)

     Window size: 65535                             流量控制的窗口大小

     Checksum: 0xf73b [correct]                         TCP数据段的校验和

     Options: (8bytes)                                            可选项

例:tcp3次握手抓包分析

Tcp连接的建立:1、客户端向服务器申请打开一个端口,用SYN=1 seq=X的tcp报文

                2、服务器发回一个ACK=x+1  SYN=1  seq=Y的报文通知客户端请求报文收到

                3、客户端收到确认报文后向服务器再次发出确认报文,ACK=Y+1 seq=Z,连接建立成功  

注: X,Y,Z为序列号

抓包:下图圈起来的为一个完整的tcp3次握手

第一次握手:标志位为SYN,发送序列号seq=0

第二次握手:标志位为:SYN,ACK  确认序号seq=0  ack=1

第三次握手:标志位为:ACK  确认序号与发送序号都为1  连接建立

可在Statistics-Flow Graph-TCP flow查看TCP数据流,分析确认号与序列号的变化

四、IP协议头结构

  • 4位版本号:IP协议(IPv4)版本号位4

  • 4位头部长度:标识头部有多少个4字节,即最大共15*4个字节

  • 8位服务类型:包含一个4位优先权字段:最小延时,最大吞吐量,最高可靠性和最小费用。

  • 16位总长度:表示整个IP数据报的长度,最大表示65535,但由于MTU限制,一般无法到达这个值。

  • 16位标识:唯一的标识数据报。系统采用加1的式边发送边赋值。

  • 3位标识(保留,DF禁止分片,MF更多分片):所以这个标志是为分片存在,DF设置时禁止分片所以如果数据报太大则发送失败。MF设置时,如果产生分片,除了最后一个分片,其他此片置1。

  • 13位分片偏移:分片相对原始IP数据报开始处的偏移。

  • 8位生存时间(TTL):数据报到达目的地之前允许经过的路由跳跳数。跳一下减1,得0丢弃。

  • 8位协议:用来区分上层协议(ICMP为1,TCP为6,UDP为17)。

  • 16位头部校验和:仅以CRC算法检验数据报头部在传输过程中是否损坏。

  • 32位源端口IP地址和目的端口地址很明白。

  • 选项(可变长):记录路由,告诉途径得所有路由把IP填进来。 时间戳,告诉每个路由器都将数据报被转发的时间传进来。松散路由选择,指定一个路由器IP地址列表,必须按这个表发送,严格路由选择,数据报经过路由表。

注:1字=2字节(1 word = 2 byte)       1字节=8位(1 byte = 8bit)       IP头长20B=20byte

四、TCP协议头结构

  • 16位源端口号和16位目的端口号。

  • 32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000。

  • 32位确认号:用来响应TCP报文段,给收到的TCP报文段的序号加1,三握时还要携带自己的序号。

  • 4位头部长度:标识该TCP头部有多少个4字节,共表示最长15*4=60字节。同IP头部。

  • 6位保留。6位标志。URG(紧急指针是否有效)ACK(表示确认号是否有效)PSH(提示接收端应用程序应该立即从TCP接收缓冲区读走数据)RST(表示要求对方重新建立连接)SYN(表示请求建立一个连接)FIN(表示通知对方本端要关闭连接)

  • 16位窗口大小:TCP流量控制的一个手段,用来告诉对端TCP缓冲区还能容纳多少字节。

  • 16位校验和:由发送端填充,接收端对报文段执行CRC算法以检验TCP报文段在传输中是否损坏。

  • 16位紧急指针:一个正的偏移量,它和序号段的值相加表示最后一个紧急数据的下一字节的序号。

  • Stream index:40  是根据ip端口 目的和源转换过来的索引

到此:这篇文章就算结束了,相对来说这篇文章包含内容很多,最重要的在于通过分析数据包,进行TCP/IP协议的学习,理解网络层等。作者能力有限,技术无限,学习不止于眼前的资料,在于扩展。。。

猜你喜欢

转载自www.cnblogs.com/ermao0423/p/9448503.html