wireshark抓包ssl数据出现ignored unknown record的原因


前言

使用下面这个例子来观察记录层数据大于TCP MSS时用wireshark抓包出现ignored unknown record的情况并分析原因。
c语言利用openssl实现简单客户端和服务端(观察记录层最大长度)


一、出现原因

TCP MSS = MTU - IP头 - TCP头,MTU一般为1500字节,IP头20字节,TCP头20字节,所以要保证IP不分包的情况下,一个TCP包最多携带1460字节的数据。所以一个16384字节的记录层数据要分成很多个TCP包进行传输,服务端收到后进行TCP重组,获得一个完整的记录层数据,然后ssl层对记录层数据进行解密。
一个记录层数据包分割成多个TCP报文的示意图如下:
在这里插入图片描述
一个记录层数据有完整的格式,wireshark能够通过type类型来判断该数据属于ssl的记录层。但是一个记录层数据分割后,后面的多段数据没有type字段,wireshark并不能通过分割后的数据来判断上层协议类型,只能将分割的数据包组装成一个完整的数据包,wireshark才能知道该数据包的上层协议类型。

二、wireshark抓包分析

Ignored Unknown Record

抓取分割后的TCP数据出现不能解析上层协议的情况,就出现Ignored Unknown Record。
在这里插入图片描述
wireshark知道该数据是ssl类型的数据,但是不能解析具体的协议类型。
在这里插入图片描述
通过wireshark可以将分割后的TCP数据包组装成一个完整的数据包,然后就能知道上层协议类型。
在这里插入图片描述

TCP segment of a reassembled PDU

多个TCP数据包组长完成后,wireshark能够解析得到该协议类型是记录层协议。TCP segment of a reassembled PDU,表示该数据是有多个TCP数据包组装而成。
在这里插入图片描述
可以看出一个记录层有3个TCP数据包组装而成,如果MTU为1500则有更多个TCP数据包组装而成。
在这里插入图片描述

总结

相关推荐

  1. 好用工具,Wireshark、whistle

    2024-06-14 14:02:03       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 14:02:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 14:02:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 14:02:03       82 阅读
  4. Python语言-面向对象

    2024-06-14 14:02:03       91 阅读

热门阅读

  1. C++智能指针举例

    2024-06-14 14:02:03       28 阅读
  2. CSS滤镜(Filter)学习

    2024-06-14 14:02:03       33 阅读
  3. Pyside(PYQT)应用程序基本框架

    2024-06-14 14:02:03       23 阅读
  4. Nginx负载均衡之upstream容错机制详解

    2024-06-14 14:02:03       32 阅读
  5. postman接口测试工具详解

    2024-06-14 14:02:03       34 阅读
  6. 深度解读ChatGPT:原理、应用与未来探索

    2024-06-14 14:02:03       22 阅读