对于不能装入一个UDP数据包的SOME/IP数据包,SOME/IP 传输协议的任务是对这些SOME/IP数据包分段,在接收端,再重新组装收到的SOME/IP段。
SOME/IP Transport Protocol是一个简单的协议来分割数据包,不实现重试机制,在接收端也不重新排序接收到的数据段
在Message Type包含一个bit,作为原始SOME/IP message 的分段PDU的标记,每一个被分段的SOME/IP message都会添加SOME/IP TP的特定字段到SOME/IP Header
这些字段包含分段控制信息和较大的SOME/IPmessage原始信息的重组
只有设置TP-Flag为“1”时,偏移量字段、保留位和更多段标志才会出现。
SOME/IP TP header
Message Type Field
Message Type字段包含TP-Flag,它将这个SOME/IP消息标记为原始SOME/IP消息的一个SOME/IP段。
TP-Flag位置
Offset Field
它从位偏移量0开始,到位偏移量27结束。每个传输/接收段之后,所包含的值会根据前一个传输/接收的SOME/IP段的负载长度增加
More Segments Flag
更多段标记[1位]表示是否跟随下一个SOME/IP PDU
举个例子:
有一个负载长度为5571的SOME/IP消息传输,消息的长度字段设置为8 + 5571字节
原始SOME/IP Header
这个原始的SOME/IP消息现在将被分割成5个连续的SOME/IP段。在本例中,这些段的每个有效负载最多携带1392字节。
对于这些段,SOME/IP TP模块添加了额外的TP字段。SOME/IP的Length字段携带SOME/IP段的总长度,其中包括Requst ID、协议版本、接口版本、消息类型和返回代码的8个字节
由于添加了TP字段(4字节),因此长度信息被扩展了4个额外的一些/IP TP字节
相关SOME/IP Header
注意:偏移量字段中提供的值是以16字节为单位的,即:偏移量87对应1392字节的有效负载。
第一个负载数据段,TP-Flag为1,More Segment Flag为1
SOME/IP分段Header
最后一个负载分段数据,TP-Flag为1,More Segment Flag为0(提示后面没有数据了)
最后一个SOME/IP分段Header
SOME/IP TP总是尝试使用最大分割,即按照分段数最小的方式进行传输