Llwyddodd ysgydwad llaw SOCKS. Nawr mae'r relái yn darllen o'r cleient, yn ysgrifennu i'r gyrchfan, yn aros am ymateb llawn, ac yn dim ond wedyn yn darllen o'r cleient eto. Gall y dilyniant hwnnw rwystro rhaglen hollol ddilys.

Unwaith y sefydlir y twnnel TCP, nid yw SOCKS yn diffinio'r negeseuon y tu mewn iddo. Gall y gyrchfan anfon yn gyntaf. Gall y ddau ochr anfon yn annibynnol. Gall un ochr anfon cofnod byr ac yna aros am ateb y llall.

Trosglwyddwch feitiau, nid trafodion a ddyfalwyd

Mae galwad derbyn yn dychwelyd y beitiau sydd ar gael yn ôl ei fflamiau a chyflwr y soced. Nid yw'n dweud wrth relái cyffredinol fod ymateb y rhaglen yn gyflawn. Gall aros i fwffer mawr mympwyol lenwi atal anfon y neges fach sydd ei hangen ar y partner i barhau.

Defnyddiwch fodel cydrededd presennol y rhaglen i wasanaethu'r ddau gyfeiriad: dolen digwyddiadau, I/O asyncronig neu ddyluniad arall a ddewiswyd yn fwriadol. Ymddygiad pwysig yw nad yw cynnydd mewn un cyfeiriad yn gofyn am ffin neges ddyfeisiedig yn y llall.

Cadwch ddau fwffer aros cyfyngedig

Efallai bod data a ddarllenwyd o'r cleient yn dal i aros i gyrraedd y gyrchfan, tra bod data o'r gyrchfan yn aros i gyrraedd y cleient. Olrheiniwch y beitiau aros hynny ar wahân.

Gall anfoniad ysgrifennu llai o feitiau na'r gofynnwyd. Cadwch y rhan nas hysgrifennwyd; peidiwch â'i gollwng nac ailchwarae'r bwffer cyfan. Mae soced na ellir ei ysgrifennu dros dro yn rheswm i aros am y digwyddiad parodrwydd cywir, nid i droelli'n barhaus.

Cyfyngwch y byfferau. Os yw'r gyrchfan yn araf, mae parhau i ddarllen data cleient di-ben-draw yn symud y ciw i gof y relái yn unig. Golyga gwrthbwysau oedi darllen pan fo'r bwffer aros cyfatebol yn llawn ac ailgychwyn pan fo ysgrifennu'n gwneud lle.

Mae diwedd mewn un cyfeiriad angen polisi

Gall TCP gau cyfeiriad anfon tra bod gan y cyfeiriad arall ddata defnyddiol o hyd. Penderfynwch sut i ledaenu'r cyflwr hwnnw ar ôl i'r beitiau byfferu ddraenio, a gwahaniaethwch gau trefnus oddi wrth wall neu derfyn amser.

Nid oes dim o hyn yn gofyn i'r relái ddadgryptio nac arddadansoddi llwyth tâl y rhaglen. Mae angen trin ffrwd yn gywir. Ni all cynyddu maint y bwffer yn unig atgyweirio relái sy'n aros am yr ochr anghywir neu'n tybio bod pob darlleniad yn cyfateb i un cais cyfan.

Erthyglau cysylltiedig