wireshark分析(传输层,网络层,链路层)

wireshark分析(传输层,网络层,链路层)

wireshark抓包软件总是友善地帮包分层...

1.链路层。

Ethernet II协议即以太网协议。以太网帧的格式如下:


这里的地址指的是MAC地址,每一个网卡对应唯一的MAC。 类型指的是IP、ARP...... 。CRC效验数据是否异常。

在wireshark 中,数据包的第二行指的是链路层协议。在Ethernet II中,SRC表示的是源地址。DST代表目的地址。Type(类型)为0x0800指IPv4协议,0x86dd IPv6协议数据,0x809B AppleTalk协议数据,0x8138 Novell类型协议数据等。0x0806ARP,0x0600 XNS (Xerox),0x6003 DECNET 。

帧结构,Ethernet II型帧前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。接下来的2个字节标识出以太网帧所携带的上层数据类型。(两位16进制等于一字节)。最后是4字节CRC效验数据,采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验 。

2.网络层

IPv4协议。其报文的格式如下:

IPv4报文有首部和数据两部分组成。首部是固定长度,20字节,且所有IPv4报文所共有。数据部分字段可选,长度可变。

wireshark中帧字段的含义:

  • Version(版本):分为IPv4,IPv6。
  • Header Length:IPv4的首部长度。
  • Differentiated Services Field(区分服务):用来获得更好的服务, 用来指定特殊的数据包处理方式。
  • Total Length:指首部和数据的总长度。
  • Identification:IPv4在存储器中维持一个计数器,每产生一个数据包,计数器加一,把值赋给该字段。
  • Flags:目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。
  • 片偏移:13位,较长的分组在经过通信链路中因为分组过大进行分片,分片后在原分组中的相对位置。片偏移以8字节为偏移单位
  • Time to Live(生存时间):表示数据包在网络中的寿命,英文缩写是TTL(Time To Live),功能是“跳数限制”。
  • Protocol:指出此数据包携带数度的协议。
  • Header checksum(首部效验和):数据包每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。
  • Source:发送数据包方IPv4地址。
  • Destinatio:接受方IPv4地址。
  • 选项字段:1字节到40字节不等。长度可变,支持排错,测量,安全等措施

ARP协议

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

假设主机A和B在同一个网段,主机A要向主机B发送信息,主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全为0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。



arp在wireshark上的分析:


Hardware type(网卡类型):以太网(Ethernet)是1。我们常见的网络都是以太网

Protocol type:查询中提供的网络地址的类型,IPv4是0x0800。

Harware size:网卡地址长度,以太网网卡是6字节。

Protocol size:查询中提供的网络地址的的长度,IPv4是4字节。

Opcode:查询包值为1,响应包值为2。

Sender MAC address:发送者的Mac地址。

Sender IP address:发送者的IP地址。

Target MAC address:接收者的Mac地址,指向性查询包是MAC地址表中记录的mac,广播性查询包是00:00:00:00:00:00。(注意区分ARP头和Eth头,指向性查询包Eth头的dst mac是MAC地址表中记录的mac,而广播性查询包是ff:ff:ff:ff:ff:ff)。

Target protocol address:要查询目标的mac地址的ip。

3.传输层

TCP协议

TCP是一种面向连接的协议,很多应用层协议都使用TCP来确保文件在传输过程中不会出现丢包情况。TCP就像双向通信过程,不只发送方会参与通信,接受方也会主动参与到连接建立当中。TCP通信过程中,会执行一个三次握手的进程,以便在参与通信的两台主机之间创建出一条独立的通道。

TCP报文:

TCP报文头部

TCP报文分为头部和数据两部分。头部通常是20字节,但有时会因为选项增加。

下面我们来结合wireshark分析:

Source Port(源端口):指通信发送方使用的端口号

Destination Port(目的端口):通信接收方使用的端口号

Sequence number(序列号):确保数据可靠传输的一个唯一值。TCP使用序列号追踪每个数据段的传输情况

Acknowledgment number(确认号):接收端发送,提示发送端下一次该发的数据在整个文件中的序号。接收端收到后,会把这个序号之前的数据从缓存中删掉。

Header Length:头部长度也叫数据偏移

Flags(标记):

  • SYN(同步):发起连接的数据包,连接即握手进程
  • ACK(确认):确认接受到数据的数据包,也会用来发起和断开链接
  • RST(重置):数据包表示之前尝试建立的连接已被关闭或通信应用不接受连接
  • FIN(结束):终止连接的数据包,发送方和接收方都要通过FIN数据包终止连接
  • PSH(推送):数据包表示入住那数据包应该直接发送给应用,而不应该缓冲
  • URG(紧急):表示数据包中承载的数据应立即由TCP协议栈处理
  • CWR(拥赛窗口减小):数据包表示传输导致缓冲区已满或拥赛,通信各方应该降低传输速率,以免丢包

Window Size Value(窗口大小):这个字段表示的是发送方可以发送的数据总量。这个总量是在握手过程中决定的。在握手过程中,通信双方的主机匹配缓冲区大小。

Checksum(效验和):判断接受数据的完整性。可以让通信方确认TCP数据段中的内容是否发生变化了。

Urgent pointer(紧急指针):只有当 URG 标志置 1 时紧急指针才有效。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

Options(可选项):包含三部分,1---标识可选项字段长度 2---标识数据包中的可选项 3---包含数据包中可选项。最常见的可选项字段是MSS(Maximum segment size)最长报文大小,每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。


TCP三次握手分析:

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:



三次握手建立连接后才会传输数据(HTTP等)

然后我们通过wireshake分析(借鉴)

红色方框为本机192.168.1.101和服务器47.95.165.112之间的三次握手协议。三次握手协议的过程为:

  1. 客户端通过TCP首部发送一个SYN包(seq=0)作为建立连接的请求等待确认应答。
  2. 服务器发送SYN/ACK包(seq=0,ack=1)确认应答
  3. 客户端发送ACK包(seq=1,ack=1)确认应答。

以下为链接:

在所有数据传输完成后,客户端或服务器端会发送FIN/ACK数据包以终结这条连接。服务器也会对此作出反应。这个过程叫四次握手断开连接。

  1. 服务器端向客户端发送FIN/ACK包
  2. 客户端接收后发送ACK包
  3. 服务器接收后发送FIN/ACK包
  4. 客户端接收后发送ACK包

异常TCP流量:

在某些环境下会出现RST(重置)数据包,其基本作用是为了标识用户尝试发起的链接意外中断了。服务器没有运行服务器后台程序,客户端则在尝试进行通信。导致客户端发送的每个SYN请求都收到了RST数据包。

恶意用户尝试在网络中执行端口扫描,防火墙用RST包对用户进行相应避免攻击。或者恶意用户寻找的端口已关闭

效验和的作用:当发送方准备传输数据包时,会计算出数据包所含数据的效验和,并且将效验和和数据一同发送。接受方收到后,用与发送方相同算法计算效验和。如果效验和一致,接收方接受,效验和不匹配则会丢弃数据包。但对效验和进行效验不能保证数据没有变化。携带无效效验和数据的数据包,会以黑色作为背景色,红色为前景色。在wireshark中禁止Validate checksum(在接口上关闭效验和卸载的特性)是为了防止网络混乱 。

PS:wireshark中追踪SYN包,tcp .flags=0×002

编辑于 2020-10-20 12:28