学习网络协议分析工具WireShark,利用WireShark捕获并分析以太网报文结构,最重要的是后面超星网登录案例分析,用实际例子将计网的所学知识串起来。

文章更新内容说明:无线上网和有线上网的MAC地址是不一样的 【查看本地地址的截图是在家里的查看,wireshark的使用是在学校】

查看信息

查看本地的mac地址

image.png
image.png

ping命令

先使用ping命令找到需要抓包的网站的ip地址

image.png

WireShark使用

WireShark使用及面板功能区域

进入软件,若成功适配电脑网卡,则出现如下类似接口列表
image.png
直接双击上图中WLAN行即可抓包,也可以如下设置网卡启动抓包
image.png
image.png

1区域-显示过滤器

为过滤ip地址区域。相关表达式语法有

  1. 协议过滤。比如TCP,只显示TCP协议。
  2. IP 过滤。比如 ip.src == 192.168.1.102,显示源地址为192.168.1.102,

    ip.dst == 192.168.1.102, 目标地址为192.168.1.102。

  3. 端口过滤。 tcp.port ==80, 端口为80的

    1. tcp.srcport == 80,只显示TCP协议的愿端口为80的。
  4. Http模式过滤。http.request.method==”GET”, 只显示HTTP GET方法的。

  5. 逻辑运算符为 AND/ OR

    2区域-获取的数据包

    封包列表(Packet List Pane)

3区域-单个数据包各层详细内容

选定的封包详细信息 (Packet Details Pane)

  1. Frame:物理层的数据帧概况。

    1. Frame 165: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface \Device\NPF_{B016AB5D-3088-41BD-8997-48F19D9DEBFA}, id 0 //165号帧,对方发送74字节,实际收到74字节
    2. Interface id: 0 (\Device\NPF_{B016AB5D-3088-41BD-8997-48F19D9DEBFA}) //接口id为0
    3. Interface name: \Device\NPF_{B016AB5D-3088-41BD-8997-48F19D9DEBFA}
    4. Interface description: WLAN
    5. Encapsulation type: Ethernet (1) //封装类型
    6. Arrival Time: Oct 23, 2020 13:37:43.372763000 中国标准时间//捕获日期和时间(中国标准时间)
    7. [Time shift for this packet: 0.000000000 seconds]
    8. Epoch Time: 1603431463.372763000 seconds
    9. [Time delta from previous captured frame: 0.008472000 seconds]//与前一包时间间隔
    10. [Time delta from previous displayed frame: 0.000000000 seconds]
    11. [Time since reference or first frame: 36.349570000 seconds]//此包与第一帧的时间间隔
    12. Frame Number: 165//帧序号
    13. Frame Length: 74 bytes (592 bits)//帧长度
    14. Capture Length: 74 bytes (592 bits)//捕获字节长度
    15. [Frame is marked: False]//是否做了标记
    16. [Frame is ignored: False]//是否被忽略
    17. [Protocols in frame: eth:ethertype:ip:icmp:data]//帧内封装的协议层次结构
    18. [Coloring Rule Name: ICMP]//着色标记的协议名称
    19. [Coloring Rule String: icmp || icmpv6]//着色规则显示的字符串
  2. Ethernet II:数据链路层以太网帧头部信息。

    1. Ethernet II, Src: IntelCor_fb:33:94 (0c:54:15:fb:33:94), Dst: HuaweiTe_da:ff:f3 (7c:a1:77:da:ff:f3)
    2. Destination: HuaweiTe_da:ff:f3 (7c:a1:77:da:ff:f3)//目的MAC地址
    3. Source: IntelCor_fb:33:94 (0c:54:15:fb:33:94)//源MAC地址(就是我电脑的MAC地址)
    4. Type: IPv4 (0x0800)//0x0800表示使用IP协议

    image.png

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

    1. Internet Protocol Version 4, Src: 192.168.43.36, Dst: 39.156.66.18
    2. 0100 .... = Version: 4//互联网协议IPv4
    3. .... 0101 = Header Length: 20 bytes (5)//IP包头部长度
    4. Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)//差分服务字段
    5. Total Length: 60//IP包的总长度
    6. Identification: 0xdf8c (57228)//标志字段
    7. Flags: 0x0000//标记字段
    8. Fragment offset: 0//分的偏移量
    9. Time to live: 128//生存期TTL
    10. Protocol: ICMP (1)//此包内封装的上层协议为TCP
    11. Header checksum: 0x05ba [validation disabled]//头部数据的校验和
    12. [Header checksum status: Unverified]
    13. Source: 192.168.43.36//来源IP地址
    14. Destination: 39.156.66.18//目标IP地址

    image.png

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

    1. Transmission Control Protocol, Src Port: 80 (80), Dst Port: 50362 (50362), Seq: 1025, Ack: 447, Len: 714
    2. Source Port: 80 (80) //源端口号
    3. Destination Port: 50362 (50362) //目标端口号
    4. Sequence number: 1025 (relative sequence number) //序列号(相对序列号)
    5. [Next sequence number: 1739 (relative sequence number)] //下一个序列号
    6. Acknowledgment number: 447 (relative ack number) //确认序列号
    7. Header Length: 20 bytes //头部长度
    8. .... 0000 0001 1000 = Flags: 0x018 (PSH, ACK) //TCP标记长度
    9. Window size value: 5896 //流量控制的窗口大小
    10. Checksum: 0x915b [validation disabled] //TCP数据段的校验和

    image.png

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

  6. Data(312 bytes):数据。

image.png

超星网登录案例分析

网站请求和响应

image.png

发送请求相应协议

image.png

收到响应相应协议

image.png

接下来的7个小节内容来具体对数据报头做出分析❗

Hypertext Transfer Protocol

image.png

HTTP 协议定义了客户端和服务器之间交互的消息内容和步骤,大家按照固定的步骤和格式进行通信 根据URL可以定位请求资源的位置,但是对于这个资源可能还有多种处理方法,比如是请求资源还是要删除指定资源?

image.png
这个时候浏览器将需要请求的信息,按照HTTP协议约定的格式,封装成为HTTP请求报文
HTTP主要请求方法为 GET 和 POST
image.png

请求报文和响应报文的具体形式参考课本

Line-based text data

这里面内容就是请求成功所返回的Html代码
image.png

Transmission Control Protocol

image.png
这个数据报传输使用的可靠的TCP协议,而不是UDP,所以会有相应的滑动窗口、流量控制等等相关机制,还有三次握手,四次挥手……
(插个眼,日后再复习一下……)
huaji-779c5947261d2633.gif
(插眼专用图/滑稽)

Internet Protocol Version 4

好了,接下来到了IP层,需要给上面来的数据报加上IP头部,IP数据报结构如下:
image.png
image.png
image.png
比如说45这个字节这具体表现是ip数据报的第一行和第二行的具体信息,IP版本为IPv4,报头长度为二十个字节,往后的各个字段都是这样一一对应的关系,具体还要加强对那张ip数据报结构图的理解,要了然于胸。

Ethernet II, Src

image.png
image.png

图中三个方框的14个字节对应以太网MAC帧的前14个字节:前6个字节是目的地址,接下来的6个字节是源地址,最后两个字节是类型字段(用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据交给上一层的这个协议。0x8000代表上层使用的是IP数据报),后面是数据部分。 另外:wireshark把8字节的前序(前同步码)和4字节的FCS(帧开始界定符)都给过滤掉了,所以捕获到的帧里看不到这两部分。

Frame 75

image.png

  • 对方发送5520字节,实际收到5520字节
  • 第一行表示接口位0号

    总体数据表示

    其实在计算机看来,网络中的数据传输就是传输下面的这些字节

    一个字节由八个位组成,而位就是我们通常所说的二进制中的0或1

image.png

后记

Wireshark 抓不到HTTPS数据包

有些时候HTTP包也抓不到抑或是抓的不全,用如下方式解决即可。

在C盘根目录下创建如下目录和文件,.log就是后缀不要txt
image.png
添加环境变量
image.png
进入wireshark软件
编辑 ``首选项 Protocols
image.png

参考资料