diff --git a/docs/config/transports/finalmask.md b/docs/config/transports/finalmask.md index 8285f1bf..a2e85508 100644 --- a/docs/config/transports/finalmask.md +++ b/docs/config/transports/finalmask.md @@ -145,8 +145,8 @@ FinalMask 在核心处理完包括 TLS/REALITY 在内的传输层加密后,对 // [!code focus:6] "settings": { "packets": "tlshello", - "length": "100-200", - "delay": "10-20", + "lengths": ["3-5", "6-8", "10-20"], + "delays": ["10-20"], "maxSplit": "3-6" } } @@ -158,9 +158,13 @@ FinalMask 在核心处理完包括 TLS/REALITY 在内的传输层加密后,对 `"packets"`:支持两种分片方式 "1-3" 是 TCP 的流切片,应用于客户端第 1 至第 3 次写数据。"tlshello" 是 TLS 握手包切片。 -`"length"`:分片包长 (byte),不能为 0。 +`"lengths"`:分片包长 (byte) -`"delay"`:分片间隔(ms) +数组的第 n 个表示当前处理的单个数据包所切出的第 n 个分片期望的长度,最后一项则持续对当前数据包后续切出的分片生效。除最后一项外可以为 0,若选中 0 则空转等待下次 delay + +`"delays"`:分片间隔(ms) + +数组的第 n 个表示当前处理的单个数据包所切出的第 n 个分片发送后等待的间隔,最后一项则持续对当前数据包后续切出的分片生效。 当其为 0 且设置 `"packets": "tlshello"` 时,被分片的 Client Hello 将会在一个TCP包中发送(如果其原始大小未超过MSS或MTU导致被系统自动分片) diff --git a/docs/en/config/transports/finalmask.md b/docs/en/config/transports/finalmask.md index 9e7e6c9c..af126b7d 100644 --- a/docs/en/config/transports/finalmask.md +++ b/docs/en/config/transports/finalmask.md @@ -145,8 +145,8 @@ See the fields for each type below. // [!code focus:6] "settings": { "packets": "tlshello", - "length": "100-200", - "delay": "10-20", + "lengths": ["3-5", "6-8", "10-20"], + "delays": ["10-20"], "maxSplit": "3-6" } } @@ -158,9 +158,13 @@ Controls outgoing TCP fragmentation. In some cases it can deceive censorship sys `"packets"`: supports two fragmentation modes. `"1-3"` slices the TCP stream and applies to the client's 1st through 3rd write operations. `"tlshello"` fragments the TLS handshake packet. -`"length"`: fragment size in bytes. It must not be `0`. +`"lengths"`: fragment size in bytes. -`"delay"`: delay between fragments in milliseconds. +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. + +`"delays"`: interval between fragments in milliseconds. + +The n-th element of the array specifies how long to wait after sending the n-th fragment split from the current packet being processed; the last element keeps applying to all subsequent fragments split from that packet. When it is `0` and `"packets": "tlshello"` is set, the fragmented Client Hello will be sent in a single TCP packet, as long as its original size does not exceed the MSS or MTU and the system does not fragment it automatically. diff --git a/docs/ru/config/transports/finalmask.md b/docs/ru/config/transports/finalmask.md index b40043bb..e29a53d3 100644 --- a/docs/ru/config/transports/finalmask.md +++ b/docs/ru/config/transports/finalmask.md @@ -145,8 +145,8 @@ FinalMask добавляет последний слой маскировки п // [!code focus:6] "settings": { "packets": "tlshello", - "length": "100-200", - "delay": "10-20", + "lengths": ["3-5", "6-8", "10-20"], + "delays": ["10-20"], "maxSplit": "3-6" } } @@ -158,9 +158,13 @@ FinalMask добавляет последний слой маскировки п `"packets"`: поддерживаются два режима фрагментации. `"1-3"` разрезает TCP-поток и применяется к 1-й, 2-й и 3-й операциям записи клиента. `"tlshello"` фрагментирует пакет TLS-рукопожатия. -`"length"`: длина фрагмента в байтах. Не может быть `0`. +`"lengths"`: длина фрагмента в байтах. -`"delay"`: интервал между фрагментами в миллисекундах. +n-й элемент массива задаёт ожидаемую длину n-го фрагмента, отрезаемого от текущего обрабатываемого пакета; последний элемент продолжает применяться ко всем последующим фрагментам, отрезаемым от этого пакета. Все элементы, кроме последнего, могут быть `0`; если выбран `0`, фрагмент в этом проходе не выделяется — выполняется холостой проход с ожиданием соответствующей задержки перед следующим фрагментом. + +`"delays"`: интервал между фрагментами в миллисекундах. + +n-й элемент массива задаёт, сколько ждать после отправки n-го фрагмента, отрезаемого от текущего обрабатываемого пакета; последний элемент продолжает применяться ко всем последующим фрагментам, отрезаемым от этого пакета. Если значение равно `0` и задано `"packets": "tlshello"`, фрагментированный Client Hello будет отправлен в одном TCP-пакете, если его исходный размер не превышает MSS или MTU и система не фрагментирует его автоматически.