• 网络:W5500 UDP数据包格式注意事项


     1. 主题

    使用W5500测试UDP功能,发现收到的数据包和wireshark抓包的数据不同。

    原来W5500接收寄存器的数据包并不是网络上的数据流,而是经过内部处理后展现出来的。

    对于这个问题目前没有查到文档,技术支持给我的回应是:

    寄存器里的数据的格式为: 对方ip(4bytes)  +端口号(2bytes)+ 数据长度 (2bytes)+ UDP数据。

    2. 问题分析

    1)使用TCP助手发送UDP数据,发送3个字节,字符型123.

     2. 程序断点,读取接收寄存器接收的长度为11字节。前8字节的内容为:C0 A8 01 64 17 70 00 03。

    这个正好是源IP,端口,数据长度。 而不是标准UDP协议包头。

    3. 使用wireshark抓包。发现数据流并不是上面芯片寄存器的内容。

    UDP实际数据包有11个字节,上面W5500寄存器里面读出来也是11字节。但是内容却不一样。

    抓包捕获的前面8个字节是UDP头,实际数据3个字节,数据为0x31,0x32,0x33。

    源地址为192.168.1.100,已经捕获到。而上面W5500的数据包里面直接给出这个地址。

    4. 分析UDP数据包格式,对比上面的抓包数据,可以知道,W5500作为一个硬件TCP/IP芯片,内部的逻辑处理已经对数据进行了筛选。

    显示出来的数据都是用户关心的比如IP,端口,用户数据长度,用户数据。用户无关的网络协议本身的部分数据已经屏蔽掉了。

    但是这些问题在芯片手册上没有描述数据输出是什么格式,确实有遗漏之处,难免让人有些担心其严谨性。

  • 相关阅读:
    教你在mac上配置adb环境变量
    Android Mediaplayer 调用release()的时候ANR
    Android ANR
    安卓android WebView Memory Leak WebView内存泄漏
    android 小结
    struts提供文件上传功能
    struts自定义拦截器
    struts拦截器的配置和使用
    Struts框架属性驱动
    struts配置文件
  • 原文地址:https://www.cnblogs.com/pingwen/p/8384942.html
Copyright © 2020-2023  润新知