Як два машини в двох різних локальних мережах могли спілкуватися?
ІМХО, легше було б зрозуміти загальні правила, якби ви спочатку забули про винятки.
По-перше, врахуйте, що сотні закритих локальних мереж, як та, створена вашим домашнім маршрутизатором, є своєрідною думкою , яка набула широкого поширення лише через брак IPv4-адрес.
На вищих рівнях, поза вашим домашнім маршрутизатором, немає такого суворого розділення між "LAN" та "WAN". Натомість мислите про Інтернет як про єдину глобальну мережу, можливо, дещо схожу на телефонну чи поштову мережі. Є кілька «ярусів» провайдерів, але якщо ви будете дотримуватися ієрархії досить високо, ви не знайдете жодного центрального вузла з провайдерами в якості спиць; натомість ви знайдете сітку взаємопов'язаних мереж, як на графіках нижче.
Ваш Інтернет-провайдер, якщо він достатньо великий, швидше за все, матиме декілька посилань на мережі вищого рівня, а також прямі маршрути до інших Інтернет-провайдерів у тому ж районі; всі вони використовують протокол BGP для обміну інформацією про те, що доступно через який провайдер. Тож якщо коротша стежка з певних причин перерветься, все пройде довше. (Що, здається, відбувається саме зараз між моїм Інтернет-провайдером та Вікіпедією. Грм.)
Насправді, деякі компанії, такі як Google або Netflix, самі є досить великими, щоб мати декілька посилань на рівні рівнів-1, що в значній мірі викидає будь-яку ієрархію, що залишилася.
Але хто дає цю IP-адресу в Google?
IP - адреси самі по собі є призначені в ієрархії, починаючи з IANA призначаючи великі діапазони адрес для регіональних реєстрів , а також ті реєстри , в свою чергу видають менші діапазони для інтернет - провайдерів та інших підприємств.
Але ці призначення є лише дозволом на використання адрес; вони не мають відношення до того, як налаштовані фактичні маршрутизатори. Натомість оператори кожної мережі безпосередньо налаштовують власні маршрутизатори для використання діапазону адрес, яким вони володіють.
(Зазвичай сервери самі матимуть свої адреси вручну встановити на кожному сервері, для надійності , але це не обов'язково. - Я бачив місця , де сервери використовують DHCP для отримання їх адреси від маршрутизатора, таким же чином , персональні комп'ютери роблять.)
Коротше кажучи, IANA надає Google дозвіл на використання адреси, а інші Інтернет-провайдери по всьому світу переконують, що адреса спрямована до мережі Google. Решта - від операторів мережі Google.
Отже, враховуючи вищесказане, ваш домашній маршрутизатор та веб-сервери Google є майже рівними членами Інтернету . Кожен має глобальну IP-адресу, до якої можна дістатися з будь-якого іншого місця в мережі, дотримуючись таблиць маршрутизації.
На вашому комп'ютері є дуже проста таблиця маршрутизації, яка просто говорить про те, що все, що знаходиться поза однією підмережею, доступне, пройшовши через "шлюз за замовчуванням" (ваш маршрутизатор).
Аналогічно, ваш домашній маршрутизатор говорить, що IP-адреси "LAN" доступні безпосередньо на портах локальної мережі, а все інше має бути надіслано до маршрутизатора вашого провайдера.
Тут на роботі у нас було п'ять таких маршрутизаторів, по одному в кожній будівлі. Таким чином, їх маршрутизаційні таблиці також мають прямий шлях до маршрутизатора будь-якої іншої будівлі, окрім основних «тієї самої підмережі» та «всього іншого».
У провайдера буде декілька маршрутизаторів, деякі з них матимуть маршрути до клієнтів, деякі з них знають про посилання на інші провайдери. Наприклад, "зовнішній" маршрутизатор може мати таку інформацію:
- 36.56.xx можна отримати через власний маршрутизатор «клієнтів» провайдера;
- 212.xxx можна отримати через маршрутизатор NORDUnet 109.105.98.126;
- 212.162.xx також можна отримати через маршрутизатор GÉANT 62.40.98.13;
- (і так далі)
- нарешті, все можна досягти через рівень 3.
І маршрутизатор "замовника" міг би сказати:
- 36.56.1.1 можна дістатися через порт №3;
- 36.56.1.2 можна отримати через порт №4;
- (і так далі)
Щоразу, коли ваш комп’ютер надсилає пакет в сторону Google, або навпаки, кожен маршрутизатор перевірятиме, до чого він може дійти, і пересилає пакет до наступного. Ви навіть можете бачити повний шлях за допомогою TRACERT
або traceroute
команд на терміналі.
Отже, це основи.
Так, ваш домашній маршрутизатор також потребує додаткових хитрощів - Переклад мережевих адрес або NAT - щоб уся ваша домашня мережа могла ховатися за однією IP-адресою. Це досить розповсюджено: лише старші, такі як MIT, мають достатньо IPv4-адрес, щоб дати їх кожній людині. Майже всі інші мережі мають владнати з NAT. (Моє робоче місце володіє блоком з 64 адрес, але має кілька сотень робочих станцій та студентів, які користуються Wi-Fi на своїх телефонах, тому більшість із них також позаду NAT.)
Але, незалежно від того, наскільки це широко розповсюджено, NAT все ще є винятком, хак для того, щоб працювати старі речі (поки IPv6 не стане більш поширеним у 2100-х роках). Більшість серверів мають власну глобальну IP-адресу, і ви можете отримати доступ до них безпосередньо; вам не потрібно ніякої магії, щоб дістатися до мережі Google.
Дійсно, якби вам довелося підключитися до того, хто стоїть за таким NAT, як ваш, це може насправді дратувати - багато ігор просять вас налаштувати "переадресацію порту" з цієї причини, і однорангові програми повинні вдаватися до різних " хитрощі "пробивання", щоб досягти всередині локальної мережі через NAT.
І стане гірше, коли ISP почнуть використовувати "NAT-клас NAT", де
Крім того, великі Інтернет-провайдери іноді мають складніші внутрішні системи, такі як маршрутизація політики або MPLS, коли перенаправлення на основі маршруту стає занадто повільним, але вони знову просто додаються поверх основного IP, і їх слід досліджувати окремо - у мене немає " t фактично працював у Інтернет-провайдера.