SOME/IP

在CAN总线的车载网络中,通信过程是面向信号的

当ECU的信号的值发生了改变,或者发送周期到了,就会发送消息,而不考虑接收者是否需要,这样就会造成总线上出现不必要的信息,占用了带宽

而SOME/IP的出现就是为了解决这一问题,它和CAN网络发送机制不同,它是接收者有需要时才会发送,避免了无效信息对总线造成的影响

SOME/IP

Scalable service-Oriented MiddlewarE over IP,通过网络提供面向服务的通信,不能写作Some/IP等

既然SOME/IP是一种提供服务的通信协议,我们就可以把请求服务的ECU看成是client,而提供服务的ECU就是server

SOME/IP作为一种通信协议,它也有自己的数据结构,根据官方文档

SOME/IP由Header + Payload构成,其中协议头部里的字段是:

Message ID

4个字节,对应用程序方法的RPC调用或识别事件,方法和事件正好对应着Message ID的两个组成部分:Service ID和Method ID

什么是RPC?

Remote Procedure Call,A method call from one ECU to another that is transmitted using messages,使用消息从一个ECU对另一个ECU里的方法进行调用

Length

4个字节,它是从Request ID开始一直到Payload的结尾的字节数

Request ID

4个字节,它由Client ID和Session ID组成

其中Client ID是请求服务的ECU的唯一标识符,它能够让提供服务的ECU区分来自不同的客户端的SOME/IP报文

Session ID是区分来自同一发送者的消息的唯一标识符,它会随着请求/响应消息的增加而增加,如果响应Session ID和请求Session ID不匹配,则订阅者必须忽略响应

当生成响应消息时,server端会把Request ID复制到响应消息

Protocol Version

1个字节,SOME/IP协议版本号

Interface Version

1个字节,接口版本号

Message Type

1个字节,用于区分不同类型的消息

request(0x00)消息如果没有错误发生应该以response(0x80)响应,如果发生错误,则发送error(0x81),也可以发送没有没有响应消息的request(0x01)

notification(0x02)属于事件通知类服务,由client向server订阅服务内容,然后server会自动给client发布服务内容

notification分为两类:Event和Field,这两类都需要先使用SOME/IP-SD对服务进行订阅,这是前提,然后再用常规的SOME/IP notification类型消息发布通知内容

Event的过程是:client发SOME/IP-SD给server订阅,server告知订阅结果,server发布通知内容,server发布的方式有三种:

  • 循环发送-以固定的时间发送更新后的值
  • 更新后发送-一旦值发生改变就会发送
  • 大于特定的值-与旧值的差值达到某个条件时发送

而Field在Event的基础上,还可以对信息进行getter/setter

TP标志类型的消息和上面的一般类型逻辑相同

Return Code

1个字节,返回码用来表示请求是否已成功处理


传输层

SOME/IP属于应用层,它就需要依赖传输层的TCP/UDP协议,一个SOME/IP服务可以通过以下方式传达所有方法、事件和通知

  • TCP连接
  • UDP单播
  • UDP多播

至于哪种SOME/IP用TCP,哪种用UDP,可以根据SOME/IP的服务类型和TCP/UDP的特性来考虑(TCP是可靠的单播,UDP是不可靠的单播和多播),比如一个ECU需要给多个ECU发布服务内容时,就需要依赖UDP传输


SOME/IP-SD

SOME/IP是client和server对服务内容的请求和响应,但是client如何知道server有哪些服务可提供呢?常规的SOME/IP消息并不具有这样的功能,所以就有了SOME/IP-SD协议,可用于汽车网络中的服务发布/订阅

SOME/IP-SD

Service Discovery Protocol,服务发现协议,是SOME/IP协议的一种类型,它用于:

  • 找到服务
  • 检测服务是否正在运行
  • 实现发布/订阅处理

SOME/IP可用在TCP/UDP协议上,但是SOME/IP-SD只能用在UDP上,因为SOME/IP-SD只是为了发现服务,并不需要TCP的可靠性连接等特性

SOME/IP-SD协议结构

你会发现字段Message ID、Protocol Version、Interface Version、Message Type、Return Code的值都是固定的,SOME/IP-SD的Service ID是0xFFFF,Method ID是0x8100

SOME/IP-SD有两种发现机制:

  • Find Service Entry

在服务的当前状态未知的情况下,由client向server发送请求可用的服务

  • Offer Service Entry

主动告知其他通信节点它可用的服务


Method ID是0x8100

SOME/IP-SD有两种发现机制:

  • Find Service Entry

在服务的当前状态未知的情况下,由client向server发送请求可用的服务

  • Offer Service Entry

主动告知其他通信节点它可用的服务


更多内容,请关注汽车网络诊断通信

一文了解什么是SOME/IP协议(超详细)相关推荐

  1. 带你一文搞懂网络层的IP协议\数据链路层的以太网\ARP协议以及DNS和NAT协议

    TCP连接管理中的保活机制: TCP协议是面向连接通信,若通信双方长时间没有数据往来,就需要确定对方还是否在线,连接是否正常?        若通信双方长时间(7200秒)没有数据往来,在服务端会向客 ...

  2. IP协议首部详细分析

    IP协议是我们学习网络协议最开始,也是最基础的协议.那么今天我们主要介绍一下有关于IP协议头格式的基本状态.那么就让我们具体看以下有关于IP协议头格式和Sniiffer Portable的IP头的相关 ...

  3. flag push tcp 作用_TCP协议超详细解析及攻击/防范

    TCP 协议作用 TCP 协议使用的是面向连接的方法进行通信的,其作用如下: 面向流的处理:TCP 以流的方式处理数据.换句话说,TCP 可以一个字节一个字节地接收数据,而不是一次接收一个预订格式的数 ...

  4. 一文读懂Http Headers为何物(超详细)

    一.HTTP 请求内容 由于最新的http2,并没有被各大浏览器广泛使用,所以本文是基于http/1.1所编写的. 同时经过检测我们也发现,chrome等浏览器也正是使用http/1.1版本的. 关于 ...

  5. Nginx配置https协议 超详细!!!

    本文章基于Linux操作系统演示. 准备工作:有公网IP的服务器(CentOS7).申请一个域名.为域名申请SSL证书.将服务器的公网IP和域名进行绑定. 一.下载安装Nginx Nginx下载网址: ...

  6. 关于使用jquery.wordexport.js如何设置导入文档的页边距问题(超详细,亲测可用)

    问题描述 最近项目要求修改导出的word文档页边距.如下图所示: 原来使用wordexport.js默认导出的页边距是标准的,需求是将页边距改为窄. 解决的步骤一: 首先将页面直接导出,然后使用wor ...

  7. Ubuntu20.04配置静态ip(超详细)

    配置文件路径: /etc/netplan/01-network-manager-all.yaml # Let NetworkManager manage all devices on this sys ...

  8. 一文掌握GSEA通路富集分析,超详细教程!

    生信宝典之前总结了一篇关于GSEA富集分析的推文--GSEA富集分析:从概念理解到界面实操,介绍了GSEA的定义.GSEA原理.GSEA分析.Leading-edge分析等,是全网最流行的原理+操作兼 ...

  9. 一文搞定设计模式!五万字超详细解析!带着耐心点进来!

    一.概述 设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用. 拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节. 二.创建型 1. 单例(Singleton) In ...

最新文章

  1. session 存放对象变量,及遇到的奇怪现象
  2. HTML基础(我的复习和学习过程)day-01
  3. React.Component(V16.8.6)
  4. 栈结构功能实现的伪码展示【数据结构F】
  5. Java案例:Karel学习Java
  6. 总结windows下堆溢出的三种利用方式
  7. Java基础:红黑树概念
  8. Background Intelligent Transfer Service 服务错误(BITS服务失败) 的修复解决方案
  9. 仿大众点评下拉菜单实现
  10. Android 神兵利器之通过解析网页获取到的API数据合集,可拿来就用
  11. android qq音乐无法连接网络连接,qq音乐不能播放_qq音乐为什么老是提示说歌曲无效或网络连接失败呢?...
  12. TZOJ 数据结构实验:一元多项式相加
  13. 税费计算机,友商税费计算器
  14. 从大厂裸辞后,面阿里、字节全都挂掉,连货拉拉都不要自己...
  15. 【PyTorch】4 姓氏分类RNN实战(Simple RNN)——18 种起源语言的数千种姓氏分类
  16. 发光字招牌制作底板的种类
  17. 中文信息处理实验2——基于词表的分词
  18. 转载:嵌入式系统综述之二
  19. 数学专业的考计算机博士,在数字中发现乐趣 过来人谈数学专业考研
  20. 游戏游客登录与账号登录

热门文章

  1. Pathon开发象棋小游戏
  2. 网络安全学习笔记——第十五天 域内NAT、域间NAT技术及配置实验
  3. Montinz Word-2-CHM
  4. 2011年重大安全事件记载
  5. 初步使用计算机教学设计,电子计算机与多媒体教学设计模板
  6. 如何用scratch卡死电脑+侦测回车键
  7. [青少年CTF]-MISC WP(一)
  8. php数组去除空数据,php 数组去除空值
  9. 智能仓储管理系统(IWMS)
  10. 今日头条上线或将搜索广告:自媒体平台进入盈利时代