Mae'r cleient yn gweld 200 Connection Established, yn cychwyn TLS, ac yn union yn adrodd nonsens lle dylai cofnod TLS fod. Chwiliwch am ymateb HTTP anorffenedig cyn beio gosodiadau seiffr y gyrchfan.

Mewn cyfnewid HTTP/1 CONNECT, dim ond dechrau'r ymateb yw'r llinell statws. Gall meysydd pennawd ddod ar ei hôl. Y llinell wag sy'n gorffen adran y pennawd sy'n nodi'r newid i'r tiwnel ar ôl ymateb CONNECT llwyddiannus.

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

Gall y beitiau hyn gyrraedd mewn un darlleniad, sawl darlleniad, neu mewn darlleniad sy'n cynnwys beitiau dilynol hefyd. Nid yw TCP yn cadw ffiniau ysgrifennu'r gweinydd.

Gwnewch y trosglwyddo'n gyflwr parser penodol

  1. Casglwch a dosrannwch y llinell statws. Defnyddiwch y statws rhifol yn hytrach nag union ymadrodd rheswm Saesneg.
  2. Parhewch nes bod terfynydd cyflawn adran y pennawd wedi cyrraedd. Nid yw llinell statws lwyddiannus yn gwneud y meysydd sy'n weddill yn diflannu.
  3. Ar gyfer ymateb CONNECT llwyddiannus, nodwch y beit yn syth ar ôl y terfynydd hwnnw fel dechrau data'r tiwnel. Ar gyfer ymatebion eraill, dilynwch y triniaeth briodol o ymateb HTTP a dilysu.
  4. Trosglwyddwch y cysylltiad a'r beitiau heb eu defnyddio trwy'r rhyngwyneb I/O clustogi a gefnogir gan y protocol nesaf.

Mae'r cam olaf yn bwysig hyd yn oed gyda chwiliad rhannu da. Gall darllenydd clustogi fod wedi defnyddio mwy o'r soced nag a ofynnodd y parser. Gall cychwyn TLS ar y soced moel wrth roi'r darllenydd hwnnw heibio adael beitiau'n sownd ym mhwfer preifat y darllenydd.

Defnyddiwch derfyn amser sefydlu a therfyn maint pennawd. Mae EOF cyn y terfynydd yn ymateb dirprwy anghyflawn, nid yn wahoddiad i aros am byth nac i roi cynnig ar TLS beth bynnag.

Rhesymwch drwy sawl ffin

Dychmygwch ddarlleniad sy'n gorffen ar ôl Proxy-Agent:. Mae'r parser yn dal i fod angen mwy o feitiau pennawd HTTP. Dychmygwch un arall sy'n gorffen hanner ffordd drwy'r dilyniant CRLF olaf. Nid yw hynny'n adran pennawd gyflawn o hyd. Nawr dychmygwch adran pennawd gyflawn lwyddiannus wedi'i dilyn gan feitiau tiwnel yn yr un clustog: rhaid i'r beitiau ychwanegol hynny oroesi'r trosglwyddo.

Mae 407 yn ganlyniad gwahanol. Mae angen triniaeth ddilysu arno; nid yw'n awdurdodi TLS ClientHello i diwnel na chafodd ei agor erioed.

Ffafriwch gysylltydd a gynhelir oni bai mai gweithredu'r handshake yw'r dasg. Mae'r ffin hon yn benodol i'r cyfnewid HTTP/1 a ddangosir yma. Mae dirprwy HTTP/2 yn cario CONNECT ar ffrwd ag amlennu gwahanol.

Erthyglau cysylltiedig