SOME/IP学习笔记2
1. SOME/IP 协议
SOME/IP目前支持UDP(用户传输协议)和TCP(传输控制协议),
PS:UDP和TCP区别如下
- TCP面向连接的,可靠的数据传输服务;UDP面向无连接的,尽最大努力的数据传输服务,不保证数据传输的可靠性
- TCP面向字节流,UDP面向报文
- 应用进程交给 UDP 多长的报文, UDP 就照样发送,一次发送一个报文
- TCP 在发送时采取的方式完全不同:TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应该包含多少个字节。如果报文太长,TCP会将其拆分再发送,如果报文太短,TCP会等待积累足够多的字节后再构成报文段发送出去
- TCP数据传输慢,UDP数据传输快
- TCP有拥塞控制,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有效,如直播,实时视频会议等)
- TCP 只能是一对一的通信(TCP连接的端点是套接字socket),而 UDP 支持一对一、一对多、多对一和多对多的通信
- TCP 的首部开销大,有 20 个字节,比 UDP 的 8 个字节的首部要长。
- TCP提供可靠全双功的通信服务。UDP是半双功,只能单向传播。

TCP三次握手:

- 第一次握手:
客户端将TCP报文标志位SYN置为1,随机产生一个序号值seq=J,保存在TCP首部的序列号(Sequence Number)字段里,指明客户端打算连接的服务器的端口,并将该数据包发送给服务器端,发送完毕后,客户端进入SYN_SENT状态,等待服务器端确认。
- 第二次握手:
服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将TCP报文标志位SYN和ACK都置为1,ack=J+1(对上一个序号进行确认的号),随机产生一个序号值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
- 第三次握手:
客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1(TCP Header标志位),ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。
TCP四次挥手

- 第一次挥手: Client端发起挥手请求,向Server端发送标志位是FIN报文段,设置序列号seq,此时,Client端进入FIN_WAIT_1状态,这表示Client端没有数据要发送给Server端了。
- 第二次挥手:Server端收到了Client端发送的FIN报文段,向Client端返回一个标志位是ACK的报文段,ack设为seq加1,Client端进入FIN_WAIT_2状态,Server端告诉Client端,我确认并同意你的关闭请求。
- 第三次挥手: Server端向Client端发送标志位是FIN的报文段,请求关闭连接,同时Client端进入LAST_ACK状态。
- 第四次挥手 : Client端收到Server端发送的FIN报文段,向Server端发送标志位是ACK的报文段,然后Client端进入TIME_WAIT状态。Server端收到Client端的ACK报文段以后,就关闭连接。此时,Client端等待2MSL的时间后依然没有收到回复,则证明Server端已正常关闭,那好,Client端也可以关闭连接了
TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。
2.SOME/IP-SD
服务发现协议,通过OfferService消息,FindService消息来动态发现服务提供者的IP地址、端口信息等,检查服务状态是否可用,通过Subscribe消息来实现订阅,它主要用于定位服务实例;检查服务实例是否正在运行,实现发布/订阅处理。服务发现只能用UDP来实现,Message ID固定为0xFFFF8100;
格式如下:


Flags = 重新启动标志位+单播标志+显示初始数据控制标志,服务重新启动后,所有消息的Reboot Flag须置为1,直到Session ID重新从1开始计数,之后的Reboot Flag须置为0。
SD报文也是一种SOME/IP报文,在此基础上增加了Entry,Option等字段;
Entry理解为服务实例的入口,包含服务实例以及需要订阅的EventGroup的信息;
Entry分为两种:面向服务的Entry和面向事件组的entry。
面向服务可分为:发现服务(FindService),提供服务(OfferService)和停止提供服务(StopOfferService);
面向事件组可分:订阅事件组(SubscribeEventGroup),肯定应答(SubscribeEventGroupAck),否定应答(SubscribeEventGroupNAck)和停止订阅事件组(StopSubscribeEventGroup)。
一个entry可以包含0-2个option。
Option用于传输Entry附加信息,可以分为以下几种:

通信举例如下:

详细信息如下:
相关文章:
SOME/IP学习笔记2
1. SOME/IP 协议 SOME/IP目前支持UDP(用户传输协议)和TCP(传输控制协议), PS:UDP和TCP区别如下 TCP面向连接的,可靠的数据传输服务;UDP面向无连接的,尽最大努力的数据传输服务&…...
python实现FINS协议的TCP服务端(篇一)
python实现FINS协议的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样,可以使用现成的pymodbus模块去实现。但是,我们可以根据协议帧进行组包,自己去实现帧的格式,而这一切可以基于socket模块。本文为第一篇。 一、了解FI…...
利用uni-app 开发的iOS app 发布到App Store全流程
1.0.3 20200927 更新官方对应用审核流程的状态。 注:最新审核后续将同步社区另一篇记录 AppStore 审核被拒原因记录及解决措施 :苹果开发上架常见问题 | appuploader使用教程 1.0.2 20200925 新增首次驳回拒绝邮件解决措施。 1.0.1 20200922 首次…...
5个高质量的实用办公软件,每一款都是良心推荐
在现代办公环境中,高效的办公软件可以极大地提升工作效率,简化工作流程,帮助我们更好地完成工作。今天就给大家分享5个高质量的实用办公软件,每一款都是良心推荐。 01、FastStone Capture(截图工具) FastSt…...
基于GPTs个性化定制SCI论文专业翻译器
1. 什么是GPTs GPTs是OpenAI在2023年11月6日开发者大会上发布的重要功能更新,允许用户根据特定需求定制自己的ChatGPT模型。 Introducing GPTs 官方介绍页面https://openai.com/blog/introducing-gpts 在原有自定义ChatGPT的流程中,首先需要自己编制p…...
Final Cut Pro X for Mac:打造专业级视频剪辑的终极利器
随着数字媒体技术的不断发展,视频剪辑已经成为各行各业不可或缺的一部分。Final Cut Pro X for Mac作为一款专业的视频剪辑软件,凭借其强大的功能和易用性,已经成为Mac用户的首选。本文将向您详细介绍Final Cut Pro X for Mac的优势、功能以及…...
c++分割路径的字符串,得到 目录 文件名 扩展名
简单的做一个c小代码片的记录 c分割了图片的 路径字符串,得到 目录 文件名 扩展名 #include <iostream> using namespace std;int main() {std::string path "E:\\set1_seg\\32.jpg";//index:"\\"在字符串中的位置int index path.find…...
ABAP OpenSQL 分页处理
功能实现 在 ABAP 中,可以使用 OpenSQL 来实现分页功能。下面是一种实现分页的示例方法: 首先,定义一个内部表来存储查询结果数据: DATA lt_data TYPE TABLE OF your_data_type.然后,使用 SELECT 语句将数据查询到内…...
kubeasz一键部署k8s集群
下载程序 部署说明 部署文档 rootiZj6cd9joygowsf7am5hryZ:~# apt-get update rootiZj6cd9joygowsf7am5hryZ:~# apt-get upgrade rootiZj6cd9joygowsf7am5hryZ:~# export release3.6.2 rootiZj6cd9joygowsf7am5hryZ:~# wget https://github.com/easzlab/kubeasz/releases/…...
高性能图表库LightningChart JS v5.0 - 轻松实现图表自定义布局
LightningChart JS是Web上性能最高的图表库具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用,从而实现高刷新率和流畅的动画。 点击获取LightningChart JS v5.0正式版下载 LightningChart JS …...
深度学习的集体智慧:最新发展综述
一、说明 我们调查了来自复杂系统的想法,如群体智能、自组织和紧急行为,这些想法在机器学习中越来越受欢迎。人工神经网络正在影响我们的日常生活,从执行预测性任务(如推荐、面部识别和对象分类)到生成任务(…...
Java之“数字困境”:资产管理项目中的Bug追踪与启示
目录 1 前言2 问题的发现3 调试的开始4 深入调试5 调试心得与反思6 结语 1 前言 在程序员的日常工作中,我们时常面对各种令人头疼的问题,其中最令人崩溃的瞬间之一,就是当我们花费大量时间追踪一个看似复杂的bug,最终发现问题的根…...
小程序微信登录授权突然没反应的原因和解决方案
之前的小程序微信授权一直用的很好 今天突然点击没反应了 马上在开发工具试一试 返现点击授权返回错误信息 排除所有代码问题(之前一直用的好好的)和服务器承载问题(就几个人点击) 第一反应就是小程序有啥政策改变的问题&#x…...
文本提交时如何使用PHP替换回车为br
1、使用PHP内置的nl2br()函数 nl2br()函数是PHP内置的函数,可以将任何字符串中的回车符(\n)替换为HTML中的换行符(br)。具体使用方法如下: $string "这里有一个\n换行符"; $string nl2br($str…...
安全框架SpringSecurity-1(认证入门数据库授权)
一、Spring Security ①:什么是Spring Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式(注解)的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring …...
【MybatisPlus】条件构造器、自定义SQL、Service接口
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 MybatisPlus 一、条件构造器1.1 基于QueryW…...
数组计算广播
Numpy数组不需要循环遍历,即可对每个元素执行批量的算术运算操作(矢量化运算)。当两个数组大小(Numpy.shape)不同时,进行算术运算会出现广播机制。 数组广播 数组在进行矢量化运算的时,要求数组…...
代码解读:Zero-shot 视频生成任务 Text2Video-Zero
Diffusion Models视频生成-博客汇总 前言:上一篇博客《【ICCV 2023 Oral】解读Text2Video-Zero:解锁 Zero-shot 视频生成任务》解读了这篇论文《Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators》。这篇论文的创新点比较多,含金量很高,而…...
hub.docker访问不了的问题(一步解决)
暂时我也不清楚,但是下面这个网址可以用(可以先用着)Docker Hub Container Image Library | App Containerization (axlinux.top)https://hub.axlinux.top/...
[.NET] Speex 语音编解码介绍, 使用, 代码示例
Speex 是一个开源的, 适合语音编解码的算法, 常应用于网络电话中. 在下面的的介绍中, 我们将使用 SpeexSharp 对 Speex 编码在 .NET 中的使用做介绍 SpeexSharp 可以在 nuget 中直接安装, 并且已经封装了编解码器的类供使用. 如果你不希望了解 Speex 的具体编解码过程, 可以忽…...
推荐3款文字转语音小工具,总有一款适合你
聊一聊现在用眼太多,眼睛太累,不想再看电脑和手机了。想用耳朵来分担一下。特别是一些文字,电子书方面的。能听还是听吧,看也不一定能看进去,听的话,有可能还是能听进去一点。所以,就找了一些文…...
Pretext:值得关注的文本排版引擎关
一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...
避开ArduPilot地面无人平台调试大坑:ACRO模式下的转向速率设置详解
ArduPilot无人平台ACRO模式转向调参实战:从参数解析到竞技级手感优化 第一次在空地上测试ArduPilot无人车时,我满心期待它能像竞技级RC模型那样做出精准的漂移过弯。但现实是——转向要么迟钝得像在泥沼里打转,要么突然变得过于敏感导致车辆原…...
【2024最严生产红线】:FastAPI AI服务必须通过的4项流式SLA认证——延迟P99<320ms、首字节TTFB<85ms、断连重续成功率≥99.997%
第一章:FastAPI 2.0异步AI流式响应生产部署全景图FastAPI 2.0 引入了原生增强的异步流式响应支持,结合 ASGI 服务器(如 Uvicorn 0.29)与现代 LLM 推理框架(如 vLLM、Text Generation Inference),…...
STM32CubeMX+Keil5+ESP8266:基于HAL库的物联网设备快速联网实战
1. 环境准备与工具链搭建 第一次接触STM32ESP8266组合开发时,我花了整整两天时间才把开发环境理顺。现在回想起来,其实只需要三个核心工具:STM32CubeMX、Keil MDK-ARM和串口调试助手。建议使用Keil5版本,它对HAL库的支持最稳定。我…...
Symfony Monolog Bridge 入门指南:如何快速集成PHP日志系统
Symfony Monolog Bridge 入门指南:如何快速集成PHP日志系统 【免费下载链接】monolog-bridge Provides integration for Monolog with various Symfony components 项目地址: https://gitcode.com/gh_mirrors/mo/monolog-bridge Symfony Monolog Bridge 是 S…...
【芳芯科技】教室灯人数管理系统
实物效果图:实现功能: 采用32位的STM32微控制器处理核心,采用光敏电阻检测教室内不同地方的光照强度,利用红外热释电传感器检测人体,实现在教室无人或者光照充足时自动关灯,有人到来且光照不足时自动关灯的…...
当手机号遇上QQ号:揭秘数字身份背后的TEA加密查询技术
当手机号遇上QQ号:揭秘数字身份背后的TEA加密查询技术 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾在深夜加班时,需要快速验证某个测试账号的手机号绑定状态?或者作为技术支持人员&…...
nixos-anywhere磁盘加密指南:如何实现全盘加密和安全密钥管理
nixos-anywhere磁盘加密指南:如何实现全盘加密和安全密钥管理 【免费下载链接】nixos-anywhere Install NixOS everywhere via SSH [maintainersMic92 Lassulus phaer Enzime a-kenji] 项目地址: https://gitcode.com/gh_mirrors/ni/nixos-anywhere nixos-an…...
OSHI 储能系统监控:电池硬件状态管理终极指南 [特殊字符]
OSHI 储能系统监控:电池硬件状态管理终极指南 🚀 【免费下载链接】oshi Native Operating System and Hardware Information 项目地址: https://gitcode.com/gh_mirrors/os/oshi OSHI(Operating System and Hardware Information&…...
