Tutaq ki, HTTP cavabı Squid-dən keçdikdən sonra tutulan bir neçə TCP seqmentində görünür. Bu, cavabın səhv bölündüyünə dair sübut deyil, adi TCP davranışı ola bilər.

İrəli proxy adətən iki bağlantıya malikdir:

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

Hər bağlantının öz TCP vəziyyəti, ardıcıllıq nömrələri və paketləşməsi var. Proxy bir bağlantıdan məlumat oxuyub digərinə yaza bilər, orijinal seqment ölçülərini qorumadan. Buferləmə, göndərmə vaxtı, tıxanma və yolun ölçü limitləri başqa qruplaşdırma yarada bilər.

Ayrı saxlanmalı üç sərhəd

SərhədOnu nə müəyyən edir
TCP seqmentiNəqliyyat və şəbəkə yolu
Soket oxunuşunun nəticəsiMövcud axın baytları və çağıranın buferi
HTTP mesajı və ya çərçivəsiHTTP protokolunun çərçivələmə qaydaları

Bir oxunuş başlığın bir hissəsini, tam başlığı gövdə baytları ilə birlikdə və ya birdən çox tətbiq səviyyəli sərhədi keçən məlumatı ehtiva edə bilər. TCP “HTTP cavabının sonu”nu uğurlu oxunuşun sonuna bağlamır.

Buna görə HTTP/1.1 analizatoru başlıqları toplayır və tətbiq olunan gövdə çərçivələmə qaydalarını tətbiq edir: uzunluq, ötürmə kodu və ya icazə verilən bağlantı bağlanması. HTTP/2 çərçivəsi özü TCP seqmentlərini keçə bilən protokol strukturudur; şəbəkə paketinin başqa adı deyil.

Uğurlu CONNECT tuneli tunelin bayt axınını qoruyur, lakin yenə iki TCP ayağından istifadə edir. Proxy tunelin içindəki baytları dəyişmədiyi halda belə onun seqment sərhədləri fərqli ola bilər.

Zədələnməni araşdırarkən yenidən yığılmış tətbiq məlumatlarını müqayisə edin. Paket saylarını müqayisə etmək və ya hər iki tərəfdə eyni paket uzunluqlarını gözləmək TCP-dən vermədiyi sərhəd zəmanəti istəmək deməkdir.

Əlaqəli məqalələr