Niyə C strukturu pis SOCKS sorğusu yarada bilər
Kompilyatorun yerləşməsini şəbəkə formatı kimi qəbul etmək əvəzinə açıq sahə genişliklərini, bayt sırasını və axın I/O-nu yoxlayın.
Etibarlı proxy ünvanı əl ilə yazılmış SOCKS mesajını etibarlı etmir. C və ya C++ strukturu göndərmək protokolun heç vaxt istəmədiyi doldurma və ya host sırasında tam ədədlər göndərə bilər.
SOCKS5 domen adı CONNECT sorğusu üçün metod danışıqlarından və seçilmiş autentifikasiyadan sonra bu ardıcıllığı açıq şəkildə seriyalaşdırın:
- Versiya, əmr, ehtiyat bayt və ünvan növü
- Domen uzunluğu və domen baytları
- Şəbəkə bayt sırasında iki baytlıq təyinat portu
Ünvan uzunluqları SOCKS versiyasından və ünvan növündən asılıdır. Sabit genişlikli ədədi sahələr öz müəyyən edilmiş təmsilini tələb edir; domen sətirlərinin öz uzunluq kodlaşdırması var. C sətir sonluğu şəbəkə mesajına sıfır əlavə etmək üçün ümumi göstəriş deyil.
| Tətbiq qısayolu | Yoxlanmalı problem |
|---|---|
| 32 bitlik dəyəri 8 bitlik göstərici vasitəsilə mənimsətmək | Dörd baytın hamısını çıxarmır |
| Buferi daha böyük tam ədəd göstəricisinə çevirmək | Düzləndirmə və bayt sırası hələ də idarə olunmalıdır |
| Bir oxuma və ya yazmanın bir mesaj olduğunu güman etmək | TCP protokol ardıcıllığının yalnız bir hissəsini ötürə bilər |
Hər sahəni nəzərdə tutulan təyinatla müqayisə edin və qismən I/O-nu idarə edin. İki baytın alınması bütün cavabın gəldiyini təsdiqləmir. Bu sərhədləri yoxlamaq qüsurlu sorğunu düzgün təsvir edilmiş bağlantını rədd edən serverdən ayıra bilər.