Rev 376 | Blame | Last modification | View Log | Download | RSS feed
/*
+0: len of payload N (0..255)
+1: channel number (0..239, 240-255 are control channels)
+2..+N+2: payload (0..255 bytes)
+N+3..+N+4: crc16 ccitt big-endian of preceding bytes
reset sequence:
repeating 01 FF 00 F8 53
where:
01 - length of payload
FF - control channel
00 - payload of single zero byte
F853 - crc of 01FF00
*/
╧ЁюЄюъюы zxinet яЁхфэрчэрўхэ фы ёт чш ъюья№■ЄхЁр ZX-Spectrum (т фры№эхщ°хь -
ъюья№■ЄхЁ) ё ёхЄхт√ь ъюэЄЁюыыхЁюь (т фры№эхщ°хь - ъюэЄЁюыыхЁ), яЁхфюёЄрты ■∙шь
яЁшъырфэ√ь яЁюуЁрььрь тючьюцэюёЄ№ ёюхфшэхэш ё ёхЄ№■ яю яЁюЄюъюырь tcp ш udp.
┬ючьюцэюёЄш яЁюЄюъюыр:
1) ёєььрЁэюх ўшёыю юЄъЁ√Є√ї ёюъхЄют: юЄ 4 фю 240 (ърцф√щ ъюэЄЁюыыхЁ шьххЄ ётюх
юуЁрэшўхэшх)
2) TCP-ёюхфшэхэшх ё тэх°эшь рфЁхёюь (CONNECT)
3) яЁюёыє°штрэшх яюЁЄр ш єёЄрэютыхэшх TCP-ёюхфшэхэш эр ыюъры№эюь рфЁхёх (BIND)
4) ъюэЄЁюы№ ЎхыюёЄэюёЄш схч тюёёЄрэютыхэш
1. ╤т ч№ ъюья№■ЄхЁр ё ёхЄхт√ь ъюэЄЁюыыхЁюь яЁюшёїюфшЄ яєЄ╕ь фтєёЄюЁюээхую
юсьхэр яюЄюърьш срщЄ. ╧ЁхфяюырурхЄё , ўЄю ёє∙хёЄтє■Є тючьюцэюёЄш фы єяЁртыхэш
¤Єшьш яюЄюърьш: т ёЄюЁюэє юЄ ъюья№■ЄхЁр ъ ъюэЄЁюыыхЁє - тючьюцэюёЄ№ ъюэЄЁюыыхЁє
яЁшюёЄрэютшЄ№ фры№эхщ°шщ яЁш╕ь (эряЁшьхЁ, шч-чр яхЁхяюыэхэш сєЇхЁр
ъюэЄЁюыыхЁр), т ёЄюЁюэє юЄ ъюэЄЁюыыхЁр ъ ъюья№■ЄхЁє - тючьюцэюёЄ№ ъюья№■ЄхЁє
юяЁхфхышЄ№ юЄёєЄёЄтшх шыш эрышўшх эют√ї срщЄ т яюЄюъх. ╩юэЄЁюыыхЁ сєЇхЁшчєхЄ ш
яЁшюёЄрэртыштрхЄ яюЄюъ срщЄ т ёЄюЁюэє ъюья№■ЄхЁр т ёыєўрх, хёыш ъюья№■ЄхЁ эх
яЁюшчтюфшЄ ёўшЄ√трэшх ётюхую яюЄюър (яюЄюър ъюэЄЁюыыхЁ->ъюья№■ЄхЁ).
╬сьхэ фрээ√ьш яЁюшёїюфшЄ яюёЁхфёЄтюь яръхЄют, эрїюф ∙шїё т яюЄюъх срщЄ. ╘юЁьрЄ
яръхЄр:
╤юфхЁцшьюх яюы | ─ышэр яюы , срщЄ
--------------------+--------------------------
фышэр яюыхчэющ |
эруЁєчъш N, | 1
N=0..255 |
--------------------+--------------------------
эюьхЁ ърэрыр, |
0..255 | 1
|
--------------------+--------------------------
|
яюыхчэр эруЁєчър | N (0..255)
|
--------------------+--------------------------
CRC16 ccitt тёхї |
яЁхф√фє∙шї яюыхщ, | 2
big-endian |
--------------------+--------------------------
─ы юЄъЁ√Єш юЄфхы№эюую TCP-ёюхфшэхэш эхюсїюфшью юЄъЁ√Є№
ърэры ёт чш ё ъюэЄЁюыыхЁюь, т Ёрьърї ъюЄюЁюую сєфхЄ яЁюшёїюфшЄ№ ЁрсюЄр ё
ёюхфшэхэшхь.
─юёЄєяэ√ ърэры√ ё эюьхЁрьш 00..EF, ърэры√ F0-FF ты ■Єё ёыєцхсэ√ьш ш яЁхфэрчэрўхэ√
фы єяЁртыхэш юёЄры№э√ьш ърэрырьш (юЄъЁ√Єшх/чръЁ√Єшх, чряЁюё ёЄрЄєёр ш Є.ф.) ш
ъюэЄЁюыыхЁюь т Ўхыюь. ┬ эрёЄю ∙шщ ьюьхэЄ шёяюы№чєхЄё Єюы№ъю ёыєцхсэ√щ ърэры FF.
╩рцф√щ ърэры яюфЁрчєьхтрхЄ яръхЄ√, эряЁртыхээ√х т юсх ёЄюЁюэ√
(ъюья№■ЄхЁ->ъюэЄЁюыыхЁ ш ъюэЄЁюыыхЁ->ъюья№■ЄхЁ), шьх■∙шх юфшэръют√щ эюьхЁ
ърэрыр. ┬ Ёрьърї юфэюую ърэрыр яЁюшёїюфшЄ юсьхэ эхёЄЁєъЄєЁшЁютрээ√ьш (Є.х.
уЁрэшЎ√ яръхЄют эх шьх■Є ёь√ёыр) яюЄюърьш срщЄ т юсх ёЄюЁюэ√. ╚ёъы■ўхэшхь
ты ■Єё ёыєцхсэ√х ърэры√, уфх яЁюшчтюфшЄё шьхээю юсьхэ ёююс∙хэш ьш, шьх■∙шьш
юяЁхфхы╕ээє■ фышэє ш ёЄЁєъЄєЁє.
╧ръхЄ√ эєыхтющ фышэ√ т яюы№чютрЄхы№ёъшї ърэрырї шьх■Є ёяхЎшры№э√щ ёь√ёы (юс
¤Єюь эшцх), т ёыєцхсэюь ърэрых Єръшх яръхЄ√ шуэюЁшЁє■Єё .
2. ╘юЁьрЄ ёююс∙хэшщ ёыєцхсэюую (#FF) ърэрыр
╧Ёшьхўрэшх: яЁштюф Єё Єюы№ъю ёрьш ёююс∙хэш , схч "юс╕ЁЄъш" (чруюыютър ш CRC).
╤ююс∙хэшх ёюёЄрты хЄ яюыхчэє■ эруЁєчъє яръхЄр.
═ряЁртыхэшх ъюья№■ЄхЁ->ъюэЄЁюыыхЁ:
╧хЁт√щ срщЄ ёююс∙хэш тёхуфр юяЁхфхы хЄ ъюьрэфє, яюё√ырхьє■ ъюэЄЁюыыхЁє.
═рышўшх яюёыхфє■∙шї срщЄ (рЁуєьхэЄют) ш шї чэрўхэшх юяЁхфхы хЄё ъюьрэфэ√ь
срщЄюь.
╤яшёюъ ъюьрэф:
#00 - ъюьрэфр чряЁюёр шэшЎшрышчрЎшш (ю яЁюЎхфєЁх шэшЎшрышчрЎшш ёь. эшцх).
#01 N - чряЁюё ёЄрЄєёр ърэрыр N (00..EF)
#02 N - юЄъЁ√Єшх ърэрыр N (00..EF)
#03 N - чръЁ√Єшх ърэрыр N, рэрыюушўэю #02
┬эшьрэшх! ъюьрэф√ #01, #02 ш #03 ё эюьхЁрьш ърэрыют F0-FF шуэюЁшЁє■Єё ъюэЄЁюыыхЁюь
ш юёЄр■Єё схч юЄтхЄр.
#04 - чряЁюё ьръёшьры№эюую ўшёыр юЄъЁ√Є√ї ърэрыют, яюффхЁцштрхь√ї ъюэЄЁюыыхЁюь.
╩юэЄЁюыыхЁ юс чрэ яюффхЁцштрЄ№ эх ьхэхх 4 юфэютЁхьхээю юЄъЁ√Є√ї ърэрыют, схч
яЁшт чъш ъ ъюэъЁхЄэ√ь эюьхЁрь ърэрыют.
#FF - ъюьрэфр яюфЄтхЁцфхэш шэшЎшрышчрЎшш.
═ряЁртыхэх ъюэЄЁюыыхЁ->ъюья№■ЄхЁ:
└эрыюушўэю, яхЁт√щ срщЄ юяЁхфхы хЄ Єшя юЄтхЄр шыш ъюьрэфє, эрышўшх юёЄры№э√ї
срщЄ юяЁхфхы хЄё яхЁт√ь.
╤яшёюъ ъюьрэф:
#00 - ъюьрэфр чряЁюёр шэшЎшрышчрЎшш
#01 N X (3 срщЄр) - ёЄрЄєё ърэрыр N. ┬√фр╕Єё т юЄтхЄ эр ъюьрэф√ #01, #02, #03;
т ёыєўрх чръЁ√Єш ърэрыр яю шэшЎшрЄштх ъюэЄЁюыыхЁр, р Єръцх яЁш яюя√Єъх
ъюья№■ЄхЁр яюё√ырЄ№ фрээ√х т чръЁ√Є√щ ърэры.
╘юЁьрЄ срщЄр X:
сшЄ7 - ==1: ърэры юЄъЁ√Є, ==0: ърэры чръЁ√Є. яЁшёєЄёЄтєхЄ тю тёхї ёЄрЄєёэ√ї
ёююс∙хэш ї
сшЄ6 - ==1: ърэры с√ы єёях°эю юЄъЁ√Є шыш чръЁ√Є яю шэшЎшрЄштх ъюья№■ЄхЁр.
╧ЁшёєЄёЄтєхЄ Єюы№ъю т юЄтхЄрї эр єёях°эю т√яюыэхээ√х ъюьрэф√ #02 ш #03. ┼ёыш т
юЄтхЄ эр ъюьрэфє #02 яЁшїюфшЄ ёЄрЄєё: сшЄ7=0, сшЄ6=0, сшЄ1=0, Єю ърэры эх ьюцхЄ
с√Є№ юЄъЁ√Є яю ъръшь-ышсю яЁшўшэрь эр ёЄюЁюэх ъюэЄЁюыыхЁр.
сшЄ5 - ==1: ърэры с√ы чръЁ√Є яю шэшЎшрЄштх ъюэЄЁюыыхЁр. ┬ьхёЄх ё сшЄюь 7 ==0
яЁшёєЄёЄтєхЄ т ёЄрЄєёэюь ёююс∙хэшш, ъюЄюЁюх юфэюъЁрЄэю яюё√ырхЄё т ёыєўрх
чръЁ√Єш ърэрыр яю шэшЎшрЄштх ъюэЄЁюыыхЁр.
сшЄ1 - ==1: яюя√Єър юЄъЁ√Єш єцх юЄъЁ√Єюую шыш чръЁ√Єш єцх чръЁ√Єюую ърэрыр.
╧ЁшёєЄёЄтєхЄ Єюы№ъю т юЄтхЄрї эр ю°шсюўэ√х ъюьрэф√ #02 ш #03.
сшЄ0 - ==1: яюя√Єър яюёырЄ№ фрээ√х т чръЁ√Є√щ ърэры. ┬ьхёЄх ё сшЄюь 7 =0
ты хЄё юЄтхЄюь эр яюё√ыъє фрээ√ї т чръЁ√Є√щ яюы№чютрЄхы№ёъшщ ърэры.
#04 N - юЄтхЄ эр ъюьрэфє #04, N - ьръёшьры№эюх ўшёыю юфэютЁхьхээю юЄъЁ√Є√ї
ърэрыют, ъюЄюЁюх яюффхЁцштрхЄ ъюэЄЁюыыхЁ. N=4..240.
#FF - ъюьрэфр яюфЄтхЁцфхэш шэшЎшрышчрЎшш.
╩рцф√щ тэют№ юЄъЁ√Є√щ ърэры т√уы фшЄ, ъръ тэют№ юЄъЁ√Єюх TCP-ёюхфшэхэшх ё SOCKS-5
ёхЁтхЁюь схч рєЄхэЄшЇшърЎшш (http://ru.wikipedia.org/wiki/SOCKS,
http://rfc2.ru/1928.rfc).
╧ръхЄ эєыхтющ фышэ√ т юЄъЁ√Єюь яюы№чютрЄхы№ёъюь ърэрых Ёртэюёшыхэ т√чютє
shutdown [ЄєЄ эрфю єЄюўэшЄ№] ёЄюЁюэющ, яюёырт°хщ яръхЄ ш ючэрўрхЄ, ўЄю сюы№°х
фрээ√ї т фрээюь эряЁртыхэшш яюёЄєярЄ№ эх сєфхЄ, эю ёюхфшэхэшх юёЄр╕Єё юЄъЁ√Є√ь
т юфэюёЄюЁюээхь Ёхцшьх. ╧юёыхфє■∙шх яюя√Єъш яюёырЄ№ ъръшх-ышсю фрээ√х т чръЁ√Єюь
эряЁртыхэшш сєфєЄ шуэюЁшЁютрЄ№ё . ╟ръЁ√Єшх ърэрыр (яю шэшЎшрЄштх ъюэЄЁюыыхЁр шыш
ъюья№■ЄхЁр) Ёртэюёшы№эю т√чтрээюьє close. ╧Ёш ¤Єюь ьюуєЄ яюЄхЁ Є№ё эхъюЄюЁ√х
яюёырээ√х, эю эх фюёЄшу°шх рфЁхёрЄр фрээ√х т TCP-ёюхфшэхэшш. ╧юёых °рЄфрєэют ё
юсюшї ёЄюЁюэ яЁюшёїюфшЄ чръЁ√Єшх ърэрыр яю шэшЎшрЄштх ъюэЄЁюыыхЁр ё
√ёююЄтхЄёЄтє■∙шь ёЄрЄєёэ√ь ёююс∙хэшхь.
╧ЁюЎхфєЁр шэшЎшрышчрЎшш.
╚эшЎшрышчрЎш яЁюшёїюфшЄ яЁш яхЁтюэрўры№эюь єёЄрэютыхэшш ёт чш ъюья№■ЄхЁр ё
ъюэЄЁюыыхЁюь, ышсю яЁш яюыєўхэшш ю°шсюўэюую яръхЄр (ё эхяЁртшы№э√ь CRC). ┬
яхЁтюь ёыєўрх шэшЎшрышчрЎш яЁютюфшЄё яю шэшЎшрЄштх ъюья№■ЄхЁр, тю тЄюЁюь - яю
шэшЎшрЄштх юсэрЁєцшт°хую ю°шсюўэ√щ яръхЄ.
╚эшЎшрышчрЎш яЁютюфшЄё ёыхфє■∙шь юсЁрчюь:
1. чрърэўштрхЄё яхЁхфрўр Єхъє∙хую яръхЄр (хёыш т ьюьхэЄ эрўрыр шэшЎшрышчрЎшш
ъръющ-Єю яръхЄ х∙╕ яхЁхфртрыё )
2. ╬Єё√ыр■Єё яютЄюЁ ■∙шхё ъюьрэф√ чряЁюёр шэшЎшрышчрЎшш (яръхЄ тьхёЄх ё
чруюыютъюь ш CRC: #01 #FF #00 #F8 #53).
3. фхщёЄтшх 2 яЁютюфшЄё фю ьюьхэЄр яюыєўхэш т юЄтхЄ ъюьрэф√ чряЁюёр шыш
яюфЄтхЁцфхэш шэшЎшрышчрЎшш (яръхЄр #01 #FF #00 #F8 #53 шыш яръхЄр
#01 #FF #FF #E6 #A3)
╧юёыхфютрЄхы№эюёЄ№ яютЄюЁ ■∙шїё яръхЄют #01 #FF #00 #F8 #53 шыш
#01 #FF #FF #E6 #A3 юсырфрхЄ ётющёЄтюь ёрьюёшэїЁюэшчрЎшш, Є.х. шэЄхЁяЁхЄшЁє ¤Єє
яюёыхфютрЄхы№эюёЄ№ ё яЁюшчтюы№эюую ьхёЄр ш юЄсЁрё√тр яюыєўр■∙шхё яръхЄ√ ё
эхтхЁэющ CRC, ўхЁхч эхъюЄюЁюх тЁхь яЁш╕ьэшъ чрёшэїЁюэшчшЁєхЄё ш ёЄрэхЄ
яЁшэшьрЄ№ Єюы№ъю тхЁэ√х єърчрээ√х яръхЄ√.
┬ю тЁхь ёрьюёшэїЁюэшчрЎшш ЄЁхсєхЄё юЄё√ыър эхёъюы№ъшї яютЄюЁ ■∙шїё яръхЄют ё
Ўхы№■ яЁюяєёър ърцфюую шч эхтхЁэю яЁшэшьрхь√ї яръхЄют.
4. ╚эшЎшрышчрЎш чртхЁ°хэр.
╧юёых чртхЁ°хэш шэшЎшрышчрЎшш тёх юЄъЁ√Є√х эр ьюьхэЄ эрўрыр шэшЎшрышчрЎшш
ърэры√ фюыцэ√ ёЄрЄ№ чръЁ√Є√ьш ъръ ёю ёЄюЁюэ√ ъюья№■ЄхЁр, Єръ ш ёю ёЄюЁюэ√
ъюэЄЁюыыхЁр.
╩юья№■ЄхЁ фюыцхэ с√Є№ т ы■сющ ьюьхэЄ уюЄют ъ яЁюЎхфєЁх
шэшЎшрышчрЎшш ёю ёЄюЁюэ√ ъюэЄЁюыыхЁр. ─ы ¤Єюую, т ёыєўрх яюыєўхэш яръхЄр
#01 #FF #00 #F8 #53 ъюья№■ЄхЁ тїюфшЄ т яЁюЎхфєЁє шэшЎшрышчрЎшш, ёсЁрё√трхЄ
тёх юЄъЁ√Є√х ърэры√ ш юЄтхўрхЄ яръхЄюь #01 #FF #FF #E6 #A3
┬ ёыєўрх, хёыш т ьюьхэЄ яЁюЎхфєЁ√ шэшЎшрышчрЎшш яЁюшчю°╕ы ёсющ (юфэр шч ёЄюЁюэ
яЁшэ ыр эхтхЁэ√щ яръхЄ), Єю фры№эхщ°р шэшЎшрышчрЎш яЁюфюыэрхЄё юфэютЁхьхээю
юсюшьш ёЄюЁюэрьш, юЄё√ыр■∙шьш яръхЄ√ чряЁюёр шэшЎшрышчрЎшш, фю ьюьхэЄр
ёрьюёшэїЁюэшчрЎшш ё юсюшї ёЄюЁюэ.