對於不能裝入一個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總是嘗試使用最大分割,即按照分段數最小的方式進行傳輸