2024年10月26日发(作者:扶清霁)
T38传真抓包分析
――于杨
本文主要对于IP实时传真抓包进行了相关分析,帮助大家对t38协议,t30协议有较为直观
的认识。简单地说,t38协议就是t30协议在IP网络上的实现规程。
抓包中101作为主叫, 作为被叫,是主叫主动发送传真
的过程。
使用wireshark分析软件打开eth0。pkt, filter域限制为 sip||t38。
篮底黑字是主叫发送的数据包,黑底红字是被叫发送的数据包。
1.T38包结构
先说一说t38包的组成结构。
我们使用udp协议进行t38数据传输,应用层的数据都被封装在UDPTL中,下图表示了
UDPTL在udp包中所处的位置,其实就是udp承载的数据。
1。1 UDPTL组织结构
UDPTL包含三部分:
1. 序列号 seq—number
2. IFP分组 primary-ifp-packet
3. 差错纠正 error—recovery
1。2 IFP分组
下面详细介绍一下IFP分组内容:
从ASN。1描述中,可以看出包括type—of-msg域和data—field域,其中data—field域是可
选的。
什么时候可选呢?这是由type—of—msg域的类型决定的。
Type—of—msg可以选择两种类型:t30-indicator 和 t30—data。
如果是t30—indicator,则不需要data—field;反之,是t30—data,则需要提供data—field域。
那么,如果我们使用了t30-data, data-field域应该如何组织呢?
Data-field域也是由两部分组成: field-type 和 field—data, 其中,field-data也是可选的,由
filed—type类型来决定,比如field—type是hdlc-fcs—ok,就不需要field—data,而field-type
是hdlc-data的话,则必须提供field—data。
1。3总结
综上所述,下图给出了UDPTL框架图,“—-—————-—"表示了二者选一的关系,也就是
说差错纠正(error recovery)只能使用冗余包或者FEC前向纠错中的一种方式。
seq number
type-of-msg
IFP packet
field-type
UDPTL
data-field(optional)
field-data(optional)
secondary-ifp-packet
error recovery
fec-info
2.抓包分析
现在已了解了一个t38包的内部构造,下面利用抓包分析一下包与包之间组合起来
所表达的信息.从抓包来看,对于是t30—indicator的信令都是单独一个包,其作用是协
助真正的t30信令的发送与接受,真正的t30信令都是使用hdlc消息帧来进行传输的,
一般都需要多个帧,每个帧存储了一个字节的有效数据.
注:我们传真的过程是主叫主动发送传真的过程,并只关注传真过程,sip信令在这里不做分
析.
传真信令和数据流程
B阶段(报文前阶段)
1141 T30ind : no—signal 信令 : 无信号,可以用于两端连接,对端没有输入的情况下.
1153—1196被叫->主叫
1153 T30ind : V21—preamble 信令 : V21前导序列,发送传真信令前必发的前导标志,
发送传真数据则不需要。
1156-1182 CSI信令
CSI信令的发送打包处理,并且是一个完整的hdlc消息帧.
HDLC消息包格式内容定义:
FlagAddressControl
Facsimile
Control
Facsimile
Info
N*1(Byte)
Frame
Checking
Seq(FCS)
Flag
Standard HDLC Frame
1156 data: v21: hdlc-data[FF]
V21表示type-of—msg选择为V21调制模式。
HDLC消息的address域, 规定值为 1111 1111(0xFF)
1157 data: v21: hdlc—data[C0]
HDLC消息的control域, 规定值为 1100 X000
X值:在发送选用帧时(如本例的CSI), 选用帧要放在必用的命令帧或响应帧(如本例的
DIS)之前,在这种情况下,选用帧的control域的X=0, 必用的命令帧或响应帧的X=1;
简单的说,就是要发送一系列连续的帧,非末帧是0,末帧是1。
1158 data: v21: hdlc-data[02]
HDLC消息的facsimile control域(FCF),0x02表示CSI信令,该信令是选用信令,表明
可用被叫用户的国际电话号码来提供被叫用户的特定身份。CSI的facimile info域由20个编
码数字组成,见其后20个帧。
1159—1181 data: v21: hdlc—data[04] (中间有2个帧序号不连续,共20帧)
CSI编码格式见下表,从表中无法查到对应的编码。
1182 data: v21: hdlc-fcs-ok
Hdlc-fcs-ok 标识了HDLC帧的结束并收到了合适的FCS,也标识这不是最后一帧,该
字段类型没有字段数据,仅仅是个标识.
1183-1193 DIS信令
DIS信令的打包发送过程。
1183,1184见1156,1157
1185 data: v21: hdlc-data[01]
FCF =0x01, 表明是DIS信令,表征被叫终端的标准能力.
1186-1191 共48位表明了被叫的传真能力。
下面仅就DIS的各标志位含义做简单描述,不明之处可查询GB_T 3382.2—2003 P39—47 表
2或ITU T。30 09/2005 P52 Table 2
1186 data: v21: hdlc-data[00]
“0000 0000”
注1: “保留" 表示为 0。
1187 data: v21: hdlc-data[72]
“0111 0010”
1188 data: v21: hdlc-data[17]
0001 0111
1189 data: v21: hdlc—data[01]
0000 0001
1190 data: v21: hdlc—data[01]
0000 0001
1191 data: v21: hdlc-data[08]
0000 1000
1192 data: v21: hdlc—fcs—ok 见1182
1193 data: v21: hdlc-sig-end
标识HDLC的功率电平已经下降到低于关闭门限,用来表征一系列帧的结束。该字段类
型后无字段数据。
1198-1340主叫—〉被叫
1214-1243 TSI信令
TSI信令的打包发送过程.TSI信令指出随后的FIF信息是发送终端的标识。
1214,1215见1156,1157
1216 data: v21: hdlc-data[C2]
FCF = 0xC2,
X100 0010
FCF域中X值:
收到DIS的终端会置X=1;反之,X=0。
在这个抓包中,主叫要发送进行设置就是1,被叫就是0。
1218—1239 data: v21: hdlc-data[04]
TSI与CSI 使用的数据编码方式相同,0x04也是接收到CSI中的数据信息。
1241 data: v21: hdlc—fcs—ok
1244—1262 DCS信令
DCS信令的打包发送过程, 是DIS信令标准能力的响应消息。
1244,1245见1153,1154.
1246 data: v21: hdlc-data[C1]
FCF =0xC1,
X100 0001, , 由于是主叫发出,所以X=1.
1248 data: v21: hdlc-data[00]
1249data: v21: hdlc—data[73]
1250data: v21: hdlc—data[15]
1251data: v21: hdlc—data[01]
1252data: v21: hdlc—data[01]
1253data: v21: hdlc-data[00]
DCS数据可参考DIS在T30协议中的同一张表,这里不再进行详细描述,可查询GB_T 3382.2
—2003 P39—47 表2或ITU T.30 09/2005 P52 Table 2
1255 data: v21: hdlc-fcs—ok 见1182
1258 data: v21: hdlc—sig—end 见1193
1274—1330 发送training数据
1274 t30ind: v29-7200—training
对应T30协议中训练检验(TCF)信号,本信号要求非HDLC 帧.
格式:1。5* (1±10%)s 的0串
1274—1329 data: v29-7200: t4-non-ecm—data
1274包的时间戳是112.14 秒,1329包的时间戳是113。64秒,其时间差正好是1。5秒,
符合协议.
T4-non-ecm-data表示不使用ECM或FEC发送T4过程数据.
1330data: v29—7200: t4—non—ecm-sig—end
t4—non-ecm-sig-end 表示不使用ECM或FEC发送T4过程数据的结束。
1346-1358被叫-〉主叫
1350—1355 CFR信令
1350,1351见1156,1157。
1352 data: v21: hdlc—data[21]
FCF = 0x21,
X010 0001, 由于是被叫发出,X=0
CFR信令表明全部报文前过程(B阶段)已结束,可以开始发送报文数据。
C阶段(报文发送阶段)
1362-3644 主叫—>被叫
1362-3616 发送第一页数据
数据格式可参考training数据格式。
3617—3641MOP信令
3632,3634见1156,1157。
3635 data: v21: hdlc—data[F2]
FCF = 0xF2
X111 0010, 由于是主叫发送,X=1.
MOP信令是多页信号,表示一完整传真信息页的结束,并在收到证实后返回到C阶段
的开始。
3637,3641见1182,1193。
3649—3662 被叫-〉主叫
3654—3659 MCF信令
3654,3655见1156,1157。
3656 data: v21: hdlc-data[31]
FCF = 0x31,
X011 0001,由于是被叫发送,X=0。
MCF信令表示已经满意地收到完整的报文,并可继续接收另外的报文,是MOP信令的
肯定响应。
3658,3659见1182,1193.
3666—6735 又发送了一页数据,同上分析。
6737—9793 主叫—>被叫
6737—9755 发送最后一页数据
9756—9737 EOP信令
9781,9782见1156,1157。
9783 data: v21: hdlc-data[F4]
FCF = 0xF4
X111 0100, 由于是主叫发送,X=1。
EOP信令是多页信号,表示一完整传真信息页的结束,并进一步表示不再发来文件,在收
到证实后进入阶段E。
9785,9789见1182,1193。
9799—9810 被叫—>主叫
9799—9810 MCF信令
见3654—3659。
MCF信令也可以是EOP信令的肯定响应.
问题1:HDLC消息的第一字节和最后一个字节Flag没有,why?
参考: 是在T38协议中使用了HDLC的消息格式,在IP层传输,而并不是在真正的数据
链路层进行数据传输,而且t38协议中也规定很多indicator可以表明HDLC消息的开始与结
束,所以Flag域就不需要了。
问题2:1159-1181 数据是0x04,在CSI编码表中不存在?
参考: 无.
2024年10月26日发(作者:扶清霁)
T38传真抓包分析
――于杨
本文主要对于IP实时传真抓包进行了相关分析,帮助大家对t38协议,t30协议有较为直观
的认识。简单地说,t38协议就是t30协议在IP网络上的实现规程。
抓包中101作为主叫, 作为被叫,是主叫主动发送传真
的过程。
使用wireshark分析软件打开eth0。pkt, filter域限制为 sip||t38。
篮底黑字是主叫发送的数据包,黑底红字是被叫发送的数据包。
1.T38包结构
先说一说t38包的组成结构。
我们使用udp协议进行t38数据传输,应用层的数据都被封装在UDPTL中,下图表示了
UDPTL在udp包中所处的位置,其实就是udp承载的数据。
1。1 UDPTL组织结构
UDPTL包含三部分:
1. 序列号 seq—number
2. IFP分组 primary-ifp-packet
3. 差错纠正 error—recovery
1。2 IFP分组
下面详细介绍一下IFP分组内容:
从ASN。1描述中,可以看出包括type—of-msg域和data—field域,其中data—field域是可
选的。
什么时候可选呢?这是由type—of—msg域的类型决定的。
Type—of—msg可以选择两种类型:t30-indicator 和 t30—data。
如果是t30—indicator,则不需要data—field;反之,是t30—data,则需要提供data—field域。
那么,如果我们使用了t30-data, data-field域应该如何组织呢?
Data-field域也是由两部分组成: field-type 和 field—data, 其中,field-data也是可选的,由
filed—type类型来决定,比如field—type是hdlc-fcs—ok,就不需要field—data,而field-type
是hdlc-data的话,则必须提供field—data。
1。3总结
综上所述,下图给出了UDPTL框架图,“—-—————-—"表示了二者选一的关系,也就是
说差错纠正(error recovery)只能使用冗余包或者FEC前向纠错中的一种方式。
seq number
type-of-msg
IFP packet
field-type
UDPTL
data-field(optional)
field-data(optional)
secondary-ifp-packet
error recovery
fec-info
2.抓包分析
现在已了解了一个t38包的内部构造,下面利用抓包分析一下包与包之间组合起来
所表达的信息.从抓包来看,对于是t30—indicator的信令都是单独一个包,其作用是协
助真正的t30信令的发送与接受,真正的t30信令都是使用hdlc消息帧来进行传输的,
一般都需要多个帧,每个帧存储了一个字节的有效数据.
注:我们传真的过程是主叫主动发送传真的过程,并只关注传真过程,sip信令在这里不做分
析.
传真信令和数据流程
B阶段(报文前阶段)
1141 T30ind : no—signal 信令 : 无信号,可以用于两端连接,对端没有输入的情况下.
1153—1196被叫->主叫
1153 T30ind : V21—preamble 信令 : V21前导序列,发送传真信令前必发的前导标志,
发送传真数据则不需要。
1156-1182 CSI信令
CSI信令的发送打包处理,并且是一个完整的hdlc消息帧.
HDLC消息包格式内容定义:
FlagAddressControl
Facsimile
Control
Facsimile
Info
N*1(Byte)
Frame
Checking
Seq(FCS)
Flag
Standard HDLC Frame
1156 data: v21: hdlc-data[FF]
V21表示type-of—msg选择为V21调制模式。
HDLC消息的address域, 规定值为 1111 1111(0xFF)
1157 data: v21: hdlc—data[C0]
HDLC消息的control域, 规定值为 1100 X000
X值:在发送选用帧时(如本例的CSI), 选用帧要放在必用的命令帧或响应帧(如本例的
DIS)之前,在这种情况下,选用帧的control域的X=0, 必用的命令帧或响应帧的X=1;
简单的说,就是要发送一系列连续的帧,非末帧是0,末帧是1。
1158 data: v21: hdlc-data[02]
HDLC消息的facsimile control域(FCF),0x02表示CSI信令,该信令是选用信令,表明
可用被叫用户的国际电话号码来提供被叫用户的特定身份。CSI的facimile info域由20个编
码数字组成,见其后20个帧。
1159—1181 data: v21: hdlc—data[04] (中间有2个帧序号不连续,共20帧)
CSI编码格式见下表,从表中无法查到对应的编码。
1182 data: v21: hdlc-fcs-ok
Hdlc-fcs-ok 标识了HDLC帧的结束并收到了合适的FCS,也标识这不是最后一帧,该
字段类型没有字段数据,仅仅是个标识.
1183-1193 DIS信令
DIS信令的打包发送过程。
1183,1184见1156,1157
1185 data: v21: hdlc-data[01]
FCF =0x01, 表明是DIS信令,表征被叫终端的标准能力.
1186-1191 共48位表明了被叫的传真能力。
下面仅就DIS的各标志位含义做简单描述,不明之处可查询GB_T 3382.2—2003 P39—47 表
2或ITU T。30 09/2005 P52 Table 2
1186 data: v21: hdlc-data[00]
“0000 0000”
注1: “保留" 表示为 0。
1187 data: v21: hdlc-data[72]
“0111 0010”
1188 data: v21: hdlc-data[17]
0001 0111
1189 data: v21: hdlc—data[01]
0000 0001
1190 data: v21: hdlc—data[01]
0000 0001
1191 data: v21: hdlc-data[08]
0000 1000
1192 data: v21: hdlc—fcs—ok 见1182
1193 data: v21: hdlc-sig-end
标识HDLC的功率电平已经下降到低于关闭门限,用来表征一系列帧的结束。该字段类
型后无字段数据。
1198-1340主叫—〉被叫
1214-1243 TSI信令
TSI信令的打包发送过程.TSI信令指出随后的FIF信息是发送终端的标识。
1214,1215见1156,1157
1216 data: v21: hdlc-data[C2]
FCF = 0xC2,
X100 0010
FCF域中X值:
收到DIS的终端会置X=1;反之,X=0。
在这个抓包中,主叫要发送进行设置就是1,被叫就是0。
1218—1239 data: v21: hdlc-data[04]
TSI与CSI 使用的数据编码方式相同,0x04也是接收到CSI中的数据信息。
1241 data: v21: hdlc—fcs—ok
1244—1262 DCS信令
DCS信令的打包发送过程, 是DIS信令标准能力的响应消息。
1244,1245见1153,1154.
1246 data: v21: hdlc-data[C1]
FCF =0xC1,
X100 0001, , 由于是主叫发出,所以X=1.
1248 data: v21: hdlc-data[00]
1249data: v21: hdlc—data[73]
1250data: v21: hdlc—data[15]
1251data: v21: hdlc—data[01]
1252data: v21: hdlc—data[01]
1253data: v21: hdlc-data[00]
DCS数据可参考DIS在T30协议中的同一张表,这里不再进行详细描述,可查询GB_T 3382.2
—2003 P39—47 表2或ITU T.30 09/2005 P52 Table 2
1255 data: v21: hdlc-fcs—ok 见1182
1258 data: v21: hdlc—sig—end 见1193
1274—1330 发送training数据
1274 t30ind: v29-7200—training
对应T30协议中训练检验(TCF)信号,本信号要求非HDLC 帧.
格式:1。5* (1±10%)s 的0串
1274—1329 data: v29-7200: t4-non-ecm—data
1274包的时间戳是112.14 秒,1329包的时间戳是113。64秒,其时间差正好是1。5秒,
符合协议.
T4-non-ecm-data表示不使用ECM或FEC发送T4过程数据.
1330data: v29—7200: t4—non—ecm-sig—end
t4—non-ecm-sig-end 表示不使用ECM或FEC发送T4过程数据的结束。
1346-1358被叫-〉主叫
1350—1355 CFR信令
1350,1351见1156,1157。
1352 data: v21: hdlc—data[21]
FCF = 0x21,
X010 0001, 由于是被叫发出,X=0
CFR信令表明全部报文前过程(B阶段)已结束,可以开始发送报文数据。
C阶段(报文发送阶段)
1362-3644 主叫—>被叫
1362-3616 发送第一页数据
数据格式可参考training数据格式。
3617—3641MOP信令
3632,3634见1156,1157。
3635 data: v21: hdlc—data[F2]
FCF = 0xF2
X111 0010, 由于是主叫发送,X=1.
MOP信令是多页信号,表示一完整传真信息页的结束,并在收到证实后返回到C阶段
的开始。
3637,3641见1182,1193。
3649—3662 被叫-〉主叫
3654—3659 MCF信令
3654,3655见1156,1157。
3656 data: v21: hdlc-data[31]
FCF = 0x31,
X011 0001,由于是被叫发送,X=0。
MCF信令表示已经满意地收到完整的报文,并可继续接收另外的报文,是MOP信令的
肯定响应。
3658,3659见1182,1193.
3666—6735 又发送了一页数据,同上分析。
6737—9793 主叫—>被叫
6737—9755 发送最后一页数据
9756—9737 EOP信令
9781,9782见1156,1157。
9783 data: v21: hdlc-data[F4]
FCF = 0xF4
X111 0100, 由于是主叫发送,X=1。
EOP信令是多页信号,表示一完整传真信息页的结束,并进一步表示不再发来文件,在收
到证实后进入阶段E。
9785,9789见1182,1193。
9799—9810 被叫—>主叫
9799—9810 MCF信令
见3654—3659。
MCF信令也可以是EOP信令的肯定响应.
问题1:HDLC消息的第一字节和最后一个字节Flag没有,why?
参考: 是在T38协议中使用了HDLC的消息格式,在IP层传输,而并不是在真正的数据
链路层进行数据传输,而且t38协议中也规定很多indicator可以表明HDLC消息的开始与结
束,所以Flag域就不需要了。
问题2:1159-1181 数据是0x04,在CSI编码表中不存在?
参考: 无.