Skip to content

Commit d46f0eb

Browse files
author
anytls
committed
Update Default Padding Schme
1 parent c329a2a commit d46f0eb

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

docs/protocol.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ padding-md5=(md5)
7878
7979
```
8080
stop=8
81-
0=34-120
81+
0=30-30
8282
1=100-400
83-
2=400-500,c,500-1000,c,400-500,c,500-1000,c,500-1000,c,400-500
84-
3=500-1000
83+
2=400-500,c,500-1000,c,500-1000,c,500-1000,c,500-1000
84+
3=9-9,500-1000
8585
4=500-1000
8686
5=500-1000
8787
6=500-1000
@@ -99,14 +99,16 @@ stop=8
9999
100100
`padding0` 也就是第 `0` 个包,处于认证部分,不支持分包。客户端应将该长度的 padding 与 sha265(password) 一并发送。
101101

102+
提示:认证部分的开销为 34 字节。
103+
102104
> stop
103105
104106
`stop` 表示在第几个包停止处理 padding 比如: `stop=8` 代表只处理第 `0~7` 个包。
105107

106108
> padding1 开始
107109
108110
- padding1 开始处于会话部分,采用 padding 策略分包和/或填充:如果分包发送完之后,用户数据仍然有剩余,则直接发送剩余数据。如果分包发送完之前,用户数据已发送完毕,则发送 `cmdWaste frame` 垃圾 padding 数据(建议用 0)做填充。
109-
- 分包策略,比如:上述 paddingScheme 将包 `2` 将分成 5 个尺寸在 400-500 的小包发送(这里的尺寸指 TLS PlainText 的尺寸,不计算 TLS 加密等开销)。
111+
- 分包策略,比如:上述 paddingScheme 将包 `2` 将分成 5 个尺寸在 400-500 / 500-1000 的小包发送(这里的尺寸指 TLS PlainText 的尺寸,不计算 TLS 加密等开销)。
110112
- 中间的 `c` 是检查符号,含义:若上一个分包发送完毕后,用户数据已无剩余,则直接对本次写入返回,不再发送后续的填充包。
111113
- 包计数器以写到 TLS 的次数为准,包 `1` 应该包括:`cmdSettings` 和首个 Stream 的 `cmdSYN + cmdPSH(代理目标地址数据)`
112114
-`2` 应该是代理自用户的第一个数据包,比如 TLS ClientHello。

proxy/padding/padding.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import (
1515
const CheckMark = -1
1616

1717
var defaultPaddingScheme = []byte(`stop=8
18-
0=34-120
18+
0=30-30
1919
1=100-400
20-
2=400-500,c,500-1000,c,400-500,c,500-1000,c,500-1000,c,400-500
21-
3=500-1000
20+
2=400-500,c,500-1000,c,500-1000,c,500-1000,c,500-1000
21+
3=9-9,500-1000
2222
4=500-1000
2323
5=500-1000
2424
6=500-1000

0 commit comments

Comments
 (0)