-
У цій секції я збираюсь поговорити про те, як працюють комп'ютерні мережі. Отже,
-
комп'ютерні мережі є чимсь подібним до телефонної системи для комп'ютерів. Там кожен
-
комп'ютер може здійснити передачу даних будь-якому іншому. Базові риси, як там все працює
-
є несподівано простими, хоча деталі - доволі складні. Але не дивлячись на це,
-
згідно статистики, більшість студентів Стенфорда використовують мережу -
-
близько 10 хвилин під час прогулянки вранці і, можливо,
-
біля 10 хвилин ввечері перед сном. В будь-якому разі це варто знати.
-
Отже, почнемо з малого. LAN - це абревіатура для Local Area Network.
-
Взагалі - LAN це мережа, яка використовується для покриття
-
можливо, одного поверха в будівлі, або одного будинку чи чогось подібного.
-
Отже, я буду розповідати про цю систему першою. А в наступній секції
-
буде показано, як її масштаб збільшується і покриває всю планету за допомогою
-
Internet. Двома найзагальнішими прикладами технології
LAN є: 1) Ethernet - дротова
-
наземна технологія і 2) Wi-Fi - бездротовий, радіоподібний
-
аналог Ethernet. Це два найзагальніших випадки.
-
Так що, давате спершу поговоримо про Ethernet. Отже, проводовий Ethernet використовує
-
для передачі сигналу провіднички, які є розміром із соломку для коктейлю. Ось фото
-
одного з них. Провідники завершуються штекерами, подібними до зображеного (RJ-45),
-
які трошки більші від телефонних. Ще ви можете бачити провідники, які входять у штекер,
-
і для можливості розрізнення вони є сині й жовті. Ethernet добре працює на відстанях
-
до 100 метрів. Як ми вже згадували, він може покривати один корпус, або
-
один поверх чи ще щось подібне. Далі бачимо фото
-
безпровідного рутера. До його задньої частини заходять два кабелі Ethernet
-
І коли ви маєте якийсь пристрій, наприклад, комп'ютер чи щось подібне, що ви
-
збираєтесь підключити до Ethernet, то зрозуміло, що пристрій повинен мати
-
подібний штекер, за допомогою якого ви зможете підключити його
-
до гнізда Ethernet. Ось так це відбувається. А далі я хотів би розповісти ось що:
-
добре, маєте ви ці дроти, а як же дані попадають з одного місця до другого?
-
Отже випадок, який ми розглянемо - хай ми маємо на першому комп'ютері файл
-
flowers.jpg, просто файл з великою, великою кількістю бітів у ньому.
-
І я хочу подумати - як би то мені переслати його по кабелю Ethernet
-
на комп'ютер два. Спосіб яким це робиться, а він працює у всіх мережах, полягає в тому
-
що коли ви маєте порівняно великий файл,
-
то його потрібно розбити на частини меншого розміру, т.зв. пакети.
-
А кожен пакет є порівняно невеликим, наприклад він може мати 1000 байт або 1500 байт.
-
Для визначеності, давайте будемо брати 1500 байт. Це спільний розмір для мого прикладу.
-
Отже, якщо перший комп'ютер хоче переслати цей файл,
-
то йому потрібно взяти цей файл, всі ці байти, скажімо 50,000 байт
-
і розбити його на ряд пакетів, кожен з яких буде мати лише 1,500 байт.
-
Так що тепер ми маємо подумати лише про те, як переслати один пакет по провідниках.
-
А якщо ми будемо знати, як це зробити з одним, то, зрозуміло, ми зможемо
-
переслати всі пакети. Так що зараз я детально розберу
-
як Ethernet пересилає один пакет. Отже, я почну з правої частини
-
мого малюнка. Так що, ми маємо перший комп'ютер і цей пакет.
-
Якби ми заглянули всередину пакета, то побачили б, що фактично це є набір байтів,
-
кожен з яких є набором з восьми нулів та одиниць. Отже, ось як ми можемо уявити
-
передачу даних: передаючий комп'ютер читає перший байт пакета.
-
І, як ми вже знаємо, це є просто послідовність нулів і одиниць.
-
А далі просто треба слідувати схемі - скажімо, кожній одиниці ми приписуємо
-
три вольти, і будемо подавати ці три вольти на провідники. А коли буде нуль -
-
відповідно я буду подавати нуль вольт на провідники, ось так працює даний процес
-
зчитування. Ви навіть не повинні розумітися в електротехніці, а просто зчитувати
-
і поміщувати послідовність нулів і одиниць на провідник. На провіднику виникає хвиля із
-
цих бітів, і ясно, що таким чином послідовність нулів і oдиниць переміщується
-
по провіднику. Щоб краще уявити - просто подивіться на ліву частину малюнка.
-
Отже, отримувач просто слідкує за провідниками. А те що він сприймає - це є
-
просто послідовність змін напруги. Так що, коли отримувач бачить, що є три вольти,
-
добре, я вважаю що це одиниця. Тобто процес іде як з трубою,
-
по якій приходять електрони. Далі отримувач бачить нуль, добре,
-
значить це був нуль. А потім знову є три вольти - значить це одиниця.
-
А якщо все є три вольти, значить ще одна одиниця. А потім нуль ну і так далі.
-
Так що, можем уявити, як працює отримувач - просто спостерігаючи за цією послідовністю:
-
3 вольти i 0 вольт, що приходять по провідниках. Звичайно, це проходить дуже швидко.
-
І просто спостерігаючи за цією послідовністю 3 вольти i 0 вольт, можемо відновити,
-
що ж то було в байті, який посилали. Зрештою, таким чином і пересилається
-
весь пакет. Відправник просто зчитує всі біти й посилає послідовність змін напруги.
-
А отримувач, фактично, реконструює всі 1500 біт, шоб отримати весь пакет.
-
Ось так, насправді, все і працює.
-
Ви можете мати дані на одному комп'ютері і якщо до нього під'єднано кабель Ethernet,
-
то він зможе посилати всі ці нулі й одиниці по провідниках.
-
А тепер актуальне питання - як щодо помилок? В сучасному Ethernet
-
передавання йде на швидкостях порядку мільярда біт за секунду. Мільярд нулів
-
і одиниць за секунду на провідниках - це дуже швидко. І, само собою зрозуміло,
-
що часом в такому процесі трапляються помилки. Наприклад, замість одиниці
-
приходить нуль і таке подібне. Так що, я збираюсь розповісти про одну цікаву
-
техніку - яка зветься контрольною сумою і застосовується для
-
виявлення і корекції помилок. Щоб зрозуміти, як це працює, давайте поглянемо
-
на невелику діаграму ось тут. Перед передачею пакета відправник переглядає його,
-
а це, як ми вже знаємо, є просто набір чисел. Згадали, набір чисел
-
які знаходяться між нулем і 255. І що відправним може зробити -
-
це просто додати ці числа. В нашому прикладі сумою буде 491.
-
Ну і, скажімо, наша схема буде полягати в тому, що ми
-
просто беремо останні дві цифри. В даному прикладі цими цифрами
-
будуть 91. Далі ми скажемо, що це є наша контрольна сума, помістимо її в кінець
-
пакета і також надішлемо. Очевидно, щоб це запрацювало,
-
отримувач, маючи вже у себе цілий пакет, повинен виконати таке ж додавання.
-
Отже, отримувач додає всі ті біти, що він отримав. А далі дивиться, чи дають
-
вони 91? Чи співпадає значення останнього байта з контрольною сумою? Якщо значення
-
не співпадає, це означає, що якийсь біт перекрутився - трапилась помилка.
-
Отже не все передалось вірно. Значить отримувач повинен попростити відправника
-
ще раз переслати цей пакет. Кожен пакет порівняно невеликий, так що
-
це не є значною проблемою. А результат полягає в тому, що у нас є хоч і невелика,
-
гарантія, що кожен пакет буде передано коректно. І от, маючи змогу попросити
-
ще раз переслати пакет, в кінцевому підсумку отримувач буде мати повний набір пакетів,
-
кожен з яких буде перевірений. Ось так використовується дана схема,
-
насправді не лише в мережах, але в багатьох областях комп'ютерних систем.
-
Це є принцип перевірки, що при обміні інформацією з іншими компаніями,
-
кожна передача даних пройшла правильно. Отже ми пояснили, як так може бути,
-
що маючи якийсь великий .jpg файл на своєму комп'ютері ви можете взяти його на флешку,
-
а далі переслати його по мережі, і хоча, ви переміщуєте його з місця на місце
-
все це відбувається практично зі 100 % правильністю.
-
Кожен нуль чи одиниця, що знаходиться в якомусь маленькому бітові,
-
завдяки цій перевірці, продовжує залишатись нулем чи одиницею. І ще одне,
-
що треба згадати, ця схема перевірки, яка грунтується на просто додаванні,
-
наведена тут лише для пояснення. Реальна схема контрольної суми є трохи
-
більш складною. Існує ймовірність, що можуть бути дві помилки, які, зрозуміло,
-
взаємно компенсуються, так що помилки є, а контрольна сума не може їх виявити.
-
Хоча це і мікроскопічна ймовірність, але вона існує, і тому
-
дана схема не є повністю надійною. Так що я хочу розширити рамки нашого розгляду.
-
До цього часу я, фактично, розповідав про два комп'ютери, з'єднаних
-
кабелем Ethernet, а тепер ми розглянемо, що то буде, коли ми матимемо багато комп'ютерів,
-
які спілкуються за допомогою одного провідника. Я вважаю, що це є дуже елегантний витвір,
-
який варто розглянути. І всі ті зразки, які ви побачите в цій конструкції, будуть неодноразово
-
використовуватись в подальшому. Дизайн був настільки вдалим, що застосовується для вирішення
-
багатьох проблем. Отже, давайте сформулюємо задачу. Подивіться на цей малюнок, що ілюструє
-
роботу Ethernet у випадку, коли ви маєте багато комп'ютерів. Я зобразив чотири,
-
а провідник лише один. Це щось подібне до хребта, а вони всі його спільно використовують.
-
Тобто конструкція Ethernet полягає в тому, що є один спільний елемент апаратної частини
-
і багато комп'ютерів, які його використовують, причому вони здатні так кооперувати свої дії,
-
що використовують його ефективно. Отже, я розповім, як може один комп'ютер переслати
-
пакет другому по Ethernet, коли все виглядає як на малюнку, де я маю багато комп'ютерів,
-
що спільно використовують один провідник. Аналогією цього процесу є вечірка,
-
де присутні багато людей і вони хочуть поспілкуватись. Вони можуть
-
вести розмову, хоча в дійсності двоє людей не можуть балакати одночасно.
-
Просто їм треба узгодити свої дії і встановити черговість в розмові.
-
І Ethernet працює подібно до описаного.
-
Тут я зобразив, як це відбувається. Кожен з цих комп'ютерів має адресу,
-
унікальну адресу треба сказати, наприклад комп'ютер один, два три, чотири.
-
І комп'ютер хоче передати пакет, ось тут зліва я зобразив пакет.
-
Пакет починається з поля з двокрапкою, яке вказує комп'ютер призначення.
-
Хай для визначеності в нашому випадку буде, що комп'ютер один хоче
-
переслати пакет комп'ютеру чотири. Так що, комп'ютер один підготовлює пакет.
-
А далі що він має зробити - це дочекатися періоду мовчання на провіднику.
-
Можливо комп'ютери два і три мали розмову, тобто провідник був зайнятий,
-
переносячи їхні повідомлення. Але зрештою сигнали на провіднику затихають.
-
І от, користуючись цим періодом мовчання, комп'ютер один починає пересилати
-
пакет по провіднику. Ми можемо уявляти, що пакет отак проходить
-
і повертає сюди, прямо до комп'ютера чотири.
-
Але реально це більш схоже на трансляцію. Сигнал пакета поширюється
-
по провіднику і досягає кожного комп'ютера, під'єднаного до провідника.
-
Так що, це дійсно є трансляція, пакет просто займає весь провідник. А спосіб,
-
яким працює Інтернет полягає в тому, що кожен комп'ютер прослуховує провідник
-
весь час. Кожен прослуховує провідник. І дійсно, те що вони роблять - це просто
-
слідкують за пакетами, що адресовані їм. Так що, коли пакет для комп'ютера чотири
-
виходить, то четвертий комп'ютер почує його і скаже: добре, це для мене.
-
Далі скопіює нулі й одиниці цього пакета, бо це є для четвертого комп'ютера.
-
А комп'ютери два і три також будуть бачити нулі й одиниці, що поширюються по провіднику.
-
Але вони просто відмітять призначення - to: computer 4.
-
Добре, цей пакет не для мене, і просто ігноруватимуть його. Ось так все працює.
-
А тепер ще цікавий випадок спільного використання апаратури в Ethernet.
-
Нехай, як уже говорилось вище, комп'ютер один збирається переслати пакет на комп'ютер чотири.
-
Але так сталось, що комп'ютер три також має переслати пакет. І, припустимо,
-
що і комп'ютер один, і комп'ютер три почули
-
один і той же період мовчання на провіднику. Звісно, вони обидва вирішують
-
почати передачу по спільному провіднику. Але провідник не може переносити
-
одночасно декілька передач. І якщо вони обидва почнуть передачу, то буде зіткнення,
-
і дві розсилки накладуться та заглушать одна одну.
-
Інформація буде незворотньо перекручена,
-
обидва пакети пошкодженими і, відповідно, непотрібними.
-
А далі, і комп'ютер один, і комп'ютер три
-
врешті решт помітять, що ще хтось балакає крім них і, нарешті,
-
припинять передачу. І на провіднику знову буде період мовчання. А потім знову
-
і комп'ютер один, і комп'ютер три зрозуміють, що нічого не працює.
-
А оскільки вони почують тишу, то знову почнуть передачу, і знову буде
-
подібне зіткнення. А ось тут і знаходиться мудра конструкція Ethernet.
-
Як зробити так, щоб вони працювали по черзі?
-
Розумієте? Коли один передає, то другий чекає. Способом вирішення цієї проблеми
-
стало те, що і комп'ютер один, і комп'ютер три в Ethernet очікують на протязі часу,
-
який вибирається випадково. Вони просто вибирають випадкове число і кажуть, я чекаю
-
ось стільки, а далі пробую передавати. І дійсно, це є гарна ідея,
-
один із них завершить очікування першим, на провіднику не буде мовчання,
-
бо по ньому йтиме передача, а ми можемо просто повернутись до нашої попередньої
-
стратегії. Так що коли ви маєте зіткнення, то обидва комп'ютери пригальмовують,
-
а далі один з них скористається своєю чергою, і ми будемо
-
використовувати провідник дуже ефективно. Це пояснює, як ви,
-
маючи багато комп'ютерів підключених до одного провідника Ethernet, можете досягти,
-
щоб вони використовували його досить ефективно. Сьогодні, мабуть, більшість людей,
-
що дивляться цей матеріал, не використовують дротовий Ethernet взагалі. Він здається
-
трохи застарілим. Найзагальнішим способом підключення до будь-яких мереж сьогодні є Wi-Fi.
-
І я говоритиму про Wi-Fi дуже коротко, оскільки у нього така ж сама стратегія.
-
Отже, відмінною ознакою Ethernet є те, що ви маєте спільний провідник, і лише
-
одна особа може здійснювати передачу в даний момент. І ви маєте якось спільно його
-
використовувати. Wi-Fi - це точнісінько те саме. Просто в цьому випадку замість провідника
-
ви маєте радіо канал. Просто радіо-канал, що спільно використовується.
-
Також ми маємо всі ці комп'ютери, вони містять в собі невелике радіо,
-
як показано на малюнку схематичними радіохвилями. Отже є якийсь
-
радіо-канал, і вони всі спільно його використовують, а це дуже схоже на дротовий
-
Ethernet. Вони мають стратегію очікування періоду мовчання, і коли дочекаються - починають
-
трансляцію. Всі комп'ютери прослуховують ефір весь час і виловлюють пакети,
-
що адресовані їм і ігноруючи пакети, які адресовані не їм.
-
Іноді трапляється зіткнення - два пристрої почали трансляцію
-
одночасно. Коли це буде виявлено, застосовується стратегія призупинки на період часу,
-
вибраний випадковим чином, так що ви можете дочекатись мовчання знову і транслювати
-
без накладання. Значить, працює дуже схожа стратегія. А тепер підсумуємо
-
ті корисні ідеї, які присутні в структурі Ethernet і які, як я вже згадував,
-
постійно виникають в певних складних задачах. Це є просто оберемок
-
корисних рішень. Я вважаю, що вони варті розгляду.
-
Отже, ідея, що лежить в основі - ви маєте провідник, як певний спільний ресурс
-
і хочете використати його ефективно. І вирішення не потребує якоїсь зовнішньої
-
наглядової сили. Навпаки, всі учасники дотримуються правил розподілу і
-
співробітництва. І вони можуть так кооперуватись один з одним, що використовують
-
спільний ресурс ефективно. Іншою рисою, яка ще не була відмічена
-
є те, що Ethernet є дуже незахищеною системою. Згадаємо, як проходило
-
передавання пакета з комп'ютера один на комп'ютер чотири.
-
Цей пакет попадав також на комп'ютер три. Правда ж? І якби третій комп'ютер хотів,
-
він міг би його переглянути. І реально це означає, що спільний ресурс це така річ -
-
коли хтось транслює, то той хто хоче, може слухати.
-
Зрозуміло, не будь хто на Землі, а будь-хто на відстані цієї сотні метрів,
-
на яку, як ми вже знаємо, і поширюється ця локальна мережа.
-
Це не означає, що безпека в Internet є безнадійною, це значить, що ми
-
маємо додати інший рівень шифрування і безпеки. Сама по собі локальна мережа
-
LAN не є безпечною. Я буду розповідати про це більш детально трохи пізніше,
-
в секції безпеки. Ще однією рисою даної системи буде те, що коли ви маєте спільний
-
ресурс, то при збільшенні числа комп'ютерів, які його використовують,
-
продуктивність, доступна якомусь одному комп'ютеру буде зменшуватись.
-
Це знову повертає нас до спільного ресурсу. Якщо комп'ютери два і три зв'язуються
-
через бездротову область, наприклад, пересилаючи якийсь великий файл,
-
то це означає, що буде менше мовчання. І, таким чином, комп'ютер один
-
буде мати менше можливостей переслати щось, ніж він міг би.
-
Ви хочете мати добру якість і не бажаєте, щоб продуктивність
-
зменшувалась. Ви отримуєте меншу потужність, але з цього непросто вибратись.
-
Ethernet має цю виразну тенденцію до зменшення. І як я вже сказав,
-
це є дуже популярний, дуже вдалий набір рішень. І саме тому ми будемо розглядати
-
цю цікаву річ в подальшому.