TCP/IP: Cerf i Kahn projektiraju ljepilo interneta

Kako su dva tipa u sedamdesetima izmislili poštanski sustav za razglednice koje se ne poznaju, i time zauvijek zalijepili internet.

poglavlje 18/2718 min čitanja1970 – 1980

Godina je 1974., i mreža — ona ista mreža koja će jednog dana nositi tvoje mačke, tvoje račune i tvoju egzistencijalnu krizu u tri ujutro — zapravo je razbijeno ogledalo. ARPANET, prva prava računalna mreža koju je financirala američka vojska, priča jedan jezik. Radio-mreže po vojnim bazama pričaju drugi. Satelitske veze, koje šalju bitove preko oceana kao skupe golubove pismonoše, pričaju treći. Svaka od tih mreža radi savršeno — unutar sebe. Čim treba razgovarati s onom drugom, nastaje ono što bi baka nazvala Babilonskom kulom, a inženjer bi, uz duboki uzdah, nazvao „nekompatibilnim mrežnim arhitekturama”.

Hladni rat, kao i obično, plaća račun. Ne zato što je Pentagon romantično zaljubljen u ideju povezanog svijeta, nego zato što raspršena mreža koja ne umre ako Moskva bombardira jedan čvor zvuči kao pametna investicija. Novac je vojni, motivi su paranoični. Ali pitanje koje se postavlja u tim sobama punim cigaretnog dima i teleprintera nije vojno — civilizacijsko je, samo to još nitko ne zna: kako spojiti mreže koje se ne poznaju, ne vjeruju jedna drugoj i, iskreno, nemaju baš ni razloga surađivati?

E, i tu stižemo do dijela priče koji je istovremeno najvažniji trenutak u povijesti tehnologije i najdosadnija stvar za objašnjavanje na rođendanskoj proslavi. Jer rješenje koje će Cerf i Kahn smisliti nije efektno. Nije eksplozija, nije genijalan hardver, nije čak ni nešto što se lijepo fotografira. To je — pripremi se za razočaranje — protokol. Skup pravila. Dogovor o tome kako se podaci razrežu na male komadiće, tzv. „pakete” (zamisli pismo razrezano na desetke listića papira, svaki s adresom na sebi, pušteno u svijet da se sam snađe), adresiraju i puste da putuju kako znaju i umiju.

Zvuči kao najnezanimljivija rečenica koju ćeš pročitati ove godine, znam. I upravo zato ćemo ovo poglavlje odraditi drukčije — kroz pitanja koja bi postavio normalan čovjek koji čuje riječ „protokol” i odmah poželi promijeniti temu. Zašto se paketi ne gube kad putuju svaki svojim putem? Zašto je mreža toliko „glupa” da to ispadne genijalno? I tko je, zaboga, odlučio da se cijeli svijet nazove nizom brojeva odvojenih točkama?

Nema tu nikakvog strogog predavanja. Ima samo pitanja koja se prirodno nameću kad pokušaš objasniti baki zašto joj router treperi kao božićna jelka — i odgovora koji, iznenađujuće, uopće nisu dosadni kad ih netko konačno normalno ispriča.

Dobro, kreni polako, kaže mi prijatelj koji je čuo da pišem o internetu. Ti kažeš da se sve to sastoji od paketića koji lete po žicama. Ali kad ja tebi pošaljem fotku mačke, ona stigne cijela, u redu, s ušima na pravom mjestu. Pa kako to onda nije jednostavno — pošalješ, stigne, kraj priče? Zašto svi pišu knjige o tome?

E, tu je stvar. Zamisli da tu istu fotku mačke ne šalješ kao fotku, nego je razrežeš na, recimo, tisuću sitnih papirića. Svaki papirić staviš u svoju omotnicu, na omotnicu napišeš broj (papirić 347 od 1000) i adresu prijatelja, i onda te omotnice bacaš u poštanski sandučić — ne sve odjednom, nego jednu po jednu, koliko stigneš. Otprilike to isto, samo brže i automatski, radi tvoje računalo sa svakom porukom koju šalje. Zove se paketizacija, ali zamisli razglednice. Puno, puno razglednica.

Čekaj, ali zašto bih ja to radio? Zašto ne stavim cijelu fotku u jednu veliku omotnicu i gotovo?

Jer bi ta jedna velika omotnica trebala jedan savršen put od tebe do prijatelja, bez zastoja, bez čekanja, cijelo vrijeme. A na internetu ne postoji jedan put. Postoje tisuće ruta, kroz desetke gradova-usmjerivača, i neke su u tom trenutku krcate, neke slobodne, a neke uopće ne postoje jer je netko upravo bagerom iskopao kabel u Ohiju. Kad razrežeš poruku na sitne razglednice, svaka može ići svojim putem — jedna kroz Frankfurt, druga kroz London, treća čeka pet sekundi jer je ruta zakrčena. Nikoga to ne zanima. Bitno je da na kraju sve razglednice stignu u tvoj sandučić.

OK, ali onda ti prijatelj dobije razglednicu broj 812 prije razglednice broj 347. Zar mu fotka ne stigne izmiješana, s uhom na mjestu gdje bi trebao biti rep?

Ne, i ovo je dio koji ljudi najčešće preskoče kao sitnicu, a zapravo je pola genijalnosti cijele priče: na svakoj razglednici piše broj. Redoslijed kojim stižu ne mora imati nikakve veze s redoslijedom kojim se slažu. Prijatelj samo posloži hrpu razglednica po brojevima na stolu, kao slagalicu, i fotka je opet cijela. Mreži je totalno svejedno hoće li 812 stići prije 347 — to je tvoj problem, na drugom kraju, i rješava se trivijalno, brojem na omotnici.

A što ako se razglednica izgubi? Poštar je pojede, ne znam, ili ispadne iz vreće negdje na putu.

Odgovor: ništa se ne događa, jer se ništa ne gubi zauvijek. Tvoje računalo pamti koje je razglednice poslalo i, ako prijatelj ne potvrdi da je razglednica 347 stigla, jednostavno je pošalje ponovo. Poštanski sustav pritom ne obećava ništa — mreža ti nikad ne garantira da će paket stići, ona samo pokušava, iskreno se trudi, i onda digne ruke. Sva odgovornost da priča na kraju bude cjelovita leži na rubovima priče, na tvom i prijateljevom računalu, a ne na poštarima u sredini koji samo prenose vreće. To se zove pouzdanost s kraja na kraj, i o tome ćemo još pričati, jer je to zapravo pola razloga zašto je internet baš ovakav kakav je.

Dakle da, internet zaista radi kao pošta. Samo je to pošta u kojoj je tvoje pismo razrezano na tisuće razglednica koje putuju odvojenim rutama, stižu bez ikakvog redoslijeda, i gdje se izgubljena razglednica jednostavno ponovno napiše i pošalje, bez drame. Zvuči kao suludo neučinkovit način za slanje mačje fotke. A upravo je taj naizgled kaos razlog zašto ta fotka, kad bager negdje prekine kabel, i dalje stigne — samo malo drugim putem, a ti to nikad nećeš ni primijetiti.

"Zašto je mreža glupa — i zašto je to dobro?"
§ 02

"Zašto je mreža glupa — i zašto je to dobro?"

Dobro, kaže laik, kužim paketiće i razglednice. Ali reci mi — ako je mreža toliko pametna da zna kojim putem poslati moju razglednicu, zašto ne može i sama razumjeti što je u njoj? Zašto mreža ne ispravi grešku, ne prevede jezik, ne skuži da mi treba video poziv umjesto teksta? Ima li mreža ikakvu inicijativu, ili je stvarno samo poštar koji nosi kuverte i baš ga briga što je unutra?

E vidiš, upravo si došao do najgenijalnije lijenosti u povijesti tehnologije. Mreža je, po dizajnu, glupa kao noć — a krivi su, u najboljem smislu te riječi, Vint Cerf i Bob Kahn, dvojica inženjera koja su sredinom sedamdesetih smislila taj princip. I to je najbolja odluka koju su donijeli — bolja od bilo koje linije koda koju su ikad napisali.

Zove se end-to-end princip, i zvuči kao nešto što bi ti profesor napisao na ispitu samo da te uništi, ali suština je banalna: sva pametna obrada — provjera grešaka, redoslijed, prevođenje, sigurnost, sve — događa se na krajevima veze, kod tebe i kod onoga s kim razgovaraš. Sama mreža, sve one žice, routeri, kabeli ispod oceana, ne rade ništa osim jedne stvari: guraju paket dalje i pokušavaju ga isporučiti. To je to. Kao poštar koji baš ništa ne pita — ne otvara kuvertu, ne provjerava je li pismo ljubavno ili prijetnja, ne brine je li adresa čitljiva rukopisom ili je pisana kredom. Samo gura.

Čekaj, kaže laik, ali zvuči kao gubitak resursa. Zašto ne staviti tu pamet u mrežu, jednom, na sredini, pa je svi koriste?

Zato što bi to zvučalo dobro na papiru — sve do trenutka kad bi netko poželio izmisliti nešto što ta pametna mreža nije predvidjela. Zamisli da je 1975. netko ugradio svu logiku za e-mail duboko u čvorove mreže, jer je e-mail tada bio jedino što je ikome trebalo. Onda dođe 1991. netko s idejom za web. Ups — mreža ne zna što je HTTP, nije ga predvidjela, treba čekati da netko od Cisca, ili tko god je tad drmao infrastrukturu, ugradi podršku u milijune uređaja. Onda dođe 2003. netko s idejom za Skype i glasovne pozive preko interneta. Isti problem, iznova. Zamisli da za svaku novu ideju moraš dobiti dopuštenje cijele planete da prilagodi svoje sklopove.

Umjesto toga, mreža kaže: ne zanima me što šalješ, samo mi reci gdje. Sva pamet — HTTP, e-mail, video poziv, torrent, igrica, kripto rudarenje, sve što ćeš ikad izmisliti — živi na tvom računalu i na računalu s druge strane. Mreža u sredini ostaje ista glupa cjevovodna infrastruktura od 1974. i nikoga ne mora pitati za dozvolu. Zato je netko mogao izmisliti web u nekom švicarskom podrumu 1989. i pustiti ga u svijet bez da ikoga pita smije li. Zato je netko mogao napraviti Napster, pa BitTorrent, pa Zoom, pa sve ostalo — svaki put bez traženja dopuštenja od telekomunikacijskih giganta koji su vlasnici same žice.

Dobro, kaže laik, ali ako je mreža glupa, tko onda uopće čuva red? Tko brine da paket dođe cijeli, po redu i bez grešaka?

Ti. Odnosno tvoje računalo. Točnije, jedan sloj softvera koji se zove TCP — o njemu više za par stranica — koji sjedi na tvom kraju veze i na drugom kraju, broji pakete, traži ponovno slanje izgubljenih i sortira ih po redu kad stignu izmiješani. Mreža u sredini ni ne zna da se to događa. Ona je taj glupi poštar koji ne broji koliko je razglednica poslao ni jesu li stigle redom — to je tvoja i moja briga, na oba kraja veze. Mreža samo nosi.

To je, ako se malo zamisliš, isti trik kao kad firma odluči da joj ne treba srednji menadžment jer svi timovi mogu komunicirati direktno. Zvuči ludo dok ne skužiš da je srednji menadžment najčešće upravo razlog zašto se ništa novo ne može dogoditi brzo. Izbaci ga, i odjednom svatko može izmisliti što hoće, na rubovima, bez da čeka da centar to odobri.

"Tko je odlučio da se sve zove IP adresa?"
§ 03

"Tko je odlučio da se sve zove IP adresa?"

Dobro, pitaš. Tko je sjeo za stol i rekao — ajmo to zvati IP adresa? Kratki odgovor: Cerf i Kahn su 1974. napisali rad naslovljen suhoparno kao porezna prijava — »A Protocol for Packet Network Intercommunication«. Nitko u ovom poslu ne piše naslove za Oscara.

Ali čekaj, pitaš dalje — zar to nije TCP? Zašto onda IP? Jer tu se dogodilo nešto što se u informatici događa svako toliko: netko shvati da je pokušao staviti dva posla u jedan alat i da to škripi. Original je bio jedan protokol, TCP, koji je trebao raditi baš sve — nositi podatke preko mreže i brinuti se da ništa ne nestane po putu, da paketi stignu u redu, da se pogreške isprave. Jedan radnik, dva radna mjesta.

I onda su Cerf i Kahn, oko 1978., rekli — ovo je glupo, razdvojimo. IP (Internet Protocol) postao je onaj koji samo gura paket dalje, adresira ga, ne zanima ga hoće li stići. TCP je postao onaj koji stoji na drugom kraju i broji je li sve stiglo, traži ponovno ono što nije, sređuje redoslijed. Jedan je poštar koji baca pismo u sandučić i ide dalje. Drugi je onaj tko sjedi kod primatelja i vodi popis je li sve stiglo. Zato se to danas zove TCP/IP — to je zapravo dva čovjeka koja rade jedan posao, samo bolje nego kad je to radio jedan.

OK, kažeš, jasno — ali zašto IP adresa, konkretno ta brojka koju upisuješ, izgleda kao 192.168.1.1? Zato što je IP adresa upravo to za što je zvučala: adresa u internetskoj poštanskoj shemi. Svako računalo na mreži mora imati broj po kojem ga se može pronaći, baš kao što tvoja zgrada ima kućni broj. Cerf i Kahn su odlučili da će se ta adresa slagati od 32 bita — a bit je najmanja moguća jedinica podatka u računalu, obična nula ili jedinica, ništa treće. Kad slažeš 32 takve nule-ili-jedinice jednu za drugom, dobiješ ukupno oko 4,3 milijarde mogućih kombinacija — a to je onda i najveći mogući broj različitih IP adresa koje taj sustav uopće može podijeliti.

Zanimljivo je da nitko od njih nije bio glup — dapače, bili su među najboljima koje je taj posao ikad imao. Samo je sredinom kasnih 1970-ih bilo nemoguće zamisliti da će svaka žarulja, svaki auto i svaka beba s pametnim satom jednog dana htjeti svoju adresu na istoj mreži. Predviđanje je bilo racionalno za trenutak u kojem je nastalo. Problem je što taj trenutak nije potrajao ni pola stoljeća, a infrastruktura izgrađena na njemu je morala.

Rješenje postoji odavno — zove se IPv6, s adresnim prostorom toliko ogromnim da bi teoretski svaki atom na površini Zemlje mogao imati svoju adresu i još bi ostalo mjesta za susjede. Samo, prelazak na njega ide sporo kao seljenje cijelog grada u novu zgradu dok se stari kvart i dalje koristi — jer stari IPv4 sustav i dalje radi, samo trpi krpe, adaptere i improvizacije poput NAT-a (trika kojim se cijela zgrada, ili cijela kuća s router-om, šeta po internetu koristeći samo jednu javnu adresu, dok se svi unutar nje tiho dijele) — improvizacije koje bi svakog inženjera dovele do plača kad bi o njima previše razmišljao.

"A tko je to platio?"
§ 04

"A tko je to platio?"

Dobro, pitaš me — tko je sve ovo platio? Netko je sjedio u nekoj laboratoriji, kucao specifikacije, testirao pakete koji se gube i vraćaju — a to sve nije besplatno. Netko je plaćao struju, plaće, kavu. Tko?

Kratki odgovor: Pentagon. Duži odgovor: ARPA, odnosno DARPA — ista agencija koja je platila cijeli ARPANET, o kojem smo pisali u prošlim poglavljima — nastavila je financirati i Cerfa i Kahna dok su spajali mreže. Hladni rat je, ironično, najveći sponzor stvari na kojoj sad u petak navečer gledaš mačke. Vojska je htjela robusnu komunikaciju koja preživi nuklearni udar; dobili su protokol koji je preživio i puno gore — pola stoljeća korporativnih pokušaja da ga zamijene nečim „boljim”.

Ali novac je samo pola priče. Druga pola je gdje se taj novac trošio — a trošio se na sveučilištima: Stanford, UCLA, USC. Akademska izvedba, ne korporativni proizvod. Cerf je bio profesor, Kahn je bio istraživač, i cijela se stvar odvijala kroz radne skupine, papire koji su kolali među ljudima, i prepirke oko broja bitova na konferencijama gdje se pila loša kava iz automata. To je bitno jer objašnjava zašto je rezultat izgledao kako je izgledao — kao nešto sklepano od ljudi kojima je stalo da radi, ne od ljudi kojima je stalo da se prodaje.

I onda dolazi odluka koja je, gledano unatrag, vrjednija od svega što je Silicijska dolina ikad izmislila: TCP/IP je objavljen otvoreno. Bez patenta. Bez licence. Bez naplate po paketu, po konekciji, po ičemu. Uzmi specifikaciju, implementiraj je, koristi je, zaradi na njoj ako hoćeš — nitko neće tražiti postotak.

I tu je stvar — ta odluka se nikad ne slavi kao odluka. Nema dana kad ljudi podignu čašu i kažu „hvala Bogu da nam nitko ne naplaćuje internet paket po paket”. Jer se ništa nije dogodilo. Nitko nije tužio nikoga, nitko nije platio kaznu, nitko nije bankrotirao. Odsutnost katastrofe se ne pamti kao dostignuće.

Usporedi to s pričom iz poglavlja o Oracleu — Larry Ellison je pogledao akademski rad o relacijskim bazama podataka, onaj koji je IBM objavio otvoreno, iz čiste znanstvene pristojnosti, i pomislio: ovo se može naplatiti. I naplatio je, desetljećima, milijardama. Isti obrazac bio je dostupan i s TCP/IP-om. Netko je mogao pogledati Cerfov i Kahnov rad iz 1974. i pomisliti isto. Nitko nije — ili bolje rečeno, sustav u kojem je taj rad nastao (vojska plus akademija, a ne startup plus investitori) nije proizvodio taj instinkt.

Pa jesu li Cerf i Kahn heroji koji su svjesno spasili civilizaciju od monopola? Ne baš. Bili su inženjeri koji su rješavali konkretan problem, u kontekstu gdje je otvorenost bila zadana postavka, a ne moralni izbor. Ali posljedica je ista kao da su bili heroji: infrastruktura na kojoj stoji cijela digitalna ekonomija nikome ne pripada, i baš zato pripada svima. Bilijuni dolara vrijednosti, izgrađeni na temelju koji nitko ne posjeduje. Pokušaj to objasniti dioničaru.

"Zašto to i danas koristimo ako je staro 50 godina?"
§ 05

"Zašto to i danas koristimo ako je staro 50 godina?"

Dobro, zadnje pitanje, i ono najbezobraznije: zašto, molim te, 2020-nešto-te godine, dok ti telefon u džepu ima više računalne snage nego cijeli ARPANET zajedno, i dok gledaš 4K video koji se prenosi kroz vlakna tanja od vlasi kose — zašto se sve to još temelji na protokolu koji su smislila dva tipa 1974., na papiru, dok je Nixon još bio predsjednik? Zar u pedeset godina nitko nije smislio nešto bolje?

Kratak odgovor: jesu, pokušali su. Puno ljudi. Neki od njih su bili strašno pametni, dobro plaćeni i imali su punu institucionalnu podršku najmoćnijih vlada i firmi na svijetu. I svi su izgubili. Ne zato što je TCP/IP savršen — nije, ima gomilu mana koje bi danas svaki inženjer drukčije riješio — nego zato što je bio prvi koji je stvarno radio, i onda se dogodilo ono najbrutalnije pravilo u tehnologiji: mrežni efekt.

Mrežni efekt, pojednostavljeno: standard ne pobjeđuje zato što je bolji, nego zato što ga svi već koriste. Zamisli da imaš najbolji jezik na svijetu — gramatički savršen, logičan, lijep — ali njime govori samo pet ljudi u jednom selu. Beskoristan je, koliko god bio lijep, jer se njime ne možeš s nikim dogovoriti. TCP/IP je do sredine osamdesetih već povezivao sveučilišta, vojne baze, laboratorije. Svaki novi čvor koji se spajao na tu mrežu automatski je povećavao vrijednost te mreže za sve postojeće čvorove. U jednom trenutku mijenjati protokol više nije značilo uvjeriti jednog čovjeka da promijeni mišljenje — značilo je uvjeriti tisuće nezavisnih organizacija da istovremeno bace ono što im radi, za nešto što možda radi bolje, na papiru.

A ta zamjena je stvarno postojala, i imala je ime: OSI, kratica za »Open Systems Interconnection«. Bio je to projekt međunarodnih standardizacijskih tijela — ISO i telekomunikacijskih giganta iz cijelog svijeta, uključujući europske PTT monopole kojima se, iz nekog razloga, jako svidjela ideja da baš oni budu ti koji propisuju kako internet smije izgledati. OSI je na papiru bio tehnički elegantniji: sedam slojeva, uredno definirano, komisije, radne skupine, dokumenti debeli kao telefonski imenik. Problem? Dok je OSI još pisao specifikacije o tome kako bi stvari trebale izgledati, TCP/IP je već povezivao ljude. Stvarne ljude, koji su stvarno slali stvarne pakete.

Devedesetih je OSI formalno još postojao na papiru — neke su vlade i vojske kratko zahtijevale njegovu upotrebu u nabavi — ali stvarni internet, onaj koji je tiho preuzimao svijet dok su komisije još glasale o brojevima poglavlja u specifikaciji, već je bio TCP/IP. Do trenutka kad je World Wide Web sredinom devedesetih eksplodirao, pitanje je bilo formalno riješeno: pobijedio je protokol koji je već radio, ne protokol koji je trebao biti bolji.

I zato, kad danas otvoriš bilo što na ekranu, kad ti se video učita, kad poruka stigne — provlačiš se kroz odluku donesenu prije pola stoljeća, ne zato što je nitko nije htio zamijeniti, nego zato što je zamjena morala biti ne malo bolja, nego dovoljno bolja da opravda uvjeravanje cijelog svijeta da promijeni cijevi kroz koje mu tekuća voda ide. Nitko nije bio spreman platiti tu cijenu. Pa je ostalo ljepilo iz 1974., i vjerojatno će još malo ostati.