Squid-ээр дамжсаны дараа HTTP хариу хэд хэдэн бичигдсэн TCP сегментэд харагдана гэж бодъё. Энэ нь TCP-ийн ердийн зан төлөв байж болох бөгөөд хариуг буруу хуваасан гэсэн нотолгоо биш.

Урдчилсан прокси ихэвчлэн хоёр холболттой байдаг:

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

Холболт бүр өөрийн TCP төлөв, дарааллын дугаар, пакетчлэлтэй. Прокси нэг холболтоос өгөгдөл уншиж нөгөөд нь бичихдээ анхны сегментийн хэмжээг хадгалдаггүй. Буферлэлт, илгээх цаг, түгжрэл, замын хэмжээний хязгаар өөр бүлэглэл үүсгэж болно.

Тусгаар барих нь зүйтэй гурван хил

ХилЮу үүнийг тодорхойлдог
TCP сегментДамжуулалт ба сүлжээний зам
Сокетын уншилтын үр дүнБоломжит урсгалын байт ба дуудагчийн буфер
HTTP мессеж эсвэл хүрээHTTP протоколын хүрээлэлтийн дүрэм

Нэг уншилт нь толгойн нэг хэсэг, бүтэн толгой биеийн байттай хамт, эсвэл нэгээс олон програмын түвшний хил дамнасан өгөгдлийг агуулж болно. TCP «HTTP хариуны төгсгөл»-ийг амжилттай уншилтын төгсгөлд холбодоггүй.

Тиймээс HTTP/1.1 задлагч толгойнуудыг хуримтлуулж, хамаарах биеийн хүрээлэлтийн дүрмийг хэрэглэдэг, үүнд урт, дамжуулалтын кодчилол эсвэл зөвшөөрөгдсөн холболтын хаалт орно. HTTP/2 хүрээ нь өөрөө TCP сегментүүдийг дамжиж чадах протоколын бүтэц юм; энэ нь сүлжээний пакетын өөр нэр биш.

Амжилттай CONNECT туннель туннель доторх байтын урсгалыг хадгалдаг боловч хоёр TCP хөлийг ашигладаг хэвээр байдаг. Прокси туннель доторх байтыг өөрчлөөгүй ч түүний сегментийн хил өөр байж болно.

Гэмтлийг мөрдөхдөө дахин угсарсан програмын өгөгдлийг харьцуулаарай. Пакетын тоог харьцуулах эсвэл хоёр талд ижил пакетын урт хүлээх нь TCP-ээс тэр өгдөггүй хилийн баталгааг шаардах юм.

Холбоотой нийтлэлүүд