SOCKS4 միացման հարցումը հաջողվում է, սակայն հավելվածը երբեք չի տեսնում սերվերի բացման ողջույնը։ Նայելու տեղերից մեկը միակցիչի առաջին ընթերցումն է։ Տասնվեց բայթ ընթերցումը չափազանց մեծ է ութ բայթանոց SOCKS4 պատասխանի համար։

Պատասխանի դաշտԲայթ
Պատասխանի տարբերակի դաշտ1
Արդյունքի կոդ1
Պորտի դաշտ2
Հասցեի դաշտ4

Արդյունքի 0x5a կոդը ցույց է տալիս, որ հարցումը բավարարվել է։ SOCKS4a-ն փոխում է, թե ինչպես է հարցումը կրում հոսթի անունը, սակայն պատասխանը տասնվեց բայթ չի դարձնում։

Պատասխանից հետո նույն TCP հոսքը կրում է նպատակակետի արձանագրությունը։ Փոստային սերվերը կարող է իր ողջույնն անմիջապես ուղարկել։ Այդ պատճառով տասնվեց հասանելի բայթ սպառող ընթերցումը կարող է վերցնել ամբողջ փոխանորդի պատասխանը և այդ ողջույնի առաջին ութ բայթերը։ Եթե դեռ ոչինչ չի հետևում, ապա չափազանց մեծ արգելափակող ընթերցումը կարող է փոխարենը ավելացնել ավելորդ սպասում։

Ճշգրիտ երկարությունը վերլուծիչի պատասխանատվությունն է

Ութ բայթ մեկ անգամ խնդրելը բավարար ապացույց չէ, որ ութ բայթ եկել է։ Հոսքի ընթերցումները կարող են ավելի քիչ վերադարձնել։ Հավաքեք պատասխանի երկարությունը ճշգրիտ ժամկետի ընթացքում, կանգ առեք փակ կամ ձախողված հոսքի դեպքում, ստուգեք պատասխանը և հաջորդ բայթերը թողեք հավելվածին։

Եթե միակցիչը օգտագործում է ավելի մեծ բուֆերացված ընթերցում, պահպանեք սահմանից հետո ամեն ինչ և փոխանցեք հաջորդ սպառողին։ Ավելցուկը դեն նետելը նույն տվյալների կորուստն է՝ այլ ընթերցման չափով։

SOCKS5-ին պետք է իր սեփական վերլուծիչը։ Նրա պատասխանի հասցեի երկարությունը կարող է տարբեր լինել՝ կախված հասցեի տեսակից։ Յուրաքանչյուր փոխանորդի ընթերցում ֆիքսված ութ բայթանոց ընթերցմամբ փոխարինելը կուղղեր մի արձանագրություն՝ կոտրելով մյուսը։

Առնչվող հոդվածներ