From 3b278ad42c44f0a0649cd8ddd2bde4fb4becc127 Mon Sep 17 00:00:00 2001 From: Fangliding Date: Mon, 7 Sep 2026 01:16:46 +0800 Subject: [PATCH] Fragment: Clarify fragment behavior --- docs/config/transports/finalmask.md | 2 +- docs/en/config/transports/finalmask.md | 2 +- docs/ru/config/transports/finalmask.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/config/transports/finalmask.md b/docs/config/transports/finalmask.md index a2e85508..241f0c33 100644 --- a/docs/config/transports/finalmask.md +++ b/docs/config/transports/finalmask.md @@ -160,7 +160,7 @@ FinalMask 在核心处理完包括 TLS/REALITY 在内的传输层加密后,对 `"lengths"`:分片包长 (byte) -数组的第 n 个表示当前处理的单个数据包所切出的第 n 个分片期望的长度,最后一项则持续对当前数据包后续切出的分片生效。除最后一项外可以为 0,若选中 0 则空转等待下次 delay +数组的第 n 个表示当前处理的单个数据包所切出的第 n 个分片期望的长度,最后一项则持续对当前数据包后续切出的分片生效。除最后一项外可以为 0(否则会导致无限空转),对于 TCP 流切片表现为不发送数据,对于 tlshello 则表现为发送违反 RFC 的空 TLS record(部分实现容忍,但是不包括 golang)。 `"delays"`:分片间隔(ms) diff --git a/docs/en/config/transports/finalmask.md b/docs/en/config/transports/finalmask.md index af126b7d..e10fda2c 100644 --- a/docs/en/config/transports/finalmask.md +++ b/docs/en/config/transports/finalmask.md @@ -160,7 +160,7 @@ Controls outgoing TCP fragmentation. In some cases it can deceive censorship sys `"lengths"`: fragment size in bytes. -The n-th element of the array specifies the expected length of the n-th fragment split from the current packet being processed; the last element keeps applying to all subsequent fragments split from that packet. Entries other than the last may be `0`; when `0` is selected, no fragment is split out for that round — it just idles and waits out the corresponding delay before the next one. +The n-th element of the array specifies the expected length of the n-th fragment split from the current packet being processed; the last element keeps applying to all subsequent fragments split from that packet. Entries other than the last may be `0` (otherwise it causes infinite idling); for TCP stream slicing, it behaves as sending no data, while for tlshello, it behaves as sending an RFC-violating empty TLS record (tolerated by some implementations, but not Golang). `"delays"`: interval between fragments in milliseconds. diff --git a/docs/ru/config/transports/finalmask.md b/docs/ru/config/transports/finalmask.md index e29a53d3..0d9a4473 100644 --- a/docs/ru/config/transports/finalmask.md +++ b/docs/ru/config/transports/finalmask.md @@ -160,7 +160,7 @@ FinalMask добавляет последний слой маскировки п `"lengths"`: длина фрагмента в байтах. -n-й элемент массива задаёт ожидаемую длину n-го фрагмента, отрезаемого от текущего обрабатываемого пакета; последний элемент продолжает применяться ко всем последующим фрагментам, отрезаемым от этого пакета. Все элементы, кроме последнего, могут быть `0`; если выбран `0`, фрагмент в этом проходе не выделяется — выполняется холостой проход с ожиданием соответствующей задержки перед следующим фрагментом. +n-й элемент массива задаёт ожидаемую длину n-го фрагмента, отрезаемого от текущего обрабатываемого пакета; последний элемент продолжает применяться ко всем последующим фрагментам, отрезаемым от этого пакета. Все элементы, кроме последнего, могут быть `0` (иначе это приведёт к бесконечному холостому циклу); для нарезки TCP-потока это выражается в том, что данные не отправляются, а для tlshello — в отправке нарушающей RFC пустой TLS-записи (допускается некоторыми реализациями, но не Golang). `"delays"`: интервал между фрагментами в миллисекундах.