笔者这几天在调试基于车载以太网DoIP(ISO13400)的UDS诊断协议,(ISO14229+ISO15765)所有就用wireshark来监控一下报文,看看TCP层、DoIP层和UDS层的数据报文。

wireshark软件

  • 选择指定端口进行报文监控
  • 以太网数据和报文解析(双击进行去可以查看具体报文解析)
  • 错误帧类型
    • [TCP Previous segment not captured] :该帧TCP报文之前的报文未收到
    • [TCP Out-Of-Order]:TCP包乱序
    • [TCP dup ack XXX#X]:重新传某一个包
    • [TCP Fast Retransmission]:快速重传
    • [TCP Retransmission]:重传

ETH 以太网帧(数据链路层)

  • 目标地址和源地址都指的是MAC地址,即物理地址。目标地址:22:34:C0:01:00:01,源地址:E8:6A:64:20:61:3B,报文这里没有给出前导码和校验码

  • 类型一般指IPv4、IPv6、ARP、Vlan

    比如 在clinet 广播网关时发送的包(寻找网关,该地址是自己设置的,并不是网关分配的,所以再寻找网关,也挺形象 who and tell),ARP类型,


IP帧(网络层)


以一组报文为例:前面划红线的是目标地址+源地址+类型

  • 45:4为IPv4,5指的IP头部共20字节,即(5)*4字节。
  • 00:服务类型
  • 00 2A:总共42字节,IP头部+TCP头部 ETH(14)+IP(20)+ICMP(22) = 16*3+8 = 56 56-14 =42
  • 10 5D:标识
  • 40 00:标志和分片偏移,标志:保留/是否分片/最后一片,各占一位 ,后面是分片之后相对于原始数据的偏移,以8字节为一个单位
  • 05:生存期,TTL,最多可以经过的路由数
  • 01:协议,TCP(0x06)、UDP(0x11)还是ICMP(0x01),
  • E2 17 :校验数,校验方法为何校验,以16位位一组进行累加,最后取反,注意:超过16位的需要重新再组合相加,校验的两位按0x00处理,0x4500+0x2A+0x105D+0x4000+0x0501+0xC0A8+0x0106+0xC0A8+0x0108 = 0x21DE6,然后0x1DE6+0x02 = 0x1DE8,取反之后为0xE217,所以校验位0xE217
  • C0 A8 01 06 :192.168.1.6 C0 A8 01 08:192.168.1.8

TCP帧(传输层)


以具体的TCP报文为例:源IP:a9 fe 64 0a (169.254.100.10) 目标IP:a9 fe 64 64(169.254.100.100)

  • d0 e6:53478
  • 34 58:13400
  • eb bd ca ae :序列号 可以确认
  • 02 d1 83 1a:确认号
  • 50:5代表头部字节数,单位是4字节,5*4 = 20字节
  • 18:1保留 8代表PSH,通信过程中,提示接收端把缓存区数据读走,SYN,建立链接,FIN:断开链接 ACK:响应包,确认序列号正常,RST:重新链接
  • fa fd:窗口大小
  • d1 53:TCP校验和,与IP计算方法一样
  • 00 00:紧急指针

TCP三次握手


299:SYN Seq = 0,
300:SYN ACK Seq =0,Ack=1
301:ACK Seq = 1,Ack = 1

上面SYN代表建立链接 ACK代表响应包 Ack 代表确认序列号

通信双方的序列号和确认号会互换,并且按照len的数据增加

TCP四次挥手


FIN ACK:FIN 客户端(服务器)发出断开链接, Seq = 1 Ack = 5
ACK:服务器响应 ACK =1 Seq = 5 Ack =2
FIN ACK:FIN 服务器(客户端)发出断开链接,Seq = 5,Ack = 2
ACK:客户端响应 ACK =1 Seq = 2 Ack = 6

DoIP帧(应用层)

DoIP:Diagnostic communication over Internet Protocol,通过以太网的诊断通信,或者叫车载以太网,
诊断数据类的一个报文格式如下:

以具体的报文为例:

  • 02:协议版本
  • fd:协议版本反码
  • 80 02:诊断肯定响应类型 0x0000-0008 节点管理类 0x4000-0x4004 车辆信息类 0x8001-0x8003 诊断类
  • 00 00 00 07:数据报文长度(后面的DoIP Payload)
  • 00 09:源地址 (应用层通信双方设备的地址)
  • 0e 80:目标地址
  • 00:ACK Code,响应码
  • 85 02:UDS报文

UDS帧(应用层,DoIP上层)

UDS(Unified Diagnostic Services)统一诊断服务,UDS 对 DoIP的数据报文格式进行重新定义

以安全访问为例进行介绍:具体报文在下面
请求seed :27 01
响应seed:67 01 XX XX XX XX

TCP通信调试助手===wireshark使用相关推荐

  1. Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换)

    在前几篇的文章中带大家完成了基于TCP的物联网安卓应用开发,教程内容是创建了一个TCP客户端并连接服务器完成数据通信的过程,后不久又发布了一个ESP8266创建TCP 服务器与安卓的客户端进行通信的一 ...

  2. QT编写TCP/UDP调试助手之TCP客户端

    效果图: TCP/UDP调试助手之TCP客户端,支持错误信息显示,断开连接后及时释放资源. 一.关键代码 1.在.pro文件中添加QT += network,包含头文件#include <QTc ...

  3. Qt实践录:TCP网络调试助手

    由于项目需要使用到网络调试及测试,为了练手,使用 Qt 编写一个串口调试助手.本文按开发的过程进行简单介绍,同时也涉及部分用到的模块代码.详细代码参考源码仓库. 在代码复用方面,笔者认为 Qt 比 M ...

  4. TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行

    对于网络调试助手如NetAssist等连接不上服务器且左下角显示"1035 未知错误"的问题,本人困惑许久,参考了网上的多种解决方法,有的说法是网络调试助手的版本太低,在Win10 ...

  5. Qt安卓app开发,蓝牙通信调试助手,经典蓝牙通信调试工具

    目录 软件说明 app界面 源码下载地址 软件说明 1.基于Qt开发,QBluetoothSocket通信: 2.开/关蓝牙.搜索/停止搜索设备.Ascii/Hex收发.收发延迟设置.收发计数等功能: ...

  6. 阿里云服务器与个人电脑TCP通信的调试

    最近做大创项目需要硬件端入网与云服务器上运行的后台程序以及数据库对接,在初期尝试过程中由于对计算机网络理解甚少搞得我天天卡壳.这里我将介绍如何通过网络调试助手和SocketTool这两个小工具实现个人 ...

  7. Ubuntu 网络调试助手mNetAssist安装

    参考: Ubuntu下网络调试助手 NetAssist Linux TCP/UDP调试助手下载安装(转载备忘) 解决"E: Package 'libqtgui4' has no instal ...

  8. 10通信端口感叹号_S71200 技术篇——MODBUS TCP通信

    一.S7-1200 Modbus TCP 通信指令块 图1. Modbus TCP V4.0 版本指令块 二.S7-1200 Modbus TCP 实验环境 下面以两台S7-1200之间进行 Modb ...

  9. 【技术备忘录】广和通ADP-L610-Arduino模块实现基于内网穿透的TCP通信

    前言 ​ 在使用ADP-L610开发板进行开发过程中,如果需要使用TCP通信,那么往往需要本地机器具有公网IP或者是准备一台具有公网IP的云服务器(或者VPS),这往往是需要成本的.现在公网IPv4地 ...

  10. (转)PC机使用网络调试助手获取onenet的数据(https://blog.csdn.net/qq_29219435/article/details/78480872)

    在上一篇博客中,我写了如何向onenet发送数据,本文主要介绍通过http协议GET到之前上传的数据. 1 2 http://blog.csdn.net/qq_29219435/article/det ...

最新文章

  1. SAP API开发方法大全
  2. 给Hangfire的webjob增加callback和动态判断返回结果功能设计
  3. topic数量是指什么_一个网站的IP、UV和PV到底是什么
  4. Hyperloop,让发布简洁高效
  5. VS2015 设置结构成员对齐
  6. html提示框延时消失,javascript实现延时显示提示框特效代码
  7. 动词过去式和过去分词不规则变化
  8. 浅谈对POW的认识和理解
  9. 知识图谱指南:从理论到应用
  10. C++一本通题库1010
  11. Java中如何实现添加用户信息_如何通过Java客户端在Active Directory中创建新用户并将其添加到现有组...
  12. Altium Designer系列:问题之无法打开pcb文件
  13. 如何准确理解Amdahl定律,并讨论计算机系统加速比
  14. c语言程序设计青岛职业技术学院,2020年知道C语言程序设计(青岛职业技术学院)答案公众号...
  15. vmware windows7安装usb3.0驱动
  16. linux创建蓝光映像光盘,11.13 mkisofs指令:创建光盘映像文件
  17. 【高中数学】三棱锥体积公式
  18. 电脑很大,笔记本电脑响声很大怎么回事
  19. 赠书 | DeFi沉思录:历史、中国与未来
  20. WPF Trigger触发器

热门文章

  1. sigmoid/softmax指数运算溢出问题的解决方法
  2. python中什么是句柄_python中的句柄操作的方法示例
  3. element-ui 固定弹窗底部的按钮
  4. 修改 exchange服务器,修改或删除 Exchange 2010
  5. 无线网和网吧服务器,网吧也无线?网吧无线网解决方案
  6. Kaggle | IEEE Fraud Detection(EDA)
  7. Fedora14 root用户登陆
  8. Scrum板与Kanban如何抉择?drzdbtbna板与按照exrefp
  9. 你知道数据中台,但你肯定没听过报表中台,我靠它征服百万数据人
  10. IT之路,从迷茫“愤青”到团队项目经理,他是如何一步步走出来的?