如何识别uTP协议流量?

如何识别uTP协议流量?

【注意】请使用等宽字体(如Courier New)阅读本文档。
1. uTP协议文档请参见:Specifications: BEP-0029
http://www.bittorrent.org/beps/bep_0029.html

2. uTP协议流量中的数据包具有如下uTP协议包头:
-- Fixed Header --
Fields Types
0       4       8               16              24              32
+-------+-------+---------------+---------------+---------------+
| ver   | type  | extension     | connection_id                 |
+-------+-------+---------------+---------------+---------------+
| timestamp_microseconds                                        |
+---------------+---------------+---------------+---------------+
| timestamp_difference_microseconds                             |
+---------------+---------------+---------------+---------------+
| wnd_size                                                      |
+---------------+---------------+---------------+---------------+
| seq_nr                        | ack_nr                        |
+---------------+---------------+---------------+---------------+
【备注】在头部中,ver字段是第一个字节(byte 0)的低4位。

数据包的类型由type字段决定,有如下几种类型:
1. type==0
表示传输数据。该包中必然包含数据部分。
2. type==1
表示释放uTP连接。这是一条uTP流的最后一个数据包。
3. type==2
表示状态。主要用于ACK。
4. type==3
表示强制断开uTP连接。
5. type==4
表示请求建立uTP连接。

此外,uTP协议还定义了扩展字段(见数据包头部中的extension),扩展字段主要有三类:
1. extension==0
表示无扩展。

如果extension!=0,则头部之后接着有2Bytes,

-- Extension Field(s) --
0               8               16...
+---------------+---------------+---------------+---------------+
| extension     | len           | 负载
+---------------+---------------+---------------+---------------+
其中,
extension指定下一个扩展。也就是说,本扩展部分之后还可以继续有扩展部分。如果extension==0,表示接着没有扩展部分了。如果extension!=0,表示本扩展之后,接着是另一个扩展。
len指定了本扩展的长度。

2. extension==1
表示有选择地确认(selective ACK)。
len是以Bytes表示的。
负载部分是32位(4Bytes)或32位的倍数(4*n Bytes)的位掩码(bitmask)。因此,len是4或者为4的倍数。
3. extension==2
用于交换信息。长度len==8,现在负载全部为0。


一条完整的uTP流的过程如下:A(ip1, port1) B(ip2, port2)
1. SYN   A->B
type==4
A->B: Connect_ID+1
B->A: Connect_ID

2. ACK  B->A
type==2
A->B: Connect_ID+1
B->A: Connect_ID

3. DATA
type==0

4. FIN或RST
type==1或type==3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jia9iniu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值