Subversion Repositories pentevo

Rev

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

┬ ёыєўрх, хёыш т ьюьхэЄ яЁюЎхфєЁ√ шэшЎшрышчрЎшш яЁюшчю°╕ы ёсющ (юфэр шч ёЄюЁюэ
яЁшэ ыр эхтхЁэ√щ яръхЄ), Єю фры№эхщ°р  шэшЎшрышчрЎш  яЁюфюыэрхЄё  юфэютЁхьхээю
юсюшьш ёЄюЁюэрьш, юЄё√ыр■∙шьш яръхЄ√ чряЁюёр шэшЎшрышчрЎшш, фю ьюьхэЄр
ёрьюёшэїЁюэшчрЎшш ё юсюшї ёЄюЁюэ.