SOCKS4 қосылым сұранысы сәтті орындалады, бірақ қолданба сервердің кіріспе сәлемдесуін ешқашан көрмейді. Қарауға болатын бір жер — қосқыштың бірінші оқуы. Он алты байттық оқу сегіз байттық SOCKS4 жауабы үшін тым үлкен.

Жауап өрісіБайт
Жауап нұсқасының өрісі1
Нәтиже коды1
Порт өрісі2
Мекенжай өрісі4

Нәтиже коды 0x5a сұраныстың қанағаттандырылғанын көрсетеді. SOCKS4a сұраныстың хост атауын қалай тасымалдайтынын өзгертеді; ол жауапты он алты байтқа айналдырмайды.

Жауаптан кейін сол TCP ағыны межеленген жердің хаттамасын тасымалдайды. Пошта сервері өз сәлемдесуін бірден жіберуі мүмкін. Сондықтан он алты қолжетімді байтты тұтынатын оқу проксидің толық жауабын және сол сәлемдесудің алғашқы сегіз байтын алып кетуі мүмкін. Егер әзірге ештеңе жалғаспаса, тым үлкен блоктайтын оқу оның орнына артық күту қосуы мүмкін.

Нақты ұзындық — талдағыштың жауапкершілігі

Сегіз байтты бір рет сұрау сегіз байт келгеніне жеткілікті дәлел емес. Ағын оқулары азырақ қайтаруы мүмкін. Жауаптың ұзындығын мерзім ішінде дәл жинаңыз, жабылған немесе сәтсіз ағында тоқтаңыз, жауапты тексеріңіз және келесі байттарды қолданбаға қалдырыңыз.

Егер қосқыш үлкенірек буферлік оқуды пайдаланса, шекарадан кейінгінің бәрін сақтап, келесі тұтынушыға беріңіз. Артығын лақтыру — басқа оқу өлшемімен сол деректер жоғалтуы.

SOCKS5-ке өзінің талдағышы қажет. Оның жауап мекенжайының ұзындығы мекенжай түріне қарай әртүрлі болуы мүмкін. Әрбір прокси оқуын бекітілген сегіз байттық оқумен алмастыру бір хаттаманы түзеп, екіншісін бұзар еді.

Қатысты мақалалар