En Forward-Proxy hält TCP-Segmentgrenzen net
Trennt TCP-Segmentéierung, Socket-Liesen an HTTP-Framing wann Dir den Traffic op béide Säite vun engem Forward-Proxy ënnersicht.
Stellt Iech vir, eng HTTP-Antwert erschéngt no dem Passage duerch Squid an e puer opgehollenen TCP-Segmenter. Dat kann normale TCP-Verhalen sinn, an net de Beweis, datt d’Äntwert falsch opgedeelt gouf.
En Forward-Proxy huet normalerweis zwou Verbindungen:
client ⇄ TCP connection A ⇄ proxy ⇄ TCP connection B ⇄ origin
All Verbindung huet hiren eegene TCP-Zoustand, hir Sequenznummeren an hir Paketéierung. De Proxy kann Daten aus enger Verbindung liesen an an déi aner schreiwen, ouni déi ursprénglech Segmentgréissten ze halen. Pufferung, Sendezäit, Iwwerlaaschtung an d’Gréisstgrenze vum Wee kënnen eng aner Gruppéierung erginn.
Dräi Grenzen, déi een apart sollte halen
| Grenz | Wat se bestëmmt |
|---|---|
| TCP-Segment | Den Transport- an de Netzwierkwee |
| Resultat vun engem Socket-Liesen | Déi verfügbar Stream-Bytes an de Puffer vum Opruffenden |
| HTTP-Noriicht oder -Frame | D’Framing-Regele vum HTTP-Protokoll |
Ee Lies kann en Deel vun engem Header, en ganze Header zesumme mat Body-Bytes oder Daten enthalen, déi méi wéi eng Grenz op Applikatiounsniveau iwwerschreiden. TCP verbënnt „Enn vun der HTTP-Antwert“ net mam Enn vun engem gelongene Lies.
Dofir sammelt en HTTP/1.1-Parser Headeren a wendt déi zoutreffend Reegele fir d’Body-Framing un, dorënner Längt, Transferkodéierung oder erlaabt Zoumaache vun der Verbindung. En HTTP/2-Frame ass eng Protokollstruktur, déi selwer TCP-Segmenter ka iwwerschreiden; et ass keen aneren Numm fir e Netzwierkpak.
En erfollegräichen CONNECT-Tunnel hält de getunnelte Byte-Stroum, benotzt awer nach ëmmer zwou TCP-Strecken. Seng Segmentgrenze kënne verschidde sinn, och wann de Proxy d’Byten am Tunnel net geännert huet.
Wann Dir e Schued ënnersicht, vergläicht déi nei zesummegesat Applikatiounsdaten. Paketzuelen ze vergläichen oder op béide Säite identesch Paketlängten ze erwaarden, freet vum TCP eng Grenzgarantie, déi et net gëtt.