DUGS LOIDS: Ja noskatījāties mūsu interneta sākuma video, es mazliet
aizrāvos ar stāstu par internetu un to, kā tas ir protokolu sistēma.
Nu, parunāsim par pirmo no tiem protokoliem, kas faktiski ietver
internetu.
Interesanti, ka to sauc par interneta protokolu, ko mēs parasti
dēvējam par IP.
Tātad internets, kā jau teicu, ir savstarpēji savienots tīkls,
internets, kas patiesībā ir tikai vairāki tīkli, kas ir savstarpēji
savienoti un ir vienoti savstarpējā saziņā.
Par ko es kaut kā runāju?
Nu, tas ir interneta protokols.
Tas nosaka, kā informācija tiek pārsūtīta no punkta A uz punktu B.
Un tas ir sava veida nosacījums, lai pievienotos interneta tīklam,
piekrītot ievērot šo protokolu, kad informācija ir jāpārvieto no
punkta A uz punktu B.
Tātad interneta primer video pašās beigās es parādīju šo attēlu par
to, kas ir internets.
Un mazā mērogā tas, iespējams, ir diezgan precīzs.
Tas varētu būt veids, kā trīs tīkli faktiski sarunājas viens ar otru.
Bet tas ir nedaudz maldinoši.
Un iemesls, kāpēc tas ir nedaudz maldinošs, ir tāpēc, ka — ja es šeit
vienkārši numurēju tīklus ērtības labad un mēs atbrīvojamies no visa
pārējā un koncentrējamies tikai uz tīkliem — tas ir nedaudz
maldinoši, jo tas nozīmē, ka visiem trim tīkliem ir savienojums
vienam ar otru.
Viens ir savienots ar diviem.
Divi ir savienoti ar trim.
Un trīs ir savienoti ar vienu.
Un, kad es šeit runāju par savienojumu, es runāju par fizisku vadu
savienojumu.
Mums ir bezvadu savienojums.
Bet tas ir patiešām nepraktiski, ja datus bezvadu režīmā pārsūta
lielā mērogā.
Un tāpēc kādā brīdī mēs patiešām paļaujamies uz vadu tehnoloģijām —
telefona vadiem, optiskās šķiedras vadiem, dažādām tehnoloģijām, kas
fiziski savieno punktu A ar punktu B.
Un tādā mazā mērogā kā šis — tas varētu būt precīzi, taču, attēlam
kļūstot nedaudz lielākam, iedomāsimies, ka mums ir seši dažādi tīkli.
Ja tā ir taisnība, tagad mums ir kaut kas līdzīgs šim katram tīklam,
kas jāpievieno visiem citiem tīkliem.
Un, ja paskatās, katram tīklam ir pievienotas piecas bultiņas.
Tātad viss ir savienots ar jebkuru citu tīklu.
Mums šeit ir tikai seši tīkli, un jau paskatieties, cik daudz vadu
mums ir jānodarbina, vai ne?
Un internets sastāv no daudz vairāk nekā sešiem tīkliem.
Mēs nevaram atļauties savienot katru tīklu ar katru citu tīklu, jo
īpaši ņemot vērā, ka daži no šiem tīkliem aptver okeānus, vai ne?
Ja mēs mēģinām izveidot savienojumu ar tīklu Āzijā vai Eiropā, mums
nāksies aptvert visu okeānu.
Kādā brīdī mums būs jāizmanto vadi, taču mēs vēlamies samazināt
faktiski izmantojamo vadu skaitu.
Mēs nevēlamies vilktmiljonu vadu pāri okeānam, jo tie maksā miljoniem
dolāru gabalā.
Un tik ātri mēs vairs nevarētu atļauties internetu.
Tāpēc mums ir jābūt citam veidam, lai katrs tīkls varētu sazināties
ar visiem citiem tīkliem, pretējā gadījumā mums ir interneta daļas,
kas ir atvienotas no citām interneta daļām.
Un tas nav tas, ko mēs vēlamies.
Bet mēs nevēlamies, lai tie visi būtu savienoti kopā.
Un šeit atgriežas maršrutētāji.
Mēs varam izmantot maršrutētājus šādā veidā.
Kā būtu, ja tā vietā, lai katrs tīkls būtu fiziski savienots ar
visiem citiem tīkliem, mums būtu šie savienotāji , kur tīkli varētu
būt savienoti ar vairākiem citiem tīkliem.
Tā vietā, lai izveidotu savienojumu ar diviem, trim, četriem,
pieciem, sešiem, varbūt viens tīkls savienojas ar maršrutētāju, kas,
iespējams, savienojas ar vienu vai diviem no šiem tīkliem, bet varbūt
arī izveido savienojumu ar citiem maršrutētājiem, kas arī izveidos
savienojumu ar šiem citiem tīkliem.
Un maršrutētāja uzdevums ir — tajā ir informācija, ko sauc par
maršrutēšanas tabulu, kas nosaka, kur man doties, ja redzu konkrētu
IP adresi?
Ja redzu IP adresi, kas sākas ar četri, es iešu šo ceļu.
Ja es redzu IP adresi, kas sākas ar 12, es iešu to ceļu.
Šajā piemērā mums nav jābūt fiziski savienotiem ar ceturto vai
12. tīklu.
Mēs vienkārši zinām, kurp vēlamies doties.
Un, ja tā padomā, tas ir līdzīgs rekursijas jēdzienam, par kuru mēs
runājām, kad runājām par C valodu.
Es netaisos jūs savienot tieši ar to tīklu, kur vēlaties doties.
Es tikai virzīšu jūs vienu soli tuvāk vietai, kur vēlaties doties.
Un es ļaušu kādam citam tikt galā ar pārējo problēmas risināšanu.
Es vienkārši atrisināšu šo mazo problēmas daļu un pārējo atstāšu
kādam citam.
Tātad maršrutēšanas informācija faktiski ir līdzīga rekursijai.
Ja tas ir jēdziens, ko jūs labi saprotat, varbūt šī līdzība varētu
palīdzēt.
Tāpēc vēlreiz apskatīsim šo tīkla piemēru un pieņemsim, ka atkal
izmantosim tos pašus sešus tīklus, no viena līdz sešiem.
Tātad pieņemsim, ka katra IP adrese tīklā sākas ar vienu punktu.
Un mēs teiksim, ka ir vēl kāda lieta, kas attiecas uz to, kā visas
sistēmas ir savienotas ar vienu tīklu.
Mēs tikai rūpējamies par visu šo tīklu savienošanu internetā.
Tātad katrai ierīcei, kas ir savienota ar tīklu, ir IP adrese, kas
sākas ar vienu punktu un pēc tam trīs citiem cipariem.
Tas ir vispārinājums tam, kā lietas faktiski darbojas.
Tas ir nedaudz precīzāks par šo.
Bet tam vajadzētu sniegt jums vispārēju priekšstatu par interneta
protokola darbību.
Tātad šī bija diagramma, kas mums bija iepriekš.
Tā bija sistēma, kas nebija ilgtspējīga.
Pat seši tīkli, tas varētu būt labi.
Bet, ja mēs sasniegsim 10 vai 20 vai 50 tīklus, mēs izmantosim daudz
vadu.
Un 50 tīklu joprojām nav pat aisberga redzamā daļa attiecībā uz mūsu
tīklu skaitu.
Tātad šis modelis ir neilgtspējīgs.
Mēs nevaram pieturēties pie šī.
Tā vietā pieņemsim šo modeli, kurā mēs atbrīvojamies no visiem vadiem
starp tīkliem un pievienosim maršrutētājus.
Tātad šīs dzeltenās kastes apzīmē maršrutētājus.
Viņu uzdevums ir vispārīgi pārvietot informāciju tuvāk vietai, kur
tai ir jānonāk.
Un varbūt šie ir tie savienojumi, kas ir šiem tīkliem.
Un varbūt šīs ir tabulas, kas ir iebūvētas maršrutētājos.
Tātad, ja mēs vienkārši sākam, skatoties uz pirmo tīklu, būtībā tas,
kas tajā ir teikts, ir, ka , ja es kādreiz redzu adresi, kas nesākas
ar vieninieku — tā ir izsaukuma zīme vieninieks vai eksplozija ,
nevis vieninieks. - Es to nodošu maršrutētājam.
Un no turienes maršrutētājs var pieņemt lēmumu.
Maršrutētājs saka, ja es redzu vieninieku, es pāriešu uz tīklu numur
viens.
Tā ir zaļā bultiņa, kas virzās pa kreisi no augšējā kreisā lodziņa.
Ja redzu divi — tā ir bultiņa, kas virzās uz augšu pa labi uz
purpursarkano tīklu, ja redzu IP adresi, kas sākas ar divnieku, es
došos uz divnieka tīklu.
Ja es redzu trīs, četri, pieci vai seši — tā ir sarkanā bultiņa, kas
iznāk no augšējā kreisā maršrutētāja, es neesmu savienots ar trīs,
četriem, pieciem vai sešiem tīkliem.
Bet es pazīstu kādu, kas tur atrodas vai ir mazliet tuvāk.
Tāpēc es tikai saku: katru reizi, kad redzu IP adresi, kas sākas ar
trīs, četriem, pieciem vai sešiem tīkliem, es vienkārši nosūtīšu to
šim maršrutētājam.
Tāpēc es to pārvietošu nedaudz tuvāk vietai, kur tam vajadzētu
nonākt, un ļaušu maršrutētājam tikt galā ar problēmu.
Un, kā redzat, ja vēlaties šeit apstāties un izsekot, varat nokļūt
jebkurā citā tīkla punktā, lai kur jūs atrastos.
Visi seši tīkli joprojām var izveidot savienojumu ar visiem citiem
tīkliem, taču tie vairs nav fiziski savienoti.
Tie tagad ir šie starpposmi.
Tagad, protams, ir ātruma kompromiss, vai ne?
Ja viens būtu tieši savienots ar sešiem tīkliem, mums nebūtu jāiet
cauri diviem maršrutētājiem.
Tātad mēs, iespējams, varēsim izveidot savienojumu nedaudz ātrāk.
Bet varbūt šis kompromiss ir tā vērts, vai ne?
Ja fiziski savienot visus šos tīklus kopā būs tik dārgi, ņemot vērā
faktiskās izmaksas, dolārus un centus, iespējams, nedaudz
palēnināsiet ātrumu.
Mēs to varam paciest.
Tātad atkal šajā piemērā, par kuru mēs tikko runājām, neviens no
tīkliem nav tieši savienots viens ar otru.
Varēja būt — varbūt šajā piemērā mēs būtu varējuši izveidot tā, ka
varbūt pirmais un otrais tīkls būtu tieši savienoti.
Un tas būtu labi.
Daži tīkli ir fiziski savienoti ar citiem tīkliem.
Bet tie visi nav saistīti viens ar otru.
Viņi paļaujas uz maršrutētājiem (šajā konkrētajā piemērā), lai
izplatītu saziņu no punkta A uz punktu B.
Nelielā mērogā — piemēram, par ko mēs šeit runājam — šī konfigurācija
patiesībā varētu būt neefektīvāka nekā tikai tiešo savienojumu
izveide.
Bet lielā mērogā mēs varam daudz labāk mērogot sistēmu.
Tas patiešām samazinās mūsu tīkla infrastruktūras izmaksas, ja tiks
izveidoti starpposma maršrutētāji, kuru uzdevums ir pārvietot
datplūsmuno sūtītāja uz uztvērēju, no punkta A uz punktu B, nevis
savienojot visus kopā.
Tāpēc apskatīsim piemēru informācijas ceļošanai, izmantojot šo
interneta protokolu.
Pieņemsim, ka es fiziski atrodu IP 1.208.12.37, tāpēc es eksistēju
kaut kur vienā tīklā.
Un es vēlos jums nosūtīt ziņu.
Un jūs atrodaties piecu tīklā ar numuru 5.188.109.14.
Īpaši jūsu IP adresei nav nozīmes, taču šajā konkrētajā piemērā mēs
runājam par interneta protokola vispārinājumu.
Jūs esat piecos tīklos, un es esmu vienā tīklā.
Kā redzat, mēs vispār neesam saistīti viens ar otru.
Tāpēc es sāku.
Un es vēlos jums nosūtīt ziņu.
Un tāpēc es kaut kā paziņoju šo ziņojumu maršrutētājam.
Maršrutētājs ir tas, kuram faktiski ir IP adrese.
Un tas skatās, kur tai ir jānonāk.
Mēs ejam uz pieciem punkts kaut kas.
Tāpēc tagad es sākšu lietot savu vai maršrutētāju, drīzāk sākšu
izmantot maršrutētāja tabulu, lai nodotu informāciju.
Tas redz, ka pieci nav viens, tāpēc saka, ka es to nodošu šim puisim.
Tad šim puisim ir jāpieņem lēmums.
Kurp es došos?
Nu, tas nav viens, tāpēc es negrasos pāriet uz vienu tīklu.
Un tas nav divi tīkli.
Es netaisos pāriet uz diviem tīkliem.
Tas sākas ar pieci.
Es neesmu savienots ar pieciem tīkliem, saka šis maršrutētājs.
Un tāpēc es to vienkārši nododu... Es iešu pa šo ceļu.
Šeit iet trijnieki un četrinieki, piecinieki un sešinieki.
Un es ļaušu tam puisim tikt ar to galā.
Es to pievedīšu nedaudz tuvāk vietai, kur tai vajadzētu nonākt.
Es zinu, ka tam vajadzētu iet šajā vispārējā virzienā.
Bet varbūt tas puisis tiks ar to galā.
Labi.
Tā tas puisis izskatās.
Viņš saka: Labi, šī IP adrese sākas ar pieci.
Man ir izveidots savienojums ar trim un sešiem tīkliem, tāpēc es
nevaru saņemt ziņojumu tieši tur, kur tam jānonāk.
Bet tas otrs maršrutētājs tur, es zinu, ja es to nosūtu četriem vai
pieciem, tas var tikt galā ar tiem.
Tātad tas nodod to tālāk.
Un tad šis maršrutētājs saka: nu, esmu pieslēgts ceturtajam un
piektajam tīklam.
Tātad, jā, es varu jums palīdzēt.
Es ņemšu jūsu IP adresi, kas sākas ar pieci.
Es to atdošu piektajam tīklam.
Piektais tīkls veiks zināmu darbu savā galā un nodos jums ziņojumu.
Un tagad mēs esam veiksmīgi pārsūtījuši jums ziņojumu no manis,
izmantojot interneta protokolu.
Atkal ļoti vispārināts, lai ilustrētu notiekošo.
Bet tas ir gandrīz tas, kā darbojas interneta protokols.
Maršrutētāji parasti zina, kur to nosūtīt, un nosūtīs to vienu soli,
tuvinot to galamērķim, līdz viens maršrutētājs ir fiziski savienots
ar tīklu vai adresi vai jebko citu un nodos to tur.
Tagad kopumā, izņemot ļoti, ļoti mazus, mazus ziņojumus, tas netiks
nosūtīts kā viens liels datu kopums.
Ja es sūtu jums e-pastu — ļoti garu e-pastu, sakiet, — tas nesaņems
visu šo e-pastu, nesaliks to bumbiņā vai paciņā, vai jebkādā citā, un
visu to nenosūtīs tīklā.
Pirmkārt, informācijas sūtīšana pa tīklu ir dārga.
Tas summējas.
Un jo lielāks ir datu kopums , jo dārgāka ir pārvietošanās katrā solī.
Un, ja kaut kādā veidā ir palēninājums un tad ir šis milzis — apmēram
tāpat kā tad, ja jūs braucat pa šoseju un šī milzu kravas automašīna
bloķē ceļu un jūs nevarat to apiet ne pa vienu, ne otrui joslu, jo tā
ir izkliedēta ārā.
Tas bremzē visus pārējos aiz tās.
Bet mazās automašīnas, ja tās visas būtu mazas automašīnas, tās
varētu pārvietoties, ja šī līdzība kaut nedaudz palīdz.
Tātad viens liels bloks sistēmā var patiešām palēnināt visus pārējos.
Un tāpēc tas, ko IP gatavojas darīt, ir sadalīt šos datus paketēs.
Tas prasīs šo lielo e-pastu vai FTP pārsūtīšanu vai failu
pārsūtīšanu, vai arī es nosūtu pieprasījumu tīmekļa pārlūkprogrammai,
jo vēlos kaķa attēlu.
Un tas paņems šo pieprasījumu vai šo e-pastu vai failu un sadalīs to
daudzās daļās un nosūtīs visas daļas atsevišķi.
Tāpēc patiesībā es piepildu šoseju ar daudzām mazām automašīnām,
kuras visas var pārvietoties, nevis lielu kravas automašīnu, kas, ja
kaut kas noiet greizi, varētu traucēt satiksmi visiem pārējiem.
Vēl viena šī blakusparādība ir tāda, ka var notikt kāda katastrofāla
kļūme un kaut kas noiet greizi un pakete tiek nomesta.
Kaut kas neizdevās, un ziņojumu nevar nosūtīt.
Iespējams, maršrutētājā bija pārāk daudz lietu.
Tas nevarēja žonglēt ar visu.
Un tāpēc tas burtiski to nometa.
Tā ir sava veida līdzība, vai ne?
Tajā notiek daudzas lietas.
Tas nodod informāciju no punkta A uz punktu B.
Mēs neesam vienīgie divi cilvēki internetā, tāpēc tam ir jāapstrādā
liela apjoma datplūsme.
Un, ja tam nav pietiekami daudz roku un tas nevar saprast, ko tas
dara, tas var vienkārši kaut ko nomest.
Tātad tas var darīt kaut ko citu.
Pārāk daudz notiek.
Ja mūsu vēstījums bija viens milzīgs bloks un tas bija tas, kas tika
nomests, tagad mums tas ir jānosūta vēlreiz.
Un tagad mēs, iespējams, atkal aktivizējām datplūsmu.
Un mēs riskējam, ka šis milzīgais bloks atkal tiks nomests.
Bet, ja dati ir sadalīti paketēs un mēs atmetam vienu no tām, šīs
paketes nosūtīšana vēl vienu reizi ir daudz lētāka, nevis visu lietu
nosūtīšana vēlreiz.
Tātad IP ir atbildīgs par informācijas nogādāšanu no punkta A līdz
punktam B, kā arī informācijas sadalīšanu mazās daļās, lai tīkls
netiktu aplikts ar nodokļiem.
IP ir pazīstams arī kā bezsavienojuma protokols.
Ne vienmēr ir noteikts ceļš no sūtītāja līdz saņēmējam vai otrādi.
Tagad šajā piemērā, par kuru mēs runājām, patiesībā ir tikai viens
veids, kā piekļūt katram tīklam.
Tātad šajā konkrētajā ilustrācijā patiesībā ir noteikts ceļš no
punkta A uz punktu B.
Bet mēs varam to mainīt, veicot tikai vienu modifikāciju diviem
maršrutētājiem kreisajā pusē, pievienojot šo nosacījumu maršrutētāju
tabulām.
Tagad ievērojiet, ka no augšējā kreisā maršrutētāja faktiski ir divi
veidi, kā rīkoties ar četrām vai piecām IP adresēm.
Tas var iet uz leju līdz apakšējam kreisajam maršrutētājam vai var
pāriet uz labo pusi uz labo maršrutētāju.
Tam ir vairākas iespējas.
Un tas patiesībā ir sava veida laba lieta, jo tas padara mūsu tīklu
aktīvāku .
Ja, piemēram, tas ir kā GPS.
Ja kādreiz esat braucis pa šoseju un pēkšņi jūsu GPS brīdina, ka
priekšā ir satiksme, jūs iespējams, vēlaties no tās izvairīties.
Un tāpēc jūs varat pārrēķināt savu maršrutu.
Un maršrutētāja tīkls papildus tam, ka tam ir informācija par to, kur
vajadzētu nokļūt paketēm vai kur jānonāk datiem, ir arī tāds
vispārīgs impulss vietējā tīkla stāvoklim.
Kas notiks, ja es to nosūtīšu pa šo ceļu pretim šim ceļam?
Un tāpēc, ņemot vērā intensīvas satiksmes situācijas tīklā,
iespējams, lietas tiks novirzītas neefektīvākā vai vispārīgākā veidā
neefektīvā veidā, jo, ja mēs ejam pa parasto ceļu, būs liela
satiksme.
Šoseja ir pilnībā aizsprostota.
Tāpēc, iespējams, mēs tā vietā brauksim pa apvedceļiem, kas parasti
aizņemtu daudz vairāk laika, bet neviens īsti neizmanto šos
apvedceļus .
Un tāpēc mēs varam virzīt savas paketes šādā veidā.
Tāpēc ne katra liela datu pakete var iet vienādi no sākuma līdz
beigām.
Un mūsu tīkls kļūst daudz aktīvāks , ja mūsu maršrutētāju tabulas
nodrošina vairākas iespējas, kur doties.
Mēs neesam atkarīgi no tā, ka viena kravas automašīna izbrauc no ceļa.
Mēs varam nākamajā izbrauktuvē nobraukt no šosejas un braukt pa citu
ceļu.
Un tāpēc interneta protokols arī nedaudz to dara.
Tātad tie ir interneta protokola pamati.
Bet ir vēl viena problēma, kas jārisina, kas notiek, ja mēs nometam
paketi?
Kā mēs zinām, ka mēs atkal nosūtīsim šo paciņu?
vai ne?
Interneta protokols negarantē piegādi.
Mēs būsim atkarīgi no cita protokola, lai risinātu to, ko sauc par
pārraides kontroles protokolu, TCP.
Un mēs runāsim par pārraides kontroles protokolu nākamajā video.
Es esmu Dags Loids.
Šis ir CS50.