SOCKS əl sıxması uğurla başa çatdı. İndi relay müştəridən oxuyur, təyinat yerinə yazır, tam cavab gözləyir və yalnız bundan sonra yenidən müştəridən oxuyur. Bu ardıcıllıq tamamilə düzgün tətbiqi kilidləyə bilər.

TCP tuneli qurulduqdan sonra SOCKS onun içindəki mesajları təyin etmir. Təyinat yerinə ilk olaraq göndərə bilər. Hər iki tərəf müstəqil göndərə bilər. Bir tərəf qısa qeyd göndərib sonra digər tərəfin cavabını gözləyə bilər.

Baytları ötürün, təxmin edilən əməliyyatları deyil

Qəbul çağırışı bayraqlarına və soket vəziyyətinə uyğun mövcud baytları qaytarır. O, ümumi relay-ə tətbiqin cavabının tamamlandığını demir. İxtiyari böyük buferin dolmasını gözləmək, qarşı tərəfin davam etməsi üçün lazım olan kiçik mesajın ötürülməsinə mane ola bilər.

Hər iki istiqamətə xidmət etmək üçün tətbiqin mövcud paralellik modelindən istifadə edin: hadisə dövrəsi, asinxron I/O və ya başqa qəsdən seçilmiş dizayn. Əsas davranış odur ki, bir istiqamətdə irəliləyiş digərində uydurulmuş mesaj sərhədi tələb etmir.

İki məhdud gözləyən bufer saxlayın

Müştəridən oxunan məlumat hələ də təyinat yerinə çatmağı gözləyə bilər, təyinat yerindən gələn məlumat isə müştəriyə çatmağı gözləyir. Bu gözləyən baytları ayrıca izləyin.

Göndərmə çağırışı tələb olunandan az bayt yaza bilər. Yazılmayan hissəni saxlayın; onu atmayın və bütün buferi yenidən oynatmayın. Müvəqqəti olaraq yazıla bilməyən soket düzgün hazırlıq hadisəsini gözləmək üçün səbəbdir, davamlı fırlanmaq üçün deyil.

Buferləri məhdudlaşdırın. Təyinat yerinə yavaşdırsa, sonsuz müştəri məlumatını oxumağa davam etmək sadəcə növbəni relay-in yaddaşına köçürür. Əks təzyiq, uyğun gözləyən bufer dolduqda oxumağı dayandırmaq və yazmağa yer açıldıqda bərpa etmək deməkdir.

Bir istiqamətdə sonluq siyasət tələb edir

TCP göndərmə istiqamətini bağlaya bilər, digər istiqamətdə isə hələ də faydalı məlumat ola bilər. Buferlənmiş baytlar boşaldıqdan sonra bu vəziyyətin necə ötürüləcəyinə qərar verin və nizamlı bağlanmanı xətadan və ya son tarixdən ayırın.

Bunların heç biri relay-dən tətbiqin faydalı yükünü şifrədən açmağı və ya təhlil etməyi tələb etmir. Düzgün axın idarəetməsi tələb edir. Yalnız buferin ölçüsünü artırmaq yanlış tərəfi gözləyən və ya hər oxunuşun bir tam sorğuya uyğun olduğunu fərz edən relay-i düzəldə bilməz.

Əlaqəli məqalələr