🧡 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«wire-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Β» ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π΄Π²Π°ΠΆΠ΄Ρ‹

О Ρ‡Ρ‘ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°

ОбъяснСниС с нуля, Π½ΠΎ Π±Π΅Π· ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΉ: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Β«Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅Β» (wire format), ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ людьми ΠΈ Π½Π΅ видСвшиС ΠΊΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, всё Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, ΠΊΠ°ΠΊ устроСна ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-стандартов, которая это обСспСчиваСт, ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° вмСсто копирования Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ° Π½ΡƒΠΆΠ½Π° ΠΊΠ°ΠΊ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ ΠΊ Ρ€Π°Π·Π±ΠΎΡ€Ρƒ Β«ΠžΡ‚ΠΊΡƒΠ΄Π° Π² sing-box ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ²Β», Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ядра sing-box ΠΈ Xray-core совмСстимы ΠΏΠΎ VLESS/Trojan/REALITY, Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚.

TL;DR

  • ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” это Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊΠΈΠ΅ Π±Π°ΠΉΡ‚Ρ‹, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС ΠΈ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Ρ‡Ρ‚ΠΎ лСтят ΠΏΠΎ сСти ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.
  • Β«Wire formatΒ» (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅) β€” Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ описаниС этих Π±Π°ΠΉΡ‚ΠΎΠ². Π‘Π»ΠΎΠ²ΠΎ Β«wireΒ» (ΠΏΡ€ΠΎΠ²ΠΎΠ΄) ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚: Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅, Π° Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ творится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.
  • Π”Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ совмСстимы, Ссли Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° входящиС β€” Π΄Π°ΠΆΠ΅ Ссли написаны Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ людьми. Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ провСряСтся Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅, Π° Π½Π΅ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ.
  • ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π°ΠΆΠ΄Ρ‹ нСзависимо (это Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π΅ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ) β€” Ρ€Π°Π΄ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка, Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ, своСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ Π±Π°Π³ΠΈ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ Β«Ρ„ΠΎΡ€ΠΊΒ» β€” копия Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
  • Π’Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ этим ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ: любой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ любой сайт, любая ΠΏΠΎΡ‡Ρ‚Π° ΠΏΠΈΡˆΠ΅Ρ‚ любой ΠΏΠΎΡ‡Ρ‚Π΅, любой Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‡ΡƒΠΆΠΎΠΉ ZIP.

Π‘Π½Π°Ρ‡Π°Π»Π° β€” Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π²ΠΎΠΎΠ±Ρ‰Π΅

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° хотят ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, ΠΈΠΌ Π½ΡƒΠΆΠ½Π° Π·Π°Ρ€Π°Π½Π΅Π΅ оговорённая систСма ΠΏΡ€Π°Π²ΠΈΠ»: ΠΊΡ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ здороваСтся, Π² ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ пСрСдаётся адрСс, Π³Π΄Π΅ заканчиваСтся ΠΎΠ΄Π½ΠΎ сообщСниС ΠΈ начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. Π’ΠΎΡ‚ эта систСма ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ ΠΌΡ‹ΡΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π»Π΅Π³ΠΊΠΎ ΡƒΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ: ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” это Π½Π΅ ΠΊΠΎΠ΄ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π­Ρ‚ΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, спСцификация. А ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая эти ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚, β€” это ΡƒΠΆΠ΅ рСализация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. ΠžΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Аналогия: язык

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” это язык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΡŽΡ‚. БпСцификация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° β€” ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ этого языка. РСализация β€” ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° этом языкС Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚. Π›ΡŽΠ΄Π΅ΠΉ, Π·Π½Π°ΡŽΡ‰ΠΈΡ… английский, ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свой ΠΌΠΎΠ·Π³ ΠΈ свой Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ β€” Π½ΠΎ язык ΠΎΠ΄ΠΈΠ½, поэтому ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅: Ρƒ Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Β«ΠΌΠΎΠ·Π³ΠΈΒ» (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅, Π½ΠΎ Ссли ΠΎΠ±Π΅ «говорят Π½Π° VLESSΒ», ΠΎΠ½ΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ΠΏΠΎΠΉΠΌΡƒΡ‚.

Π“Π΄Π΅ аналогия ломаСтся: ΠΆΠΈΠ²Ρ‹Π΅ языки Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Β«ΠΏΠΎΠΉΠΌΡ‘ΡˆΡŒ ΠΏΠΎ контСксту», Π° сСтСвой ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” Π½Π΅Ρ‚. ΠŸΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π» ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ β€” ΠΈ собСсСдник Π½Π΅ понял Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ (соСдинСниС рвётся). ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π±Π»ΠΈΠΆΠ΅ ΠΊ строгому ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ языку, Ρ‡Π΅ΠΌ ΠΊ ΠΆΠΈΠ²ΠΎΠΉ Ρ€Π΅Ρ‡ΠΈ.

Β«Wire formatΒ»: смотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄

Π‘Π»ΠΎΠ²ΠΎ wire (ΠΏΡ€ΠΎΠ²ΠΎΠ΄, кабСль) Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π΅ Β«wire format / wire protocolΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ: нас интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π±Π΅ΠΆΠΈΡ‚ ΠΏΠΎ сСтСвому кабСлю ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ β€” конкрСтная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ². Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΡƒΠΌΠ°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС написана, ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти β€” Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° это Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ касаСтся.

ΠŸΡ€ΠΎΡ‰Π΅ говоря: wire-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» описываСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ снаруТи ΠΈ ΠΌΠΎΠ»Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΎ устройство Π²Π½ΡƒΡ‚Ρ€ΠΈ. ИмСнно поэтому «внутрСнности» Ρƒ Π΄Π²ΡƒΡ… совмСстимых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ.

Аналогия: ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹ ΠΏΠΎ пСрСпискС

ГроссмСйстСр ΠΈΠ· Π‘Ρ€Π°Π·ΠΈΠ»ΠΈΠΈ ΠΈ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ· Π―ΠΏΠΎΠ½ΠΈΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΏΠ°Ρ€Ρ‚ΠΈΡŽ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅. Π”ΡƒΠΌΠ°ΡŽΡ‚ ΠΎΠ½ΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках, ΠΎΠ΄ΠΈΠ½ считаСт Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π² ΡƒΠΌΠ΅, Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄Π²ΠΈΠ³Π°Π΅Ρ‚ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π° доскС. Но Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ…ΠΎΠ΄Ρ‹ ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ β€” ΠΎΠ±Ρ‰Π΅ΠΉ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ (e2-e4). И этого достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‹Π³Ρ€Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡŽ.

Π—Π΄Π΅ΡΡŒ нотация Ρ…ΠΎΠ΄ΠΎΠ² = wire-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Π° ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠΊΠ° = рСализация (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄). Аналогия точная сразу Π² Ρ‚Ρ€Ρ‘Ρ… мСстах: Π΅ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ сообщСния (запись Ρ…ΠΎΠ΄Π°), Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΡΡ‚ΡŒ (ходят ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «машиной состояний»), ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Β«Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄ отклоняСтся» β€” Ρ€ΠΎΠ²Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚Π²Π΅Ρ€Π³Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚.

Как это выглядит Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚Π°Ρ…

Π§Ρ‚ΠΎΠ±Ρ‹ Β«ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅Β» пСрСстали Π±Ρ‹Ρ‚ΡŒ абстракциСй β€” Π²ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Trojan (ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ) описываСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ запроса Ρ‚Π°ΠΊ: сначала 56 Π±Π°ΠΉΡ‚ (ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ…Π΅ΡˆΠ°), ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ \r\n, ΠΏΠΎΡ‚ΠΎΠΌ 1 Π±Π°ΠΉΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌ адрСс назначСния, снова \r\n, ΠΈ дальшС сами Π΄Π°Π½Π½Ρ‹Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ самоС Π²Π°ΠΆΠ½ΠΎΠ΅: ΠΈ sing-box, ΠΈ Xray-core β€” Π΄Π²Π° нСзависимых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅ Ρ€ΠΎΠ²Π½ΠΎ эту ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΈΡ… ΠΊΠΎΠ΄ рядом (ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎ):

sing-box (transport/trojan/protocol.go):        Xray-core (proxy/trojan/protocol.go):
  header.Write(key[:])       // 56 Π±Π°ΠΉΡ‚           buffer.Write(c.Account.Key)   // 56 Π±Π°ΠΉΡ‚
  header.Write(CRLF)         // \r\n              buffer.Write(crlf)            // \r\n
  header.WriteByte(CommandTCP) // 1 Π±Π°ΠΉΡ‚          buffer.WriteByte(command)     // 1 Π±Π°ΠΉΡ‚
  SocksaddrSerializer.WriteAddrPort(...)          addrParser.WriteAddressPort(...)
  header.Write(CRLF)         // \r\n              buffer.Write(crlf)            // \r\n

Код Ρ€Π°Π·Π½Ρ‹ΠΉ: Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ€Π°Π·Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π°Π·Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ. А Π±Π°ΠΉΡ‚Ρ‹ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ β€” ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅: ΠΏΠ°Ρ€ΠΎΠ»ΡŒ(56) + \r\n + ΠΊΠΎΠΌΠ°Π½Π΄Π°(1) + адрСс + \r\n + Π΄Π°Π½Π½Ρ‹Π΅. ИмСнно поэтому Trojan-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΎΡ‚ sing-box Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Trojan-сСрвСру Π½Π° Xray, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. НС ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ β€” Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ описанию Π±Π°ΠΉΡ‚ΠΎΠ².

Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€” Π½Π° Π±ΠΎΠ»Π΅Π΅ слоТном ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ VLESS. Π•Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ устроСн Ρ‚Π°ΠΊ: 1 Π±Π°ΠΉΡ‚ вСрсии (0x00), Π·Π°Ρ‚Π΅ΠΌ 16 «сырых» Π±Π°ΠΉΡ‚ UUID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (ΠΈΠΌΠ΅Π½Π½ΠΎ 16 Π±Π°ΠΉΡ‚, Π° Π½Π΅ 36-символьная строка с дСфисами), 1 Π±Π°ΠΉΡ‚ Π΄Π»ΠΈΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ (addons), сами addons, 1 Π±Π°ΠΉΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, адрСс с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹Π΅. И снова ΠΎΠ±Π° ядра ΠΏΠΈΡˆΡƒΡ‚ Ρ€ΠΎΠ²Π½ΠΎ эту раскладку β€” Π½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² ΠΊΠΎΠ΄Π΅: Xray-core собираСт addons Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΒ» способом Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ protobuf (proto.Marshal), Π° sing-box ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ Π±Π°ΠΉΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, разбирая protobuf-поля ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ (case 0x0A: β€” это ΠΏΠΎΠ»Π΅ flow). ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ. ΠŸΡƒΡΡ‚ΠΎΠΉ VLESS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для TCP получаСтся Π΄Π»ΠΈΠ½ΠΎΠΉ 1 + 16 + 1 + 1 = 19 Π±Π°ΠΉΡ‚ плюс адрСс β€” ΠΈ Ρƒ Ρ‚ΠΎΠ³ΠΎ, ΠΈ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

МСлкая, Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π΄Π΅Ρ‚Π°Π»ΡŒ

Π’ ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π΄Π»ΠΈΠ½Π° пароля-Ρ…Π΅ΡˆΠ° Β«Π·Π°ΡˆΠΈΡ‚Π°Β» числом 56 (это SHA224, записанный ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌΠΈ символами: 28 Π±Π°ΠΉΡ‚ Ρ…Π΅ΡˆΠ° β†’ 56 символов). Оба Π°Π²Ρ‚ΠΎΡ€Π° нСзависимо написали Π² ΠΊΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ 56 β€” ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ сказано Π² спСцификации Trojan. ΠžΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Ρ…ΠΎΡ‚ΡŒ Π½Π° Π±Π°ΠΉΡ‚ β€” ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ сломалась Π±Ρ‹. Π Π°Π·Π±ΠΎΡ€ Ρ‚Π°ΠΊΠΈΡ… Π·Π°ΡˆΠΈΡ‚Ρ‹Ρ… чисСл β€” Π² Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠΎ Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄-константах.

ΠžΡ‚ΠΊΡƒΠ΄Π° бСрётся сама спСцификация

Π Π°Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” это Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ, встаёт вопрос: Π³Π΄Π΅ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈ ΠΊΡ‚ΠΎ Π΅Π³ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚? Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² нСсколько, ΠΈ ΠΎΠ½ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ надёТности:

  • Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ стандарт (RFC). Π‘Π°ΠΌΡ‹Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ (HTTP, элСктронная ΠΏΠΎΡ‡Ρ‚Π° SMTP, TLS) описаны Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… RFC (Request for Comments), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ организация IETF. НазваниС скромноС («запрос ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²Β»), Π½ΠΎ принятыС RFC β€” фактичСски Π·Π°ΠΊΠΎΠ½Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅, бСсплатныС, максимально ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹Π΅.
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π°Π²Ρ‚ΠΎΡ€Π° (README, markdown-Ρ„Π°ΠΉΠ»). Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΎΠ±Ρ…ΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (VLESS, Shadowsocks, Trojan) спСцификация β€” это Π½Π΅ RFC, Π° просто Ρ„Π°ΠΉΠ» с описаниСм Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π°Π²Ρ‚ΠΎΡ€Π°. МСнСС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
  • Эталонная (reference) рСализация. Иногда ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅, ΠΈ «спСцификация» β€” это ΠΊΠΎΠ΄ самого Π°Π²Ρ‚ΠΎΡ€Π°: Ρ‡ΠΈΡ‚Π°Π΅ΡˆΡŒ Π΅Π³ΠΎ исходник ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΡˆΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠœΠΈΠ½ΡƒΡ: нСпонятно, Π³Π΄Π΅ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π·Π°Π΄ΡƒΠΌΠΊΠ°, Π° Π³Π΄Π΅ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π±Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ придётся ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ совмСстимым.
  • РСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³. Если ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π°ΠΊΡ€Ρ‹Ρ‚, Π΅Π³ΠΎ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚, наблюдая Π·Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ (ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Π² Wireshark, Π°Π½Π°Π»ΠΈΠ· Π±Π°ΠΉΡ‚ΠΎΠ², ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³ΠΈΠΏΠΎΡ‚Π΅Π·). Π’Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎ ΠΈ Ρ…Ρ€ΡƒΠΏΠΊΠΎ: Π°Π²Ρ‚ΠΎΡ€ помСняСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” всё ломаСтся. Π’ Ρ‚Π΅ΠΌΠ΅ приватности это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ±Π΅ стороны: ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ сСрвисов, ΠΈ Ρ†Π΅Π½Π·ΠΎΡ€Ρ‹-DPI рСвСрс-инТинирят ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡ… ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ самому ΠΏΠΎΡ‡Π΅Ρ€ΠΊΡƒ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅.

Π“Π΄Π΅ Π»Π΅ΠΆΠ°Ρ‚ спСцификации ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΎΠ±Ρ…ΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

ПолСзно ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… ΠΏΠΎ этому vault ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ β€” ΠΎΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ-RFC Π΄ΠΎ «источник истины β€” это ΠΊΠΎΠ΄ Π°Π²Ρ‚ΠΎΡ€Π°Β». Π­Ρ‚ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° Ρ‚ΠΎ, насколько Π»Π΅Π³ΠΊΠΎ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π•ΡΡ‚ΡŒ Π»ΠΈ тСкстовая спСцификацияЧто слуТит источником истины
Shadowsocks 2022Π”Π°, Π² RFC-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ стилС (со словами MUST/SHOULD), Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Shadowsocks-NET/shadowsocks-specsБпСцификация β€” ΠΊΠΎΠ΄ слСдуСт Π·Π° Π½Π΅ΠΉ
TUICΠ”Π°, Ρ„Π°ΠΉΠ» SPEC.md Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ расписанБпСцификация
Hysteria2Π”Π°, Ρ€Π°Π·Π΄Π΅Π» Protocol Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒΠ‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ (Π΄Π΅Ρ‚Π°Π»ΠΈ β€” ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ apernet/hysteria)
TrojanΠ”Π°, страница Β«The Trojan ProtocolΒ» с Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Π½ΠΎ короткаяБпСцификация + ΠΊΠΎΠ΄ для ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв
VMessΠ”Π°, Π½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ, «вслСд Π·Π° кодом»Код v2ray/Xray
VLESSΠ•ΡΡ‚ΡŒ, Π½ΠΎ сама ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° Β«Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Π°ΡΒ»ΠšΠΎΠ΄ Xray-core
REALITYНСт, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ README с идСямиКод β€” REALITY это Ρ„ΠΎΡ€ΠΊ crypto/tls, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ исходники

Π“Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: отсутствиС RFC Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ отсутствия стандарта. Для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΎΠ±Ρ…ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ модСль «эталонная рСализация ΠΊΠ°ΠΊ спСцификация» (reference implementation as specification): практичСский источник истины β€” это ΠΊΠΎΠ΄ Π°Π²Ρ‚ΠΎΡ€Π°, Π° тСкстовоС описаниС Π»ΠΈΠ±ΠΎ появилось ΠΏΠΎΠ·ΠΆΠ΅ ΠΈ догоняСт ΠΊΠΎΠ΄ (VLESS, VMess), Π»ΠΈΠ±ΠΎ Π½Π΅ сущСствуСт вовсС (REALITY). ΠšΡ€Π°ΠΉΠ½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ спСктра β€” Shadowsocks 2022 (спСцификация ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Π°, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π·Π° Π½Π΅ΠΉ) ΠΈ REALITY (Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Go-исходники).

Π—Π°Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π° Π½Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄

Если ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΡƒΠΆΠ΅ ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ просто Π½Π΅ Π²Π·ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄? ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ свою Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с нуля:

  • Π”Ρ€ΡƒΠ³ΠΎΠΉ язык ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» написан Π½Π° Go, Π° Π½ΡƒΠΆΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π° Kotlin для Android, Π½Π° Swift для iPhone, Π½Π° Rust Ρ€Π°Π΄ΠΈ бСзопасности. Π§ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π½Π΅ΡΡ‘ΡˆΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ языками β€” Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» пСрСносится Π»Π΅Π³ΠΊΠΎ: Ρ‡ΠΈΡ‚Π°Π΅ΡˆΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, пишСшь Π·Π°Π½ΠΎΠ²ΠΎ.
  • ЛицСнзия. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° тянСт Π·Π° собой Π΅Π³ΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GPL с Π΅Ρ‘ трСбованиями). НСзависимая рСализация ΠΏΠΎ описанию ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° β€” ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈ чистый способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ своСй Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ.
  • Бвоя Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Π‘Π²ΠΎΠΉ ΠΊΠΎΠ΄ встраиваСтся Π² ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ оптимизируСтся ΠΏΠΎΠ΄ свои сцСнарии. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΌΠΈΡ€Π° ΠΈΠ³Ρ€: сСрвСры Minecraft Π²Ρ€ΠΎΠ΄Π΅ Paper быстрСС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ пСрСписали внутрСнности, сохранив ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅. Π‘Π²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ (Π°ΡƒΠ΄ΠΈΡ‚) ΠΈ Π½Π΅ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ошибки ΠΈΠ»ΠΈ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ. Для инструмСнтов приватности это ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° самой спСцификации. Если ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΡƒΠ΄Π°Π»ΠΎΡΡŒ нСзависимо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΈ ΠΎΠ±Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ совмСстимы β€” Π·Π½Π°Ρ‡ΠΈΡ‚, описаниС ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅. Π£ IETF Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… нСзависимых совмСстимых Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ историчСски Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ зрСлости стандарта.

РСимплСмСнтация β‰  Ρ„ΠΎΡ€ΠΊ

Π’Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ Π΄Π²Π° слова. Π€ΠΎΡ€ΠΊ β€” это копия Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ дальшС правят ΠΏΠΎΠ΄ сСбя (Ρ‚Π°ΠΊ Xray-core ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π» ΠΎΡ‚ v2ray-core). РСимплСмСнтация β€” это Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный с нуля ΠΏΠΎ спСцификации, Π±Π΅Π· копирования ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°. sing-box ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Xray β€” это Π² основном рСимплСмСнтация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² (свой ΠΊΠΎΠ΄, совмСстимый ΠΏΠΎ Π±Π°ΠΉΡ‚Π°ΠΌ), Π° Π½Π΅ Ρ„ΠΎΡ€ΠΊ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² sing-box Ρ€Π΅ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π° Ρ‡Ρ‚ΠΎ всё-Ρ‚Π°ΠΊΠΈ скопировано, β€” Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅.

НСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° β€” это Π½ΠΎΡ€ΠΌΠ° индустрии

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Β«ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” ΠΌΠ½ΠΎΠ³ΠΎ нСзависимых Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉΒ» β€” Π½Π΅ экзотика ΠΈΠ· ΠΌΠΈΡ€Π° VPN, Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ всСго ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π’Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΈΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь:

  • Π’Π΅Π± (HTTP). Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ nginx, Apache, Caddy, IIS ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Chrome, Firefox, curl написаны Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ заглядывал Π² ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ β€” Π½ΠΎ любой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ любой сайт, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ RFC 9110–9114 ΠΏΡ€ΠΎ HTTP). nginx написал Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ видСвший исходников Chrome, β€” ΠΈ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
  • ΠŸΠΎΡ‡Ρ‚Π° (SMTP). Письмо ΠΈΠ· Gmail спокойно Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ Outlook ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°. Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ Postfix, Exim, Microsoft Exchange написаны Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ компаниями, Π° Β«Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Β» ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π·Π°Π΄Π°Π½ спСцификациСй Π΅Ρ‰Ρ‘ 1982 Π³ΠΎΠ΄Π° (RFC 821, Π½Ρ‹Π½Π΅ RFC 5321).
  • DNS. BIND, Unbound, PowerDNS, Knot β€” нСзависимыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΡ‘Π½. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ здСсь ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ β€” Π΅Ρ‰Ρ‘ ΠΈ осознанная ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° надёТности: ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ сСрвСры ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Ρ€Π°Π·Π½ΠΎΠΌ софтС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½Π° ошибка Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»Π° вСсь DNS сразу.
  • Π’ΠΎΡ€Ρ€Π΅Π½Ρ‚Ρ‹, Π°Ρ€Ρ…ΠΈΠ²Ρ‹. qBittorrent, Transmission, Deluge ΠΊΠ°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΎΡ€Ρ€Π΅Π½Ρ‚ Π΄Ρ€ΡƒΠ³ Ρƒ Π΄Ρ€ΡƒΠ³Π°; WinRAR, 7-Zip ΠΈ встроСнный распаковщик Windows ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ZIP β€” всСм достаточно ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΠ΄ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свой.

Π’ΠΎ всСх случаях ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ дСрТится Π½Π΅ Π½Π° ΠΎΠ±Ρ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅, Π° Π½Π° ΠΎΠ±Ρ‰Π΅ΠΌ описании Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π»Π΅Ρ‚ΠΈΡ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρƒ.

ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π°, которая это ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»Π°: Β«rough consensus and running codeΒ»

Π—Π° этим стоит цСлая инТСнСрная традиция. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-стандарты ΠΏΠΈΡˆΠ΅Ρ‚ IETF (Internet Engineering Task Force) β€” открытая организация Π±Π΅Π· Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ члСнства, Π³Π΄Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ любой Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ рассылки. Π•Ρ‘ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹ΠΉ Π΄Π΅Π²ΠΈΠ· сформулировал ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Дэвид ΠšΠ»Π°Ρ€ΠΊ ΠΈΠ· MIT Π² 1992 Π³ΠΎΠ΄Ρƒ: Β«ΠΌΡ‹ ΠΎΡ‚Π²Π΅Ρ€Π³Π°Π΅ΠΌ ΠΊΠΎΡ€ΠΎΠ»Π΅ΠΉ, ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ² ΠΈ голосованиС; ΠΌΡ‹ Π²Π΅Ρ€ΠΈΠΌ Π² Π³Ρ€ΡƒΠ±Ρ‹ΠΉ консСнсус ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄Β». Бмысл Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ стандарт признаётся Π·Ρ€Π΅Π»Ρ‹ΠΌ Π½Π΅ ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ ΠΈ Π½Π΅ голосованиСм, Π° Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° сущСствуСт нСсколько нСзависимых Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ вмСстС. Π’ΠΎ Π΅ΡΡ‚ΡŒ двойная нСзависимая рСализация β€” это Π½Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт, Π° прямо встроСнный Π² ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ качСства стандарта.

Π•ΡΡ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π΅Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, β€” ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠŸΠΎΡΡ‚Π΅Π»Π° (Π”ΠΆΠΎΠ½ ΠŸΠΎΡΡ‚Π΅Π», спСцификация TCP 1980 Π³ΠΎΠ΄Π°): Β«Π±ΡƒΠ΄ΡŒ строг ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΡˆΡŒ, ΠΈ снисходитСлСн ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΡˆΡŒΒ». ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠΉ строго ΠΏΠΎ спСцификации, Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΠΉ входящСС Ρ‚Π΅Ρ€ΠΏΠΈΠΌΠΎ, прощая ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π²ΠΎΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‡ΡƒΠΆΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

Π”Π°ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠΈΡˆΡƒΡ‚ Π΅Π³ΠΎ нСсколько Ρ€Π°Π·

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ случай β€” WireGuard (соврСмСнный VPN-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»). Π•Π³ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» ДТСйсон Π”ΠΎΠ½Π΅Π½Ρ„Π΅Π»ΡŒΠ΄, ΠΈ ΠΎΠ½ ΠΆΠ΅ Π²Π΅Π΄Ρ‘Ρ‚ нСсколько нСзависимых ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках: Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра Linux Π½Π° C, ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ wireguard-go Π½Π° Go (ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Windows, macOS, Android, iOS), плюс ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ ядра Windows ΠΈ BSD. Одна Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ (описаниС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π² Π½Π°ΡƒΡ‡Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π°Π²Ρ‚ΠΎΡ€Π°) β€” ΠΈ нСсколько Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π΅Π½, Π° ΠΊΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π΅Π½ ΠΈ подстраиваСтся ΠΏΠΎΠ΄ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΈΠΌΠ΅Π½Π½ΠΎ wireguard-go (Π² Ρ„ΠΎΡ€ΠΊΠ΅ Π°Π²Ρ‚ΠΎΡ€Π° sing-box-extended) Π»Π΅ΠΆΠΈΡ‚ Π² основС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ WireGuard ΠΈ Amnezia 2.0 Π² sing-box.

Π•Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΌΠΈΡ€Π°, Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ программистам: сСрвСры Minecraft. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр Π·Π°ΠΊΡ€Ρ‹Ρ‚, Π½ΠΎ энтузиасты Π³ΠΎΠ΄Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ сСтСвой ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΈ ΠΏΠΎ этому описанию с нуля, Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ строчки Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, написаны совмСстимыС сСрвСры (Glowstone Π½Π° Java, Cuberite Π½Π° C++). ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π½ΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ говорят Ρ‚Π΅ ΠΆΠ΅ Π±Π°ΠΉΡ‚Ρ‹. Π’Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΈΡ… с модификациями Π²Ρ€ΠΎΠ΄Π΅ Paper β€” Ρ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π· ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΊΠ°ΠΌΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° Π½Π΅ нСзависимыми рСализациями.

ΠšΠΎΠ½Ρ‚Ρ€ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρ‡Ρ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° спСцификации Π½Π΅Ρ‚

Π¦Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π»ΡƒΡ‡ΡˆΠ΅ всСго Π²ΠΈΠ΄Π½Π° Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ история β€” Samba, свободная рСализация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΎΠ±Ρ‰Π΅Π³ΠΎ доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Windows (SMB). Π•Ρ‘ Π°Π²Ρ‚ΠΎΡ€ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² 1992 Π³ΠΎΠ΄Ρƒ, восстанавливая ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» рСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ΠΎΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Microsoft Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΈ мСняла ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π±Π΅Π· прСдупрСТдСния. Π˜Ρ‚ΠΎΠ³ β€” дСсятилСтия Π΄ΠΎΠ³ΠΎΠ½ΡΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ постоянныС Π±Π°Π³ΠΈ совмСстимости. Развязка ΠΏΡ€ΠΈΡˆΠ»Π° Π½Π΅ тСхничСски, Π° ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈ: послС Π°Π½Ρ‚ΠΈΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π΅Π»Π° Еврокомиссии Microsoft Π² 2007 Π³ΠΎΠ΄Ρƒ обязали ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² β€” ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Samba Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΠ»Π°ΡΡŒ.

ΠœΠΎΡ€Π°Π»ΡŒ: нСсколько нСзависимых Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ‘ΡˆΠ΅Π²ΠΎ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚. Π‘Π΅Π· Π½Π΅Π³ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ всё Ρ€Π°Π²Π½ΠΎ достиТима β€” Ρ‡Π΅Ρ€Π΅Π· рСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³, β€” Π½ΠΎ Ρ†Π΅Π½ΠΎΠΉ Π΄ΠΎΠ»Π³ΠΎΠΉ Π±ΠΎΡ€ΡŒΠ±Ρ‹ ΠΈ бСсконСчного хвоста ΠΌΠ΅Π»ΠΊΠΈΡ… нСсовмСстимостСй. ИмСнно поэтому для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΎΠ±Ρ…ΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ Π½ΠΈΡ… внятная спСцификация (см. Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Ρ‹ΡˆΠ΅): REALITY Π±Π΅Π· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ тяТСлСС, Ρ‡Π΅ΠΌ Shadowsocks 2022 с Π΅Π³ΠΎ RFC-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ описаниСм.

πŸ“š Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

  • ΠžΡ‚ΠΊΡƒΠ΄Π° ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π² sing-box β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ всСго этого Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: sing-box vs Xray-core, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π° Ρ‡Ρ‚ΠΎ скопировано
  • Π₯Π°Ρ€Π΄ΠΊΠΎΠ΄-константы ΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρ‹ β€” Ρ‚Π΅ самыС Β«Π·Π°ΡˆΠΈΡ‚Ρ‹Π΅ Π² ΠΊΠΎΠ΄ числа» (Π²Ρ€ΠΎΠ΄Π΅ 56 Π±Π°ΠΉΡ‚ пароля Trojan), ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит байтовая ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ
  • sing-box-extended β€” прокси-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всё Ρ€Π°Π·Π±ΠΈΡ€Π°Π»ΠΎΡΡŒ
  • Xray-core β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ настоящСго Ρ„ΠΎΡ€ΠΊΠ° (ΠΊΠΎΠΏΠΈΠΈ ΠΊΠΎΠ΄Π°), Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ€Π΅ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
  • ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» VLESS β€” ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ wire-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ нСзависимо Π² ΠΎΠ±ΠΎΠΈΡ… ядрах
  • Как DPI ΡƒΠ·Π½Π°Ρ‘Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎ ΠΏΠΎΡ‡Π΅Ρ€ΠΊΡƒ β€” обратная сторона: Ρ†Π΅Π½Π·ΠΎΡ€ смотрит Π½Π° Ρ‚Π΅ ΠΆΠ΅ Π±Π°ΠΉΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅

πŸ€– Π­Ρ‚ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… ИИ

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ИИ Π½Π° Π½Π°ΡˆΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ скачиваниС всСго рСпозитория ΠΎΠ΄Π½ΠΈΠΌ zip-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ доступны Π² Forgejo: исходник этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Β· вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.