Arhoswch am y llinell wag ar ôl CONNECT
Darllenwch yr ymateb HTTP/1 CONNECT cyflawn cyn rhoi'r soced i TLS, hyd yn oed pan ddaw'r llinell statws yn gyntaf.
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
- Casglwch a dosrannwch y llinell statws. Defnyddiwch y statws rhifol yn hytrach nag union ymadrodd rheswm Saesneg.
- Parhewch nes bod terfynydd cyflawn adran y pennawd wedi cyrraedd. Nid yw llinell statws lwyddiannus yn gwneud y meysydd sy'n weddill yn diflannu.
- 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.
- 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.