ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

GOST 33464 MSD解析:145字节紧急数据的ASN.1编码与认证实践

GOST 33464 MSD解析:145字节紧急数据的ASN.1编码与认证实践 1. eCall系统里的“紧急电报”GOST 33464 MSD到底在传什么你有没有想过当一辆车在高速上突然失控撞上护栏安全气囊弹出的瞬间一套看不见的系统已经自动拨通了紧急救援电话这不是科幻电影——这是eCallEmergency Call系统正在全球数十个国家落地的真实场景。而在中国周边、独联体国家及部分东欧市场这套系统所依赖的“紧急电报”格式并非欧盟ETSI TS 101 558标准而是俄罗斯主导制定的GOST R 33464-2015。它规定了车辆在触发eCall时必须发送的最小数据集Minimum Set of Data, MSD也就是那张决定救援响应速度与精准度的“数字求救卡”。这张卡不是随便拼凑的JSON或XML而是用ASN.1Abstract Syntax Notation One严格定义的二进制结构。很多人一看到ASN.1就头皮发麻它不像Python那样直白也不像HTML那样有视觉反馈它更像是一份“法律条文式的通信契约”——不告诉你怎么实现只精确规定“哪些字段必须存在、长度多少、取值范围在哪、嵌套层级如何”。GOST 33464正是用这份契约把车辆位置、时间、碰撞方向、安全气囊状态、VIN码等17个核心字段压缩进不超过145字节的紧凑二进制流中。为什么是145字节因为这是GSM网络在紧急呼叫建立前通过控制信道SACCH能可靠承载的最大MSD载荷上限。超过这个数要么被截断要么触发重传机制直接拖慢黄金救援时间。我第一次拿到GOST 33464标准原文时翻到第7章“MSD ASN.1 specification”就停住了。里面没有一行可执行代码只有几十行类似msd SEQUENCE { vehiclePosition GPSPosition, timeOfEvent GeneralTime, ... }的抽象定义。当时团队里做嵌入式开发的同事说“这玩意儿连个示例编码都没有怎么验证我们编出来的字节流对不对”后来我们花了整整三周才用OpenSSL的asn1parse工具手动十六进制比对确认第一版固件发出的MSD能被俄罗斯测试平台正确解码。这件事让我彻底明白读懂GOST 33464的ASN.1不是为了写编译器而是为了确保你的设备在异国他乡的紧急时刻发出的不是一串乱码而是一份被权威机构认可的“生命坐标”。它解决的不是“能不能发”而是“发出去后对方能不能毫秒级读懂并派车”。关键词里反复出现的“ecall指令”“ecall工作原理图”其实都绕不开这个底层——所有上层协议栈如AT命令控制模块、LTE模组eCall专用API最终都要把结构化数据喂给ASN.1编码器所有工作原理图中的“MSD生成模块”其内部逻辑必然是对ASN.1语法树的遍历与序列化。所以本文不讲泛泛的eCall架构只聚焦一个硬核切口逐字段拆解GOST 33464定义的MSD ASN.1语法还原它如何用145字节承载17个救命字段并给出可验证的编码/解码实操路径。无论你是车载T-Box固件工程师、V2X协议测试人员还是正在对接俄白哈关税同盟认证的OEM项目负责人这篇分析都能让你避开“标准文档读不懂、编码结果总被驳回”的典型陷阱。2. ASN.1不是编程语言而是“通信宪法”GOST 33464语法结构的本质解构很多人把ASN.1当成一种“冷门编码格式”试图用JSON Schema或Protocol Buffers的思维去理解它结果越学越迷。我带过三届车载通信方向的实习生90%的人最初都栽在这个认知偏差上。ASN.1根本不是为人类编写代码设计的它是为机器之间建立零歧义通信而生的“宪法性规范”。GOST 33464选择ASN.1恰恰因为它能强制约束所有参与方俄罗斯的认证实验室、白俄罗斯的TSP平台、哈萨克斯坦的救援中心甚至中国某车企出口的T-Box芯片只要声明支持GOST 33464就必须严格遵循同一套语法解释规则。这种刚性是JSON或XML永远无法提供的——后者靠文档约定前者靠数学定义。翻开GOST R 33464-2015标准第7.2节你会看到MSD的顶层定义MSD DEFINITIONS AUTOMATIC TAGS :: BEGIN msd SEQUENCE { vehiclePosition GPSPosition, timeOfEvent GeneralTime, numberOfAirbags INTEGER (0..255), ... } END这里藏着三个关键设计哲学直接决定了整个数据结构的健壮性2.1 “AUTOMATIC TAGS”机制省掉字节但绝不牺牲可读性GOST 33464明确要求使用AUTOMATIC TAGS自动标签。这意味着每个字段在编码时不显式携带类型标识符如INTEGER0x02, OCTET STRING0x04而是由字段在SEQUENCE中的位置顺序隐式确定。比如vehiclePosition永远是第一个字段解码器看到字节流开头就知道接下来20字节必然是GPSPosition结构。这比传统BER编码节省了至少4-6字节每个字段省1-2字节标签对145字节上限至关重要。但代价是一旦字段顺序调整比如把timeOfEvent移到vehiclePosition前面整个编码就失效。所以GOST标准里所有字段顺序都是冻结的连注释都不允许改动。我在某次OEM需求评审会上供应商提出“把fuelLevel字段提前以便快速读取”被俄方认证专家当场否决——不是技术不行而是违反ASN.1宪法。2.2 “IMPLICIT TAGS”与“EXPLICIT TAGS”的生死线GOST 33464在嵌套结构中大量使用IMPLICIT TAGS隐式标签。看GPSPosition定义GPSPosition :: SEQUENCE { latitude IMPLICIT INTEGER (-900000000..900000000), longitude IMPLICIT INTEGER (-1800000000..1800000000), altitude IMPLICIT INTEGER (-10000..20000) }注意IMPLICIT关键字——它告诉编码器“别给latitude加INTEGER类型头直接把数值原样塞进去”。而如果写成EXPLICIT INTEGER就要额外加2字节类型头0x02 长度字节。实测下来仅GPSPosition三个字段用IMPLICIT就比EXPLICIT节省7字节。但风险在于IMPLICIT要求解码端必须预先知道该字段的精确类型和取值范围否则会把-900000000错解成正数。这就是为什么GOST标准必须配套发布《MSD解码参考实现》里面每个IMPLICIT字段都有对应的C语言位域解析宏——它不是可选附件而是宪法的司法解释。2.3 “CHOICE”类型的精妙陷阱如何用1字节表达4种碰撞模式MSD中有一个关键字段crashDirection定义为crashDirection CHOICE { front NULL, rear NULL, left NULL, right NULL }CHOICE类型在ASN.1中表示“四选一”但GOST 33464规定编码时只用1字节表示选择项0x00front, 0x01rear, 0x02left, 0x03right且NULL值不占额外字节。这比用4个BOOLEAN字段需4字节或1个INTEGER需1字节但需校验范围更紧凑。但问题来了当车辆发生斜向碰撞比如“左前角”该填front还是leftGOST标准附录B明确说明“以碰撞能量最大分量的方向为准”。这就要求T-Box的加速度传感器算法必须输出主方向向量而不是简单阈值触发。我见过某国产模组厂商的固件在测试中因未实现向量分解所有斜向碰撞都默认填front导致在俄方实验室的多角度碰撞台架测试中连续三次失败——不是编码错而是物理层数据源不符合ASN.1背后隐含的工程语义。这些设计不是凭空而来。它们全部服务于一个终极目标在GSM网络最恶劣的信号条件下-105dBm用最少的比特数传递最无歧义的救援信息。理解这一点你再看GOST 33464的ASN.1就不会觉得它是枯燥的语法而是一套精密的生存协议。3. 字段级深挖GOST 33464 MSD的17个字段如何用145字节“斤斤计较”GOST 33464规定的MSD共包含17个必选字段Mandatory Fields和3个可选字段Optional Fields但实际部署中几乎全部启用。很多人以为“145字节”是个宽松上限直到真正开始编码才发现每个字段的字节占用都经过毫米级计算稍有不慎就会超限。下面我以实测数据为基础逐字段拆解其编码逻辑、字节开销及常见踩坑点。所有数据均来自我们团队在2023年完成的俄白哈三国eCall认证项目项目代号“北极熊”已通过Rosstandart官方测试平台验证。3.1 核心定位字段GPSPosition的20字节生死线vehiclePosition GPSPosition是MSD中最大的字段GOST规定其编码后必须≤20字节。GPSPosition结构包含latitude、longitude、altitude三个IMPLICIT INTEGER字段取值范围如下字段取值范围编码所需最小字节数实际占用字节数latitude-900000000 ~ 9000000004字节补码4固定longitude-1800000000 ~ 18000000004字节补码4固定altitude-10000 ~ 200002字节补码2固定提示altitude范围看似小但-10000米海平面下到20000米平流层已覆盖所有可能场景。用2字节足够若误用4字节则直接浪费2字节。但问题出在符号位处理。GOST标准要求所有整数按二进制补码编码且必须使用最小必要字节数。例如纬度900000000二进制为0011010100000000000000000000000032位但最高位是0前导零可省略。实测发现某供应商SDK在编码时强制用4字节填充导致latitude恒占4字节看似合规却浪费了本可用于其他字段的宝贵空间。我们在“北极熊”项目中用自研ASN.1编码器实现了动态字节裁剪900000000编码为0x35 0x00 0x00 0x004字节而100000000编码为0x05 0xF5 0xE1 0x00仍是4字节因需保持符号位对齐。最终GPSPosition稳定占用10字节而非理论最大值12字节。3.2 时间戳字段GeneralTime的“俄罗斯式”精度妥协timeOfEvent GeneralTime字段定义为GeneralTime :: CHOICE { utcTime UTCTime, generalTime GeneralizedTime }GOST 33464强制要求使用utcTimeUTCTime格式为YYMMDDHHMMSSZ13字符ASCII。但ASN.1编码时UTCTime必须转换为BER编码的OCTET STRING且长度固定为13字节。这里有个致命陷阱UTCTime标准规定年份用2位如23代表2023但GOST附录C明确要求“当车辆制造年份≥2050时必须使用generalTime分支”。这意味着你的T-Box固件必须预置2050年判断逻辑否则2051年的车在碰撞时会因无法选择generalTime而丢弃时间戳——这在认证测试中属于严重缺陷。更隐蔽的是时区处理。Z表示UTC0但车辆GPS模块输出的时间常带本地时区偏移如0300。GOST标准第8.3条强调“timeOfEvent必须为UTC时间T-Box须自行完成时区转换”。我们曾遇到某车型GPS模块固件BUG输出2305011230450300T-Box未转换直接编码导致时间戳错3小时。在莫斯科郊外的实车测试中救援中心收到的事件时间比实际晚3小时差点错过黄金救援期。解决方案很简单在ASN.1编码前强制调用gmtime()将本地时间转为UTC再格式化为YYMMDDHHMMSSZ。3.3 碰撞特征字段从numberOfAirbags到crashSeverity的链式验证MSD中numberOfAirbags INTEGER (0..255)看似简单但它是crashSeverity碰撞严重度的前置校验条件。GOST标准第6.5条规定“当numberOfAirbags 0时crashSeverity必须≥2当numberOfAirbags 0时crashSeverity可为0或1”。这构成一个隐含的业务规则链ASN.1语法本身不校验此逻辑但认证测试平台会注入非法组合如airbags2, severity1进行压力测试。我们“北极熊”项目的首次认证失败就栽在这里。测试平台发送airbags1, severity0的模拟MSD我们的解码器正常接收但未触发业务层校验直接上报给TSP。俄方专家指出“这违反GOST 33464第6.5条表明T-Box未实现碰撞逻辑完整性检查”。修复方案是在ASN.1解码后立即插入校验函数if (msd-numberOfAirbags 0 msd-crashSeverity 2) { // 触发告警并重置severity为2 msd-crashSeverity 2; }这个10行代码的补丁让第二次测试一次通过。它揭示了一个关键事实GOST 33464的ASN.1只是骨架真正的“智能”在于业务层对字段间逻辑关系的强制执行。3.4 145字节的终极分配表每个字段的“预算”明细为直观展示字节争夺战以下是GOST 33464 MSD在典型场景车辆静止、单气囊触发、中等严重度下的实测字节分配表。所有数据经Wireshark抓包asn1parse反向验证字段序号字段名类型典型值编码后字节数说明1vehiclePositionGPSPositionlat55.7558, lon37.6173, alt15010动态裁剪后稳定值2timeOfEventUTCTime230501123045Z13固定13字节ASCII3numberOfAirbagsINTEGER121字节值1字节长度头4crashDirectionCHOICEfront10x00无额外开销5crashSeverityINTEGER21小整数优化6vehicleIdentificationOCTET STRINGWBA1A1C50JF123456 (17字节VIN)191字节长度17字节内容1字节填充对齐7fuelLevelINTEGER5010x32..................17optionalDataOCTET STRINGNULL0可选字段未启用注意vehicleIdentificationVIN码字段虽为OCTET STRING但GOST标准第7.4条要求“必须为17字节纯数字/字母VIN禁止填充空格”。因此其编码长度1长度字节17内容1ASN.1填充字节因OCTET STRING需偶数字节对齐19字节。这是VIN字段的硬性成本无法节省。将全部17字段相加典型场景下总字节数为142字节预留3字节冗余应对极端值如高海拔altitude20000需3字节编码。这3字节就是你的安全边际——超1字节整个MSD被网络侧丢弃省3字节也无法提升性能只会增加调试复杂度。GOST 33464的145字节不是上限而是经过千次实车碰撞数据统计后得出的“最小可行生存包”尺寸。4. 从语法到字节手把手实现GOST 33464 MSD的ASN.1编码与验证光看ASN.1语法定义就像只读菜谱不炒菜。真正掌握GOST 33464必须亲手把msd SEQUENCE {...}变成一串能在GSM网络上传输的十六进制字节流并用权威工具验证其合法性。下面我以Linux环境为例分享一套经过“北极熊”项目千锤百炼的实操流程。所有工具均为开源免费无需商业授权且完全适配GOST标准。4.1 工具链搭建用asn1c编译器生成C代码骨架第一步不是写代码而是让机器替你写。GOST 33464的ASN.1文件通常为.asn后缀不能直接执行需用ASN.1编译器生成C语言结构体和编解码函数。我们选用asn1c来自lionet项目因其对AUTOMATIC TAGS和IMPLICIT支持最完善。# 1. 下载并编译asn1cUbuntu 22.04 sudo apt install autoconf automake libtool git clone https://github.com/vlm/asn1c.git cd asn1c ./configure make sudo make install # 2. 获取GOST 33464 ASN.1文件假设为gost33464.asn # 注意标准原文中的ASN.1片段需整理成完整模块补充MODULE-IDENTIFIER等头 # 我们已整理好合规版本可从项目仓库获取 # 3. 生成C代码关键参数 asn1c -fcompound-names -findirect-choice -gen-PER -no-gen-OER -no-gen-APER \ -pdumsd gost33464.asn关键参数解析-fcompound-names避免字段名冲突如msd-msd-vehiclePosition-findirect-choice正确处理CHOICE类型如crashDirection-gen-PER生成Packed Encoding RulesGOST强制要求比BER更省字节-no-gen-OER/APER禁用其他编码规则防止干扰执行后生成MSD.c、MSD.h等文件。打开MSD.h你会看到自动生成的C结构体typedef struct MSD { GPSPosition_t *vehiclePosition; // 指针类型需malloc GeneralTime_t *timeOfEvent; long numberOfAirbags; // long类型对应INTEGER CrashDirection_PR crashDirection; // CHOICE的枚举类型 long crashSeverity; // ... 其他13个字段 } MSD_t;4.2 手动填充数据避开“指针未初始化”的致命坑生成的结构体全是*指针这是asn1c的默认行为为内存安全。但车载T-Box资源紧张频繁malloc/free易引发碎片。我们的方案是静态分配手动赋值#include MSD.h #include GPSPosition.h // 自动生成的嵌套结构头文件 // 1. 静态分配内存全局或static变量 static MSD_t g_msd; static GPSPosition_t g_gps; // 2. 初始化所有指针关键否则asn1c编码器会崩溃 memset(g_msd, 0, sizeof(g_msd)); g_msd.vehiclePosition g_gps; g_msd.timeOfEvent g_time; // 同样静态分配 // 3. 填充具体值以GPS为例 g_gps.latitude 557558000; // 55.7558 * 10^7GOST要求微度精度 g_gps.longitude 376173000; // 37.6173 * 10^7 g_gps.altitude 150; // 4. 时间戳必须为UTCTime字符串 char utc_str[14] 230501123045Z; g_msd.timeOfEvent (GeneralTime_t*)calloc(1, sizeof(GeneralTime_t)); OCTET_STRING_fromBuf(g_msd.timeOfEvent, utc_str, 13);踩坑实录某次测试中g_msd.timeOfEvent未calloc直接OCTET_STRING_fromBuf导致编码器访问野指针T-Box死机。原因OCTET_STRING_fromBuf内部会检查指针有效性但asn1c生成的代码未做强校验。所有指针字段必须显式初始化为有效内存地址这是GOST项目的第一铁律。4.3 编码与验证用asn1parse和Wireshark双保险生成字节流后必须双重验证# 1. 用asn1c自带工具编码生成DER格式便于查看 ./converter -i msd.json -o msd.der -p MSD # 2. 用OpenSSL asn1parse解析DER验证结构 openssl asn1parse -in msd.der -inform DER -i # 输出应显示0:d0 hl2 l142 cons: SEQUENCE # 表明顶层SEQUENCE长度142字节符合预期 # 3. 最关键一步用Wireshark抓GSM网络包 # 在T-Box触发eCall时用USB转串口GSM sniffer抓取SACCH信道数据 # 导入Wireshark过滤eCall或MSD # 查看Payload字段对比是否与msd.der完全一致在“北极熊”项目中我们发现Wireshark抓到的MSD比msd.der多2字节。追踪发现GSM模组在发送前自动添加了2字节的CRC校验码非GOST要求而是模组厂商私有协议。解决方案是在ASN.1编码后手动截取前142字节再交由模组发送。所有验证必须在真实网络环境中进行仿真器无法替代实网字节流校验。4.4 解码实战如何用Python快速验证第三方MSD当你需要对接国外TSP平台或分析竞品设备发出的MSD时手写C解码太重。我们用Pythonpyasn1库构建轻量验证脚本from pyasn1.codec.ber import decoder from pyasn1.type import univ, namedtype, namedval, tag, constraint import binascii # 1. 定义GOST 33464的Python ASN.1模型简化版 class GPSPosition(univ.Sequence): componentType namedtype.NamedTypes( namedtype.NamedType(latitude, univ.Integer().subtype( implicitTagtag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), namedtype.NamedType(longitude, univ.Integer().subtype( implicitTagtag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))), namedtype.NamedType(altitude, univ.Integer().subtype( implicitTagtag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))) ) class MSD(univ.Sequence): componentType namedtype.NamedTypes( namedtype.NamedType(vehiclePosition, GPSPosition()), # ... 其他字段定义 ) # 2. 解码十六进制MSD来自Wireshark抓包 msd_hex 30818E...142字节hex msd_bytes binascii.unhexlify(msd_hex) decoded, _ decoder.decode(msd_bytes, asn1SpecMSD()) print(fLatitude: {decoded[vehiclePosition][latitude]}) print(fTime: {decoded[timeOfEvent]}) # 自动解析UTCTime运行此脚本若输出Latitude: 557558000即证明该MSD完全符合GOST 33464语法。这套Python方案让我们在30分钟内完成了对5家供应商模组的MSD兼容性筛查效率远超传统C验证。5. 认证避坑指南GOST 33464项目中最容易被驳回的5个“隐形地雷”在“北极熊”项目中我们累计经历了7次俄方认证实验室Rosstandart下属机构的正式测试其中4次因细节问题被驳回。这些驳回理由在GOST标准文档里往往只有一句话带过但却是决定项目成败的关键。我把它们总结为5个“隐形地雷”每一个都附带真实案例和可落地的规避方案。5.1 地雷一vehicleIdentification字段的“隐形空格”驳回现象测试平台返回错误码ERR_VIN_FORMAT但VIN码肉眼检查完全正确。根因分析GOST 33464第7.4条要求VIN为“17字节纯ASCII字符”但某OEM的T-Box固件在读取ECU VIN时从CAN报文中提取了18字节含末尾\x00编码时未过滤导致OCTET STRING内容为WBA1A1C50JF123456\x00。虽然\x00是合法ASCII但GOST标准附录D明确将“非字母数字字符”列为非法。规避方案在填充vehicleIdentification前强制清洗VIN// C语言清洗函数 void clean_vin(char* vin) { char* src vin; char* dst vin; while (*src (dst - vin) 17) { if (isalnum(*src)) { // 只保留字母数字 *dst *src; } src; } *dst \0; // 确保17字节 }5.2 地雷二timeOfEvent的“闰秒黑洞”驳回现象在2016年12月31日23:59:60闰秒时刻触发eCall测试平台拒绝MSD。根因分析UTCTime标准规定闰秒表示为235960Z但GOST 33464第8.3条脚注注明“闰秒不适用于timeOfEvent遇闰秒时应舍入至235959Z”。某GPS模块固件直接输出235960ZT-Box未做处理。规避方案在时间格式化前加入闰秒校验if (tm-tm_sec 60) { tm-tm_sec 59; // 强制舍入 mktime(tm); // 重新计算时间戳 }5.3 地雷三crashDirection的“NULL值陷阱”驳回现象crashDirection字段编码为0x05 0x00BER格式的NULL而非预期的0x00CHOICE的0x00标签。根因分析CHOICE类型在ASN.1中front NULL的编码应为0x00标签0x00长度0x00NULL值共3字节。但某ASN.1库错误地将NULL作为独立类型编码生成了0x05 0x00NULL类型头。GOST标准第7.2.3条要求CHOICE必须用IMPLICIT标签编码。规避方案禁用库的自动NULL编码手动设置// 不要这样 msd-crashDirection CRASHDIRECTION_front; // 而是这样直接操作底层字节 uint8_t* ptr (uint8_t*)msd-crashDirection; *ptr 0x00; // 显式写入0x005.4 地雷四optionalData字段的“存在即违规”驳回现象启用了optionalData字段如tspId测试平台报ERR_UNEXPECTED_FIELD。根因分析GOST 33464第7.5条注明“optionalData仅在TSP平台明确要求时启用且必须通过msdExtension字段标识”。但某供应商将optionalData作为普通字段硬编码进MSD导致结构体与标准定义不符。规避方案optionalData必须作为msdExtension的子字段且仅在收到TSP的EXTENSION_REQUESTAT命令后才启用。永远不要在基础MSD中硬编码可选字段。5.5 地雷五altitude的“负海拔幻觉”驳回现象在莫斯科地下车库海拔-5米触发eCallaltitude-5但测试平台显示altitude65531。根因分析altitude定义为INTEGER (-10000..20000)需用2字节补码。-5的补码是0xFFFB但某解码器错误地按无符号解析得65531。GOST标准第7.2.2条要求“所有整数必须按二进制补码解码”。规避方案在解码后强制符号扩展int16_t alt_raw *(int16_t*)alt_bytes; int32_t altitude (int32_t)alt_raw; // 符号扩展至32位这5个地雷每一个都曾让我们损失2-3周进度。它们共同指向一个真相GOST 33464的ASN.1不是纸面规范而是嵌入在每一行代码、每一个字节、每一次网络交互中的生存法则。认证不是终点而是对这套法则理解深度的终极考试。6. 超越GOST当eCall遇上5G-V2XASN.1结构如何演进写到这里你可能觉得GOST 33464的145字节已是极限。但现实是随着5G-V2XC-V2X在俄白哈市场的铺开eCall正在经历一场静默革命。2023年发布的GOST R 33464-2023修订版草案已悄然引入对Extended MSDEMSD的支持其ASN.1结构在保持向后兼容的前提下将容量扩展至512字节并新增了8个字段。这不仅是字节数的增加更是通信范式的升级。6.1 EMSD的核心突破从“单向电报”到“双向会话”传统GOST 33464 MSD是单向的——车发平台收。而EMSD通过新增msdSessionId和msdSequenceNumber字段支持TSP平台发起MSD重传请求。例如当平台检测到MSD CRC校验失败可发送RETRANSMIT_REQ指令携带msdSessionId要求车辆重发指定序列号的MSD。这解决了GSM网络丢包导致的“求救无声”问题。其ASN.1定义为EMSD DEFINITIONS AUTOMATIC TAGS :: BEGIN emsd SEQUENCE { msdSessionId OCTET STRING (SIZE(8)), msdSequenceNumber INTEGER (0..65535), base
返回列表