Yhteyskoukku on istuntokäytäntö, ei pakettisuodatin
Asiakkaan yhteyskoukku ajetaan kerran istuntoa kohden eikä se näe koskaan hyötykuormaa. Sijoita hyväksyntä sinne, missä istuntoja on, ja sisällön muutos sinne, missä pyyntöjä on.
Joku haluaa tarkastella, mitä asiakkaat lähettävät tunnelin läpi, löytää yhteyskoukun dokumentaatiosta ja alkaa kirjoittaa skriptiä, joka ei koskaan saa yhtäkään pakettia. Koukkku on todellinen ja hyödyllinen, mutta sen työyksikkö on istunto, ei tavu. Oikean komponentin valinta on vertailu kolmen paikan välillä, joissa työ voi tapahtua, ja ratkaiseva kysymys on, minkä yksikön kukin niistä todella näkee.
Mitä koukku saa ja mitä se ei koskaan saa
Asiakkaan yhteyskoukku ajetaan kerran, kun todennettu asiakas muodostaa istunnon, palvelimen prosessikontekstissa, dokumentoiduilla argumenteilla ja ympäristöarvoilla kuten yleisnimi ja määritetty osoite. Se voi kirjoittaa asiakaskohtaisen kokoonpanon, tehdä hyväksyntäpäätöksen, varata ulkoisen resurssin tai kirjata, että yhteys tapahtui. Se mitä se ei voi tehdä, on havainnoida liikennettä, koska kun ensimmäinen paketti ylittää tunnelin, koukku on jo palannut.
Tämä ei ole rajoitus, joka pitäisi kiertää. Istunnon takaisinkutsu, joka yrittäisi käsitellä virtaa, joutuisi toimimaan yhteyden koko eliniän, eikä daemonin skriptisopimus ole rakennettu sellaiseen muotoon. Kysy, mitä varten koukku on, ennen kuin päätät, että se on tielläsi.
Myös uudelleenyhdistämiset merkitsevät. Asiakas, joka katkeaa ja yhdistää uudelleen, on uusi istunto, joten kaiken, mitä koukku varaa, on oltava idempotenttia tai paritettu yhteyskatkon tapahtuman kanssa, joka siivoaa. Jokaisella uudelleenyhdistämisellä vuotava tila on tavallinen ensimmäinen virhe koukkupohjaisessa suunnittelussa.
Istuntokäytäntö kuuluu koukkuun
Hyväksyntä on koukun luonnollinen työ. Tiedät, kuka yhdisti, mistä ja millä varmenteella, ja voit päättää, jatkuuko tämä istunto vai hylätäänkö se. Päätös on halpa, se tehdään kerran eikä se vaadi yhdenkään hyötykuorman tavun katsomista.
Kokoonpanon määrittäminen sopii samaan muotoon. Koukku voi valita asiakkaan osoitteen, työntää kyseiselle identiteetille sopivia valintoja tai kirjoittaa osan, jonka palvelin lukee tälle asiakkaalle. Koska päätös on istuntokohtainen, se pysyy ymmärrettävänä, kun jokin menee pieleen ja jonkun on selitettävä, miksi tietty asiakas sai tietyn osoitteen.
Kirjaaminen on kolmas sopivuus. Auditointimerkintä, joka kertoo, että istunto hyväksyttiin, identiteetin ja ajan kanssa, kuuluu täsmälleen tänne. Se ei ole liikenneloki eikä sen pidä teeskennellä olevansa. Jos joku myöhemmin kysyy, mitä asiakas teki tunnelin sisällä, vastauksen on tultava muualta.
Pakettityö kuuluu pakettipolulle
Jos vaatimuksena on nähdä tai muuttaa tavuja lennossa, komponentin on oltava edelleenlähetyspolulla: jonolla varustettu palomuurisääntö, liikenteenohjauksen koukku tai käyttäjäavaruuden edelleenlähettäjä. Ne mekanismit näkevät paketteja, ja niillä on oma tilansa, omat vikatilansa ja oma suorituskykyprofiilinsa.
Hyötykuorman muokkaaminen sillä kerroksella on vaikeampaa kuin sen lukeminen. Tavun muuttaminen voi mitätöidä pituuskentän, tarkistussumman tai protokollan tilakoneen, eikä kolmannen kerroksen tunneli suojaa sinua miltään siltä. Se tarkoittaa vain, että ulommat otsakkeet eivät ole ne, joita muokkaat. Varaa aikaa sille korjaustyölle ennen kuin lupaat kenellekään sisällön uudelleenkirjoitusta.
Rajapintakaappaus on tämän luokan halvin työkalu, ja se on havainto, ei editori. Ihmiset sekoittavat nämä kaksi, koska molempia kuvataan liikenteen näkemisenä, mutta kaappaus tuottaa tiedoston ja pakettipolku tuottaa päätöksen.
Sovellusmuutokset kuuluvat sovellukseen
Kun tavoitteena on muuttaa, mitä pyyntö sisältää tai miten vastaus muodostuu, oikea paikka on palvelu itse tai välityspalvelin, joka päättää protokollan tarkoituksella. Ne komponentit ymmärtävät jo pyynnöt, vastaukset ja sen todennuksen, jota sovellus odottaa, ja se on juuri se konteksti, joka pakettisuodattimelta puuttuu.
Osoitteenmuunnos on tämän luettelon lopussa syystä. Se kirjoittaa osoitteet ja portit uudelleen ja jättää hyötykuorman rauhaan, joten se ei ole sisältötyökalu, niin usein kuin se esiintyykin reseptissä, joka mainitsee myös sisällön.
Näiden rajojen erillään pitäminen tekee suunnittelusta selitettävää. Istuntokäytäntö koukussa, pakettien käsittely pakettipolulla ja sovellusmuutos siellä, missä protokolla päätetään tarkoituksella: kolme lausetta, jotka toimivat myös tarkistuslistana katselmointiin.
Missä TLS yhä päättää keskustelun
Yksi asia selviää kaikesta yllä olevasta: tunnelin sisällä kulkeva liikenne, joka kantaa HTTPS:ää, säilyttää oman kuljetussalauksensa. VPN:n avainten hallussapito antaa sinulle sisemmän IP-paketin eikä anna sinulle toisessa päässä olevan verkkosivuston istuntoavaimia.
Siksi koukku ei voi tarkastaa sisältöä edes periaatteessa, ja siksi pakettipolku näkee salattua tekstiä, ellei käyttöönotto päätä sisempää TLS:ää tarkoituksella. skriptisopimus kuvaa, mitä koukulle annetaan; se ei kerro hyötykuormasta mitään, koska annettavaa hyötykuormaa ei ole.