π‘ XHTTP: ΡΡΠ°Π½ΡΠΏΠΎΡΡ Xray, ΠΏΡΠΈΡΠ²ΠΎΡΡΡΡΠΈΠΉΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ Π²Π΅Π±-ΡΡΠ°ΡΠΈΠΊΠΎΠΌ
Π ΡΡΠΌ Π·Π°ΠΌΠ΅ΡΠΊΠ°
ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΡΠ°Π·Π±ΠΎΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ° XHTTP (ΡΠ°Π½ΡΡΠ΅ Π½Π°Π·ΡΠ²Π°Π»ΡΡ SplitHTTP) Π² Xray-core β ΠΊΠ°ΠΊ ΠΎΠ½ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΠ°ΡΠΈΠΊ Π² ΠΎΠ±ΡΡΠ½ΡΠ΅ HTTP-Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΉΡΠΈ ΡΠΊΠ²ΠΎΠ·Ρ CDN Π²ΡΠΎΠ΄Π΅ Cloudflare, ΠΈ Π² ΡΡΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΅Π³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ
packet-up,stream-upΠΈstream-one. Π Π°Π·Π±ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΠ΅Π½ΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°transport/internet/splithttp/(Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΡΡΠ°Π»ΠΎΡΡsplithttp, ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β XHTTP). XHTTP β ΡΡΠΎ ΡΡΠ°Π½ΡΠΏΠΎΡΡ (ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ), ΠΎΠ½ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»Π΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ VLESS ΠΈ ΡΠ»ΠΎΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ REALITY.
TL;DR
- XHTTP β ΡΡΠ°Π½ΡΠΏΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠΊΡΠΈ Π² ΠΎΠ±ΡΡΠ½ΡΠ΅ HTTP GET/POST-Π·Π°ΠΏΡΠΎΡΡ. ΠΠ»Ρ CDN ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- Β«SplitΒ» Π² ΡΡΠ°ΡΠΎΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠΈ = ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ: ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ (download) ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° (upload) ΠΈΠ΄ΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ HTTP-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ HTTP ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΠ΄ΡΠΏΠ»Π΅ΠΊΡΠ½ΡΠΉ, ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΡΠ·Π»Ρ (CDN, nginx) ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡ Π΄ΠΎΠ»Π³ΠΈΠ΅ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
- Π’ΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°:
packet-up(Π°ΠΏΠ»ΠΈΠ½ΠΊ Π΄ΡΠΎΠ±ΠΈΡΡΡ Π½Π° ΠΊΡΡΡ ΠΊΠΎΡΠΎΡΠΊΠΈΡ POST β ΡΠ°ΠΌΡΠΉ CDN-Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½ΡΠΉ),stream-up(Π°ΠΏΠ»ΠΈΠ½ΠΊ ΠΎΠ΄Π½ΠΈΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ POST, Π΄Π°ΡΠ½Π»ΠΈΠ½ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ GET),stream-one(Π²ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄ΡΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ β Π΄Π»Ρ REALITY Π½Π°ΠΏΡΡΠΌΡΡ, Π±Π΅Π· CDN). - XMUX ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΠΈΡΡΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ β ΠΊΠ°ΠΊ Π½Π°ΡΡΠΎΡΡΠΈΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ.
- ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠΈΠ»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°Π΄Π΄ΠΈΠ½Π³ΠΎΠΌ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Β«ΠΏΠΎΠ΄ fetch/gRPC/SSEΒ» ΠΈ Π°Π½ΡΠΈ-Π±ΡΡΠ΅ΡΠ½ΡΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠΈΠΌΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° CDN.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ XHTTP: ΠΏΡΠΎΠΉΡΠΈ ΡΠΊΠ²ΠΎΠ·Ρ CDN
ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° XHTTP β ΠΏΡΠΎΠ³Π½Π°ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΠ°ΡΠΈΠΊ ΡΠ΅ΡΠ΅Π· CDN (ΡΠ΅ΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Cloudflare). Π‘ΠΌΡΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π½Π·ΠΎΡΡ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ CDN ΡΠ΅Π»ΠΈΠΊΠΎΠΌ: Π·Π° ΠΎΠ΄Π½ΠΈΠΌ IP Cloudflare ΡΡΠΎΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ Π»Π΅Π³Π°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΡΠΎΠ². ΠΡΠ»ΠΈ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΠ°ΡΠΈΠΊ Π½Π΅ΠΎΡΠ»ΠΈΡΠΈΠΌ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΠ°ΠΉΡΡ Π·Π° CDN, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠΎ CDN β ΠΊΠ°ΠΏΡΠΈΠ·Π½Π°Ρ ΡΡΠ΅Π΄Π°: ΠΎΠ½Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ HTTP, Π½Π΅ Π»ΡΠ±ΠΈΡ Π΄ΠΎΠ»Π³ΠΈΠ΅ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π±ΡΡΠ΅ΡΠΈΠ·ΡΠ΅Ρ ΠΈ ΠΊΡΡΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅ΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΡΡΠΈΡΡ ΡΡΠ΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ TCP-ΡΡΠ½Π½Π΅Π»Ρ. XHTTP ΡΡΡΡΠΎΠ΅Π½ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π³ΡΡΠ·ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ POST-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ GET-Π·Π°ΠΏΡΠΎΡΠΎΠΌ.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: XHTTP ΠΏΠ΅ΡΠ΅ΠΎΠ΄Π΅Π²Π°Π΅Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΠ½Π½Π΅Π»Ρ Π² ΠΊΠΎΡΡΡΠΌ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°, Π΄Π° ΡΠ°ΠΊ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈΠ΄ΠΈΡΡΠΈΠ²ΡΠΉ ΠΎΡ ΡΠ°Π½Π½ΠΈΠΊ-CDN ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠ΅Π³ΠΎ.
Β«SplitΒ»: ΠΏΠΎΡΠ΅ΠΌΡ upload ΠΈ download β ΡΠ°Π·Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
ΠΠ΄ΠΈΠ½ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΡΠΏΠ»Π΅ΠΊΡΠ½ΡΠΉ ΡΡΠ½Π½Π΅Π»Ρ (VLESS ΠΏΠΎΠ²Π΅ΡΡ
ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ°) Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΡΡΡΠΊΡΡΡΠΎΠΉ splitConn β ΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠΌΠΈ reader (Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ) ΠΈ writer (ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠΉ). ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Β«SplitΒ» ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ Π³Π»Π°Π²Π½ΡΡ ΠΈΠ΄Π΅Ρ: Π΄Π²Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π½Π΅ΡΠ΅Π½Ρ Π½Π° ΡΠ°Π·Π½ΡΠ΅ HTTP-Π·Π°ΠΏΡΠΎΡΡ.
ΠΡΠΈΡΠΈΠ½Π° Π² ΠΏΡΠΈΡΠΎΠ΄Π΅ HTTP: ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΡΡ Π²Π²Π΅ΡΡ (ΠΊΠ»ΠΈΠ΅Π½Ρ β ΡΠ΅ΡΠ²Π΅Ρ), ΡΠ΅Π»ΠΎ ΠΎΡΠ²Π΅ΡΠ° β Π²Π½ΠΈΠ·. ΠΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΡΠΏΠ»Π΅ΠΊΡ Π² ΠΎΠ΄Π½ΠΎΠΌ HTTP-ΠΎΠ±ΠΌΠ΅Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ HTTP/2 ΠΈΠ»ΠΈ HTTP/3 ΠΈ ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ. ΠΠΎΡΡΠΎΠΌΡ:
- Download (ΡΠ΅ΡΠ²Π΅Ρ β ΠΊΠ»ΠΈΠ΅Π½Ρ) β ΠΎΠ΄ΠΈΠ½ Π΄Π»ΠΈΠ½Π½ΡΠΉ GET, ΡΠ΅Π»ΠΎ ΠΎΡΠ²Π΅ΡΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠΈΠΌΠΈΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
- Upload (ΠΊΠ»ΠΈΠ΅Π½Ρ β ΡΠ΅ΡΠ²Π΅Ρ) β Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ POST, Π»ΠΈΠ±ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΡ POST (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ°).
Π‘Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠΊΠ»Π΅ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠΈΠΉ sessionId: GET-Π·Π°ΠΏΡΠΎΡ Π΄Π°ΡΠ½Π»ΠΈΠ½ΠΊΠ° ΠΈ Π²ΡΠ΅ POST-Π·Π°ΠΏΡΠΎΡΡ Π°ΠΏΠ»ΠΈΠ½ΠΊΠ° Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ sessionId ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠ½Π½Π΅Π»Ρ.
Π’ΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ
Π Π΅ΠΆΠΈΠΌ Π·Π°Π΄Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅ΠΌ mode. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ auto (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊ: ΠΎΠ±ΡΡΠ½ΠΎ β packet-up; ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΡΠ½Π½ΠΎΠΌ REALITY β stream-one; Π° Π΅ΡΠ»ΠΈ ΠΏΡΠΈ REALITY Π·Π°Π΄Π°Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°Π½Π°Π» ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ (downloadSettings) β stream-up.
packet-up β ΡΠ°ΠΌΡΠΉ CDN-Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½ΡΠΉ
ΠΠΏΠ»ΠΈΠ½ΠΊ Π½Π°ΡΠ΅Π·Π°Π΅ΡΡΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΡ
Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
POST-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π΅ΡΡΡ ΠΊΡΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ seq. ΠΠ°ΡΠ½Π»ΠΈΠ½ΠΊ β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ GET.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· CDN: ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ POST + ΠΎΠ΄ΠΈΠ½ GET Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄ΡΠΏΠ»Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ CDN Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΠΎ Π΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ POST ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (ΡΠ΅ΡΠ΅Π· CDN ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ΄ΡΠΈ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ Π±ΡΠΊΠ΅Π½Π΄-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌ). ΠΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ POST ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΡΠΌ seq, Π° ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ.
ΠΠ° ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ upload_queue.go β ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ (min-heap ΠΏΠΎ seq): ΠΏΠ°ΠΊΠ΅ΡΡ Π²ΡΠ΄Π°ΡΡΡΡ Π½Π°Π²Π΅ΡΡ
ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ°, Β«ΠΎΠΏΠΎΠ·Π΄Π°Π²ΡΠΈΠ΅Β» ΠΊΠΎΠΏΡΡΡΡ Π² ΠΊΡΡΠ΅ ΠΈ ΠΆΠ΄ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠΉ. ΠΡΠ»ΠΈ ΠΊΡΡΠ° ΡΠ°Π·ΡΠ°ΡΡΠ°Π΅ΡΡΡ ΡΠ²Π΅ΡΡ
Π»ΠΈΠΌΠΈΡΠ° (scMaxBufferedPosts, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 30) β ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ²ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ ΡΡΠ΅Π» Π²ΡΡ ΠΏΠ°ΠΌΡΡΡ.
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΅ΡΡΡ Π²Π°ΠΆΠ½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ β Π±Π°ΡΡΠΈΠ½Π³: ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅Π»ΠΊΠΈΡ
Write ΡΠΊΠ»Π΅ΠΈΠ²Π°ΡΡΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ POST ΠΏΠΎΠΊΡΡΠΏΠ½Π΅Π΅ (ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅Π·ΠΊΠΎ ΠΏΠ°Π΄Π°Π΅Ρ). ΠΠ΅ΠΆΠ΄Ρ POST Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΡΠ·Π° scMinPostsIntervalMs (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 30 ΠΌΡ) β Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠ±ΠΈΠ²Π°Π΅Ρ ΡΠΈΠ½Π³Π΅ΡΠΏΡΠΈΠ½Ρ ΠΏΠΎ ΡΠ°ΠΉΠΌΠΈΠ½Π³Ρ.
stream-up β Π°ΠΏΠ»ΠΈΠ½ΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠΌ
ΠΠΏΠ»ΠΈΠ½ΠΊ ΠΈΠ΄ΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΌ POST (ΡΠ΅Π»ΠΎ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ, Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡ), Π΄Π°ΡΠ½Π»ΠΈΠ½ΠΊ β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ GET. ΠΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ (ΡΠ΅ΡΠ΅Π· downloadSettings). ΠΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Β«Π·Π°Π³ΡΡΠΆΠ°Ρ ΡΠ΅ΡΠ΅Π· ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π½Π°Π», ΠΊΠ°ΡΠ°Ρ ΡΠ΅ΡΠ΅Π· Π΄ΡΡΠ³ΠΎΠΉΒ».
stream-one β Π²ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅
Π Π°ΠΏΠ»ΠΈΠ½ΠΊ, ΠΈ Π΄Π°ΡΠ½Π»ΠΈΠ½ΠΊ ΠΈΠ΄ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ HTTP-ΠΎΠ±ΠΌΠ΅Π½Π°: ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° β Π²Π²Π΅ΡΡ
, ΡΠ΅Π»ΠΎ ΠΎΡΠ²Π΅ΡΠ° β Π²Π½ΠΈΠ·, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠΎ ΠΈΡΡΠΈΠ½Π½ΡΠΉ Π΄ΡΠΏΠ»Π΅ΠΊΡ, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ HTTP/2 ΠΈΠ»ΠΈ HTTP/3. ΠΠ΄Π΅Π°Π»Π΅Π½ Π΄Π»Ρ REALITY Π½Π°ΠΏΡΡΠΌΡΡ (Π±Π΅Π· CDN), Π³Π΄Π΅ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΡΠΏΠ»Π΅ΠΊΡ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½. sessionId Π·Π΄Π΅ΡΡ Π½Π΅ Π½ΡΠΆΠ΅Π½ β ΡΠ΅ΡΡΠΈΡ ΠΈ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ.
| Π Π΅ΠΆΠΈΠΌ | Uplink | Downlink | ΠΠ΄Π΅ Ρ ΠΎΡΠΎΡ |
|---|---|---|---|
packet-up | ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΡ
POST Ρ seq | ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ GET | ΡΠ΅ΡΠ΅Π· CDN, HTTP/1.1 |
stream-up | ΠΎΠ΄Π½ΠΎ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ POST | ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ GET | ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ up/down |
stream-one | ΡΠ΅Π»ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° | ΡΠ΅Π»ΠΎ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΡΠ²Π΅ΡΠ° | REALITY Π½Π°ΠΏΡΡΠΌΡΡ, h2/h3 |
XMUX: ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°
XMUX ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠ½Π½Π΅Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΎ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠ΅Π΅ (TCP/QUIC) ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ. Π‘ΠΌΡΡΠ» β Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ Π½Π°ΡΡΠΎΡΡΠΈΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ: ΡΠΎΡ Π΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ»Π³ΠΈΡ HTTP/2-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈ Π³ΠΎΠ½ΡΠ΅Ρ ΠΏΠΎ Π½ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π»ΠΈΠΌΠΈΡΡ (Π²ΡΠ΅ Π·Π°Π΄Π°ΡΡΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ ΠΈ ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·ΠΈΡΡΡΡΡΡ):
maxConcurrencyβ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π°ΠΊΡΠΈΠ²Π½Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ.maxConnectionsβ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π΄Π΅ΡΠΆΠ°ΡΡ Π² ΠΏΡΠ»Π΅.cMaxReuseTimesβ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΎΠ΄Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.hMaxRequestTimesβ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ.hMaxReusableSecsβ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΠΈΠΌΠΈΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΠΎΠ³Π΄Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π»ΠΎ Π»ΠΈΠΌΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ β ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π° ΡΠ²Π΅ΠΆΠ΅Π΅. Π ΠΎΡΠ°ΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ TLS-ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΈΠ½Π³Π΅ΡΠΏΡΠΈΠ½ΡΠΈΡΡ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠΎ Π°Π½ΠΎΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡΡΠΈΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌ.
ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ°: ΠΏΠ°Π΄Π΄ΠΈΠ½Π³ ΠΈ Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅Β» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ
XHTTP ΡΡΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΡΠΉ HTTP-ΡΡΠ°ΡΠΈΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- XPadding β ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ (
xPaddingBytes, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 100β1000 Π±Π°ΠΉΡ) ΡΠ°Π·ΠΌΡΠ²Π°Π΅Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ². ΠΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΆΠΈΠΌtokenish, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π³ΠΎΠ½ΡΠ΅Ρ ΠΏΠ°Π΄Π΄ΠΈΠ½Π³ ΠΏΠΎΠ΄ Π½ΡΠΆΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² HPACK/QPACK, ΡΡΠΎΠ±Ρ Π½Π° ΠΏΡΠΎΠ²ΠΎΠ΄Π΅ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π» ΡΠΎΠ²Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ°Π΄Π΄ΠΈΠ½Π³ ΠΏΡΡΡΠ΅ΡΡΡ Π² query-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡx_paddingΠ²Π½ΡΡΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Referer. - ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ΄ Π±ΡΠ°ΡΠ·Π΅Ρ β Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠΌΠΈΡΠΈΡΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠΉ
fetch. - ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ gRPC β ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ
Content-Type: application/grpc. - ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ SSE β Π΄Π°ΡΠ½Π»ΠΈΠ½ΠΊ-ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ
Content-Type: text/event-stream(Server-Sent Events). - ΠΠ½ΡΠΈ-Π±ΡΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ β
X-Accel-Buffering: noΠΈCache-Control: no-storeΠΎΡΠΊΠ»ΡΡΠ°ΡΡ Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° nginx/CDN. ΠΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ: ΠΈΠ½Π°ΡΠ΅ CDN Π½Π°ΠΊΠΎΠΏΠΈΠ» Π±Ρ ΡΡΡΠΈΠΌ Π² ΠΊΡΡΠ΅ ΠΈ ΡΠ»ΠΎΠΌΠ°Π» ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ (sessionId, seq) ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ XHTTP ΡΠΌΠ΅Π΅Ρ ΡΠ°ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ Π·Π°ΠΏΡΠΎΡΠ° β Π² ΠΏΡΡΡ URL, query, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ cookie (Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· sessionIDPlacement, seqPlacement, uplinkDataPlacement). ΠΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ
Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ
/cookie ΠΎΠ½ΠΈ ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ base64url ΠΈ ΡΠ΅ΠΆΡΡΡΡ Π½Π° ΡΠ°Π½ΠΊΠΈ. ΠΡΠΎ Π΄Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΏΠΎΠ΄ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ CDN.
ΠΠ°ΠΊ XHTTP ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ TLS ΠΈ REALITY
XHTTP β ΡΡΠΎ ΡΡΠ°Π½ΡΠΏΠΎΡΡ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (HTTP), Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, Π² ΠΎΠ±ΡΠΈΡ
Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΏΠΎΡΠΎΠΊΠ° (streamSettings), Π° Π½Π΅ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ XHTTP. Π‘Π»ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ β ΠΎΠ±ΡΡΠ½ΡΠΉ TLS (ΡΠ΅ΡΠ΅Π· uTLS Ρ ΡΠΈΠ½Π³Π΅ΡΠΏΡΠΈΠ½ΡΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ°) ΠΈΠ»ΠΈ REALITY.
ΠΡΠ±ΠΎΡ Π²Π΅ΡΡΠΈΠΈ HTTP Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ»ΠΎΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ: ΠΏΡΠΈ REALITY β Π²ΡΠ΅Π³Π΄Π° HTTP/2; Π±Π΅Π· TLS β HTTP/1.1; ΠΈΠ½Π°ΡΠ΅ ΠΏΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ALPN (h3 β HTTP/3, ΠΈΠ½Π°ΡΠ΅ HTTP/2). ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ REALITY Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ β stream-one (ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΡΠΏΠ»Π΅ΠΊΡ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½), Π° ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ CDN ΠΏΠΎ HTTP/1.1 Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ packet-up.
XHTTP ΠΈ Vision: ΡΠ°Π½ΡΡΠ΅ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π»ΠΈΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· VLESS Encryption
ΠΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π·Π²ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΡΡΠΎ: XTLS-Vision ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ TLS/REALITY ΠΏΠΎ TCP, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ XHTTP flow
xtls-rprx-visionΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ, ΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΈΠ· Π΄Π²ΡΡ . Π‘ ΡΠ΅Π½ΡΡΠ±ΡΡ 2025 ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ: Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ VLESS Encryption, Vision ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎΠ²Π΅ΡΡ XHTTP ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠΎΠ² β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Xray ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ XTLS ΠΊΠ°ΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π»ΠΈΠ±ΠΎ ΠΏΡΠΈTCP + TLS/REALITY, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ VLESS Encryption Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΠ°Π½ΡΠΏΠΎΡΡ. ΠΠ³ΠΎΠ²ΠΎΡΠΊΠ°: ΡΠ΄Π΅ΡΠ½ΡΠΉspliceΡΠ΅ΡΠ΅Π· XHTTP Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΡΡΡ β ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΡ Π³ΠΎΠ»ΠΎΠ³ΠΎ TCP. ΠΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Vision Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ: ΠΈ Π½Π°Π±ΠΈΠ²ΠΊΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ, ΠΈ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΆΠ΅ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ TLS 1.3, ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠΈΠ³ΡΡΡ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΈ Π·Π΄Π΅ΡΡ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ Π°Π²ΡΠΎΡΠ° Xray Π΄Π»Ρ ΡΠ²ΡΠ·ΠΎΠΊ ΡΠ΅ΡΠ΅Π· CDN Π·Π²ΡΡΠΈΡ ΠΊΠ°ΠΊ Β«VLESS Encryption + XTLS Vision + XHTTP XMUXΒ». Π Π°Π·Π±ΠΎΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ β Π² ΠΊΠ°ΡΡΠ΅ ΡΠ»ΠΎΡΠ² VLESS-ΡΡΠ΅ΠΊΠ°.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³Π°
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π§ΡΠΎ ΡΡΠΎ |
|---|---|
mode | Π Π΅ΠΆΠΈΠΌ: auto / packet-up / stream-up / stream-one |
path | ΠΠ°Π·ΠΎΠ²ΡΠΉ URL-ΠΏΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² |
host | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Host / SNI |
headers | ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ |
scMaxEachPostBytes | ΠΠ°ΠΊΡ. ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅Π»Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ upload-POST (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 1 000 000) |
scMinPostsIntervalMs | ΠΠΈΠ½. ΠΏΠ°ΡΠ·Π° ΠΌΠ΅ΠΆΠ΄Ρ POST (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 30 ΠΌΡ) |
scMaxBufferedPosts | ΠΠ»ΡΠ±ΠΈΠ½Π° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 30) |
xPaddingBytes | ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄Π»ΠΈΠ½Ρ ΠΏΠ°Π΄Π΄ΠΈΠ½Π³Π° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 100β1000) |
noGRPCHeader / noSSEHeader | ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎΠ΄ gRPC / SSE |
xmux | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠΌ. Π²ΡΡΠ΅) |
downloadSettings | ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΡΠ°Π½ΡΠΏΠΎΡΡ/Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ ΠΊΠ°Π½Π°Π»Π° ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ |
π Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
- ΠΡΠΎΡΠΎΠΊΠΎΠ» VLESS β ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ XHTTP
- VLESS Encryption β ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ VLESS: ΠΏΡΡΡΠ΅Ρ UUID ΠΈ Π°Π΄ΡΠ΅ΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ CDN ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Vision ΠΏΠΎΠ²Π΅ΡΡ XHTTP
- Π‘Π»ΠΎΠΈ VLESS-ΡΡΠ΅ΠΊΠ° β ΠΌΠ°ΡΡΠΈΡΠ°: ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ°,
security,flowΠΈencryptionΡΠ°Π±ΠΎΡΠ°ΡΡ - REALITY β ΡΠ»ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ XHTTP ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π· CDN
- XTLS ΠΈ Vision β Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (ΠΏΡΡΠΌΠΎΠΉ TLS Π²ΠΌΠ΅ΡΡΠΎ HTTP-ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ)
- Project X (Xray-core) β ΠΎΠ±Π·ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π²ΡΠ΅Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ
- π transport/internet/splithttp β ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ°
π€ ΠΡΠΈ ΡΡΠ°ΡΡΠΈ ΠΎΡΠΊΡΡΡΡ β ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ°ΡΡ Π½Π° Π½ΠΈΡ ΠΠ
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΠ Π½Π° Π½Π°ΡΠΈΡ ΡΡΠ°ΡΡΡΡ . ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΎΠ΄Π½ΠΈΠΌ zip-Π°ΡΡ ΠΈΠ²ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Forgejo: ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠΈ Β· Π²Π΅ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.