Faraz qilaylik, HTTP javobi Squid orqali o’tgandan keyin yozib olingan bir nechta TCP segmentida ko’rinadi. Bu TCP ning odatiy xatti-harakati bo’lishi mumkin, javob noto’g’ri bo’linganiga dalil emas.

Forward proksida odatda ikkita ulanish bo’ladi:

client ⇄ TCP connection A ⇄ proxy ⇄ TCP connection B ⇄ origin

Har bir ulanishning o’z TCP holati, tartib raqamlari va paketlashuvi bor. Proksi bir ulanishdan ma’lumot o’qib, ikkinchisiga yozishi mumkin, asl segment o’lchamlarini saqlamasdan. Buferlash, yuborish vaqti, tirbandlik va yo’lning o’lcham chegaralari boshqa guruhlash hosil qilishi mumkin.

Alohida saqlashga arziydigan uchta chegara

ChegaraUni nima belgilaydi
TCP segmentiTransport va tarmoq yo’li
Socket o’qishining natijasiMavjud oqim baytlari va chaqiruvchining buferi
HTTP xabari yoki ramkasiHTTP protokolining ramkalash qoidalari

Bitta o’qish sarlavhaning bir qismini, butun sarlavhani tana baytlari bilan birga yoki birdan ortiq amaliyot darajasidagi chegarani kesib o’tuvchi ma’lumotni o’z ichiga olishi mumkin. TCP «HTTP javobining oxiri»ni muvaffaqiyatli o’qish oxiriga bog’lamaydi.

Shu sababli HTTP/1.1 tahlilchisi sarlavhalarni to’playdi va tegishli tana ramkalash qoidalarini qo’llaydi, jumladan uzunlik, uzatish kodlash yoki ruxsat etilgan ulanish yopilishi. HTTP/2 ramkasi o’zi TCP segmentlaridan o’ta oladigan protokol tuzilmasi; bu tarmoq paketining boshqa nomi emas.

Muvaffaqiyatli CONNECT tunnel tunnel ichidagi bayt oqimini saqlaydi, ammo baribir ikkita TCP oyog’idan foydalanadi. Proksi tunnel ichidagi baytlarni o’zgartirmagan bo’lsa ham uning segment chegaralari farq qilishi mumkin.

Buzilishni tekshirganda qayta yig’ilgan amaliyot ma’lumotlarini solishtiring. Paketlar sonini solishtirish yoki ikki tomonda bir xil paket uzunligini kutish TCP dan u bermaydigan chegara kafolatini so’rashdir.

O'xshash maqolalar