Proksi hadapan tidak mengekalkan sempadan segmen TCP
Asingkan pensegmenan TCP, bacaan soket dan pembingkaian HTTP apabila memeriksa trafik pada kedua-dua belah proksi hadapan.
Katakan satu respons HTTP muncul dalam beberapa segmen TCP yang ditangkap selepas melalui Squid. Itu boleh jadi tingkah laku TCP biasa, bukan bukti bahawa respons itu dipecahkan secara salah.
Proksi hadapan biasanya mempunyai dua sambungan:
client ⇄ TCP connection A ⇄ proxy ⇄ TCP connection B ⇄ origin
Setiap sambungan mempunyai keadaan TCP, nombor jujukan dan pemaketan sendiri. Proksi boleh membaca data daripada satu sambungan dan menulisnya ke sambungan yang lain tanpa mengekalkan saiz segmen asal. Penimbalan, masa penghantaran, kesesakan dan had saiz laluan boleh menghasilkan pengelompokan lain.
Tiga sempadan yang wajar diasingkan
| Sempadan | Apa yang menentukannya |
|---|---|
| Segmen TCP | Laluan pengangkutan dan rangkaian |
| Hasil bacaan soket | Bait aliran yang tersedia dan penimbal pemanggil |
| Mesej atau bingkai HTTP | Peraturan pembingkaian protokol HTTP |
Satu bacaan boleh mengandungi sebahagian pengepala, pengepala penuh bersama bita badan, atau data yang merentasi lebih daripada satu sempadan peringkat aplikasi. TCP tidak mengikat “penghujung respons HTTP” pada penghujung bacaan yang berjaya.
Oleh itu penghurai HTTP/1.1 mengumpul pengepala dan menggunakan peraturan pembingkaian badan yang berkenaan, termasuk panjang, pengekodan pemindahan atau penutupan sambungan yang dibenarkan. Bingkai HTTP/2 ialah struktur protokol yang boleh merentasi segmen TCP dengan sendirinya; ia bukan nama lain bagi paket rangkaian.
Terowong CONNECT yang berjaya mengekalkan aliran bita terowong sambil masih menggunakan dua kaki TCP. Sempadan segmennya boleh berbeza walaupun proksi tidak mengubah bita di dalam terowong.
Apabila menyiasat kerosakan, bandingkan data aplikasi yang dipasang semula. Membandingkan bilangan paket atau menjangka panjang paket yang sama pada kedua-dua belah meminta jaminan sempadan daripada TCP yang tidak diberikannya.