Bezeroak 200 Connection Established ikusten du, TLS abiarazten du eta TLS erregistro bat egon behar lukeen lekuan zentzugabekeriaz ohartarazten du. Bilatu amaitu gabeko HTTP erantzun bat helmugako zifratze-ezarpenak erruduntzat jo aurretik.

HTTP/1 CONNECT trukean, egoera-lerroa erantzunaren hasiera soilik da. Ondoren goiburu-eremuak etor daitezke. Goiburu-atala amaitzen duen lerro hutsak tunelera igarotzea markatzen du CONNECT erantzun arrakastatsuaren ondoren.

HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n

Byte horiek irakurketa bakarrean, hainbat irakurketan edo ondorengo byteak ere badituen irakurketa batean irits daitezke. TCPk ez ditu zerbitzariaren idazketa-mugak gordetzen.

Bihurtu entregatzea parser egoera esplizitu

  1. Bildu eta aztertu egoera-lerroa. Erabili zenbakizko egoera, ez ingelesezko arrazoi-esaldi zehatza.
  2. Jarraitu goiburu-atalaren amaierako marka osoa iritsi arte. Egoera-lerro arrakastatsuak ez ditu gainerako eremuak desagerrarazten.
  3. CONNECT erantzun arrakastatsuan, hartu amaierako markaren ondorengo bytea tunel-datuen hasieratzat. Beste erantzunetan, jarraitu HTTP erantzunaren eta autentifikazioaren tratamendu egokia.
  4. Eraman konexioa eta kontsumitu gabeko byteak hurrengo protokoloak onartzen duen I/O interfaze bufferatuaren bidez.

Azken urratsa garrantzitsua da mugatzaileraren bilaketa ona izan arren. Irakurgailu bufferatuak parser-ak eskatu baino socket gehiago kontsumitu dezake. TLS socket biluzian abiaraztea irakurgailu hori baztertuz byteak irakurgailuaren buffer pribatuan harrapatuta utz ditzake.

Erabili ezarpen-epea eta goiburu-tamainaren muga. Amaierako marka baino lehen EOF proxy erantzun osatugabea da, ez betiko itxaroteko edo hala ere TLS probatzeko gonbidapena.

Pentsatu hainbat muga

Imajinatu Proxy-Agent: ondoren amaitzen den irakurketa bat. Parser-ak HTTP goiburu-byte gehiago behar ditu oraindik. Imajinatu azken CRLF sekuentziaren erdian amaitzen den beste bat. Hori oraindik ez da goiburu-atal osoa. Orain imajinatu goiburu-atal arrakastatsu oso bat, buffer berean tunel-byteak jarraituz: byte gehigarri horiek entregatzea gainditu behar dute.

407 beste emaitza bat da. Autentifikazio-tratamendua behar du; inoiz ireki ez zen tunel batera TLS ClientHello bidaltzeko baimenik ematen ez du.

Lehenetsi mantendutako konektore bat, eskuko keinua inplementatzea zeregina ez bada. Muga hau hemen erakutsitako HTTP/1 trukearena da. HTTP/2 proxy-ak CONNECT erreten batean darama, marko desberdinekin.

Erlazionatutako artikuluak