Сети для начинающего IT-специалиста. Обязательная база
Примерно 80% из нас, кто заканчивает университет с какой-либо IT-специальностью, в итоге не становится программистом. Многие устраиваются в техническую поддержку, системными администраторами, мастерами по наладке компьютерных устройств, консультантами-продавцами цифровой техники, менеджерами в it-сферу и так далее.
Эта статья как раз для таких 80%, кто только закончил университет с какой-либо IT-специальностью и уже начал мониторить вакансии, например, на должность системного администратора или его помощника, либо выездного инженера в аутсорсинговую фирму, либо в техническую поддержку 1-й/2-й линии.
А также для самостоятельного изучения или для обучения новых сотрудников.
За время своей трудовой деятельности в сфере IT я столкнулся с такой проблемой, что в университетах не дают самую основную базу касательно сетей. С этим я столкнулся сначала сам, когда, после окончания университета, ходил по собеседованиям в 2016 году и не мог ответить на простые (как мне сейчас кажется) вопросы. Тогда мне конечно показалось, что это я прохалтурил и не доучил в университете. Но как оказалось дело в образовательной программе. Так как сейчас, я также сталкиваюсь с данным пробелом знаний, когда обучаю новых сотрудников.
И что тогда, мне пришлось изучить множество статей в интернете, прежде чем я понял базовые моменты, и что сейчас, задавая молодым специалистам темы для изучения, они с трудом находят и усваивают необходимое. Это происходит по причине того, что в Интернете огромное количество статей и все они разрозненны по темам, либо написаны слишком сложным языком. Плюс большинство информации в начале своих статей содержат в основном просто научные определения, а дальше сразу сложные технологии использования. В итоге получается много того, что для начинающего пока совсем непонятно.
Именно поэтому я решил собрать основные темы в одну статью и объяснить их как можно проще «на пальцах».
Сразу предупреждаю, что никакой углубленной информации в статье не будет, только исключительно самая база и самое основное.
Темы, которые рассмотрены:
- Глобальные и локальные сети
- Белые и серые IP-адреса
- NAT
- DHCP-сервер и подсети
- Устройства маршрутизации сети (маршрутизатор, коммутатор, свитч, хаб)
- Основные команды анализа сети
- Транспортные протоколы UDP и TCP
1. Глобальные и Локальные сети
Вся интернет сеть подразделяется на глобальную (WAN) и локальную (LAN).
Все пользовательские устройства в рамках одной квартиры или офиса или даже здания (компьютеры, смартфоны, принтеры/МФУ, телевизоры и т.д.) подключаются к роутеру, который объединяет их в локальную сеть.
Участники одной локальной сети могут обмениваться данными между своими устройствами без подключения к интернет провайдеру. А вот чтобы выйти в сеть (например, выйти в поисковик Яндекс или Google, зайти в VK, Instagram, YouTube или AmoCRM) необходим доступ к глобальной сети.
Выход в глобальную сеть обеспечивает интернет провайдер, за что мы и платим ему абонентскую плату. Провайдер устанавливает на своих роутерах уровень скорости для каждого подключения в соответствии с тарифом. Провайдер прокидывает нам витую пару или оптику до нашего роутера (нашей локальной сети) и после этого любое устройства нашей локальной сети может выходить в глобальную сеть.
Для аналогии, сети, можно сравнить с дорогами.
Например, дороги вашего города N это локальная сеть. Эти дороги соединяют вас с магазинами, учреждениями, парками и другими местами вашего города.
Чтобы попасть в другой город N вам необходимо выехать на федеральную трассу и проехать некоторое количество километров. То есть выйти в глобальную сеть.
Для более наглядного представления, что такое глобальная и локальная сеть я нарисовал схематичный рисунок.
2. Белые и серые IP-адреса
Каждое устройство в сети имеет свой уникальный IP-адрес. Он нужен для того, чтобы устройства сети понимали куда необходимо направить запрос и ответ.
Это также как и наши дома и квартиры имеют свой точный адрес (индекс, город, улица, № дома, № квартиры).
В рамках вашей локальной сети (квартиры, офиса или здания) есть свой диапазон уникальных адресов. Я думаю многие замечали, что ip-адрес компьютера, например, начинается с цифр 192.168.X.X
Так вот это локальный адрес вашего устройства.
Существуют разрешенные диапазоны локальных сетей:
Думаю из представленной таблицы сразу становится понятно почему самый распространенный диапазон это 192.168.X.X
Чтобы узнать, например, ip-адрес своего компьютера (на базе ос windows), наберите в терминале команду ipconfig
Как видите, ip-адрес моего компьютера в моей домашней локальной сети 192.168.88.251
Для выхода в глобальные сети, ваш локальный ip-адрес подменяется роутером на глобальный, который вам выдал провайдер. Глобальные ip-адреса не попадают под диапазоны из таблички выше.
Так вот локальные ip-адреса — это серые ip-адреса, а глобальные — это белые.
Для большего понимания рассмотрите схему ниже. На ней я подписал каждое устройство своим ip-адресом.
На схеме видно, что провайдер выпускает нас в глобальные сети (в интернет) с белого ip-адреса 91.132.25.108
Для нашего роутера провайдер выдал серый ip-адрес 172.17.135.11
И в нашей локальной сети все устройства соответственно тоже имеют серые ip-адреса 192.168.Х.Х
Узнать под каким ip-адресом вы выходите в глобальную сеть можно на сайте 2ip.ru
Но из всего этого стоит помнить один очень важный фактор!
В настоящее время обострилась проблема нехватки белых ip-адресов, так как число сетевых устройств давно превысило количество доступных ip. И по этой причине интернет провайдеры выдают пользователям серые ip-адреса (в рамках локальной сети провайдера, например в пределах нескольких многоквартирных домов) и выпускают в глобальную сеть под одним общим белым ip-адресом.
Чтобы узнать серый ip-адрес выдает вам провайдер или белый, можно зайти к себе на роутер и посмотреть там, какой ip-адрес получает ваш роутер от провайдера.
Например я на своем домашнем роутере вижу серый ip-адрес 172.17.132.2 (см. диапазаон локальных адресов). Для подключения белого ip-адреса провайдеры обычно предоставляют доп. услугу с абон. платой.
На самом деле, для домашнего интернета это совсем не критично. А вот для офисов компаний рекомендуется покупать у провайдера именно белый ip-адрес, так как использование серого ip-адреса влечет за собой проблемы с работой ip-телефонии, а также не будет возможности настроить удаленное подключение по VPN. То есть серый ip-адрес не позволит вам вывести в интернет ваш настроенный сервер и не позволит настроить удаленное подключение на сервер из другой сети.
3. NAT
В предыдущем разделе я отметил, что “в настоящее время обострилась проблема нехватки белых ip-адресов” и поэтому распространенная схема подключения у интернет провайдеров сейчас, это подключать множество клиентов серыми ip-адресами, а в глобальный интернет выпускать их под одним общим белым ip.
Но так было не всегда, изначально всем выдавались белые ip-адреса, и вскоре, чтобы избежать проблему дефицита белых ip-адресов, как раз и был придуман NAT (Network Address Translation) — механизм преобразования ip-адресов.
NAT работает на всех роутерах и позволяет нам из локальной сети выходить в глобальную.
Для лучшего понимания разберем два примера:
1. Первый случай: у вас куплен белый ip-адрес 91.105.8.10 и в локальной сети подключено несколько устройств.
Каждое локальное устройство имеет свой серый ip-адрес. Но выход в интернет возможен только с белого ip-адреса.
Следовательно когда, например, ПК1 с ip-адресом 192.168.1.3 решил зайти в поисковик Яндекса, то роутер, выпуская запрос ПК1 в глобальную сеть, подключает механизм NAT, который преобразует ip-адрес ПК1 в белый глобальный ip-адрес 91.105.8.10
Также и в обратную сторону, когда роутер получит от сервера Яндекса ответ, он с помощью механизма NAT направит этот ответ на ip-адрес 192.168.1.3, по которому подключен ПК1.
2. Второй случай: у вас также в локальной сети подключено несколько устройств, но вы не покупали белый ip-адрес у интернет провайдера.
В этом случае локальный адрес ПК1(192.168.1.3) сначала преобразуется NAT'ом вашего роутера и превращается в серый ip-адрес 172.17.115.3, который вам выдал интернет-провайдер, а далее ваш серый ip-адрес преобразуется NAT’ом роутера провайдера в белый ip-адрес 91.105.108.10, и только после этого осуществляется выход в интернет (глобальную сеть).
То есть, в этом случае получается, что ваши устройства находятся за двойным NAT’ом.
Такая схема имеет более высокую степень безопасности ваших устройств, но также и имеет ряд больших минусов. Например, нестабильная sip-регистрация VoIP оборудования или односторонняя слышимость при звонках по ip-телефонии.
Более подробно о работе механизма NAT, о его плюсах и минусах, о выделении портов, о сокетах и о видах NAT я напишу отдельную статью.
4. DHCP — сервер и подсети
Чтобы подключить устройство, например, компьютер к интернету вы обычно просто подключаете провод (витую пару) в компьютер и далее в свободный порт на роутере, после чего компьютер автоматически получает ip-адрес и появляется выход в интернет.
Также и с Wi-Fi, например со смартфона или ноутбука, вы подключаетесь к нужной вам сети, вводите пароль, устройство получает ip-адрес и у вас появляется интернет.
А что позволяет устройству получить локальный ip-адрес автоматически?
Эту функцию выполняет DHCP-сервер.
Каждый роутер оснащен DHCP-сервером. IP-адреса, полученные автоматически являются динамическими ip-адресами.
Почему динамические?
Потому что, при каждом новом подключении или перезагрузки роутера, DHCP-сервер тоже перезагружается и может выдать устройствам разные ip-адреса.
То есть, например, сейчас у вашего компьютера ip-адрес 192.168.1.10, после перезагрузки роутера ip-адрес компьютера может стать 192.168.1.35
Чтобы ip-адрес не менялся, его можно задать статически. Это можно сделать, как на компьютере в настройках сети, так и на самом роутере.
А также, DHCP-сервер на роутере вообще можно отключить и задавать ip-адреса вручную.
Можно настроить несколько DHCP-серверов на одном роутере. Тогда локальная сеть разделится на подсети.
Например, компьютеры подключим к нулевой подсети в диапазон 192.168.0.2-192.168.0.255, принтеры к первой подсети в диапазон 192.168.1.2-192.168.1.255, а Wi-Fi будем раздавать на пятую подсеть с диапазоном 192.168.5.2-192.168.5.255 (см. схему ниже)
Обычно, разграничение по подсетям производить нет необходимости. Это делают, когда в компании большое количество устройств, подключаемых к сети и при настройке сетевой безопасности.
Но такая схема в компаниях встречается довольно часто.
Поэтому обязательно нужно знать очень важный момент.
Внимание!
Если вам необходимо с ПК зайти на web-интерфейс, например, принтера или ip-телефона и при этом ваш ПК находится в другой подсети, то подключиться не получится.
Для понимания разберем пример:
Допустим вы работаете за ПК1 с локальным ip-адресом 10.10.5.2 и хотите зайти на web-интерфейс ip-телефона с локальным ip-адресом 192.168.1.3, то подключиться не получится. Так как устройства находятся в разных подсетях. К ip-телефона, находящиеся в подсети 192.168.1.X, можно подключиться только с ПК3 (192.168.1.5).
Также и к МФУ (172.17.17.10) вы сможете подключиться только с ПК4 (172.17.17.12).
Поэтому, когда подключаетесь удаленно к пользователю на ПК, чтобы зайти на web-интерфейс ip-телефона, то обязательно сначала сверяйте их локальные ip-адреса, чтобы убедиться, что оба устройства подключены к одной подсети.
5. Устройства маршрутизации сети (маршрутизатор, коммутатор, свитч, хаб)
Как ни странно, но есть такой факт, что новички в IT (иногда и уже действующие сис.админы) не знают или путают такие понятия как маршрутизатор, коммутатор, свитч, сетевой шлюз и хаб.
Я думаю, причина такой путаницы возникла из-за того, что наплодили синонимов и жаргонизмов в названиях сетевого оборудования и это теперь вводит в заблуждение многих начинающих инженеров.
Давайте разбираться.
а) Роутер, маршрутизатор и сетевой шлюз
Все знают что такое роутер. Что это именно то устройство, которое раздает в помещении интернет, подключенный от интернет провайдера.
Так вот маршрутизатор и сетевой шлюз это и есть роутер.
Данное оборудование является основным устройством в организации сети. В инженерной среде наиболее используемое название это “маршрутизатор”.
Кстати маршрутизатором может быть не только приставка, но и системный блок компьютера, если установить туда еще одну сетевую карту и накатить, например, RouterOS Mikrotik. Далее разрулить сеть на множество устройств с помощью свитча.
б) Что такое Свитч и чем он отличается от Коммутатора и Хаба
Свитч и Коммутатор это тоже синонимы. А вот хаб немного другое устройство. О нем в следующем пункте (в).
Коммутатор (свитч) служит для разветвления локальной сети. Как тройник или сетевой фильтр, куда мы подключаем свои устройства, чтобы запитать их электричеством от одной розетки.
Коммутатор не умеет маршрутизировать сеть как роутер. Он не выдаст вашему устройству ip-адрес и без помощи роутера не сможет выпустить вас в интернет.
У стандартного маршрутизатора обычно 4-5 портов для подключения устройств. Соответственно, если ваши устройства подключаются проводами и их больше чем портов на роутере, то вам необходим свитч. Можно к одному порту роутера подключить свитч на 24 порта и спокойно организовать локальную сеть на 24 устройства.
А если у вас завалялся еще один роутер, то можно в его web-интерфейсе включить режим коммутатора и тоже использовать как свитч.
в) Хаб
Хаб выполняет те же функции, что и коммутатор. Но его технология распределения сильно деревянная и уже устарела.
Хаб раздает приходящие от роутера пакеты всем подключенным устройствам без разбора, а устройства уже сами должны разбираться их это пакет или нет.
А коммутатор имеет MAC таблицу и поэтому распределяет приходящие пакеты на одно конкретное устройство, которое и запрашивало этот пакет. Следовательно передача данных коммутатором быстрее и эффективнее.
В настоящее время уже редко где встретишь использование хаба, но всё таки они попадаются, нужно быть к этому готовым и обязательно рекомендовать пользователю замену хаба на свитч.
6. Основные команды для анализа сети
а) Команда Ping
Чтобы понять активен ли ip-адрес или само устройство, можно его “пропинговать”.
Для этого в командной строке пишем команду ping “ip-адрес”.
Здесь мы “пинганули” dns сервер google и, как видим, сервер активен (отклик на пинги есть и равен 83 мс).
Если адресат недоступен или данный ip-адрес не существует, то мы увидим такую картину:
То есть ответа на пинги не получаем.
Но Ping намного полезней использовать с ключами:
-t -”пинговать” непрерывно (для остановки нажимаем комбинацию Ctrl+С)
-а -отображать имя “пингуемого” узла (сайта/устройства/сервера)
Соответственно ключ “-а” нам показал, что имя пингуемого узла “dns.google”.
А благодаря ключу “-t” ping шел без остановки, я остановил его, нажав Ctrl+C.
При непрерывном пинге можно увидеть адекватно ли ведет себя пингуемый узел и примерное качество работы интернет канала.
Как видим из скриншота, периодически возникают задержки приема пакета аж до 418 мс, это довольно критичное значение, так как скачок с 83 мс до 418 мс отразился бы на видеосвязи торможением/зависанием изображения или в ip-телефонии деградацией качества голоса.
В моем случае, скорей всего штормит мой домашний Интернет.
Но чтобы более детально установить причину, это нужно запускать dump. А это тема для целой статьи.
Внимание! Иногда на роутерах отключена отправка ICMP пакетов (кто-то отключает специально, а где-то не включена по умолчанию), в таком случае на "пинги" такой узел отвечать не будет, хотя сам будет активен и нормально функционировать в сети.
Еще одна возможность “пинга” это узнать какой ip-адрес скрывается за доменом сайта. А именно, на каком сервере установлен хост сайта.
Для этого просто вместо ip-адреса пишем сайт:
Как видите, у хабра ip-адрес 178.248.237.68
б) Трассировка
Иногда очень важно увидеть каким путем идет пакет до определенного устройства.
Возможно где-то есть пробоина и пакет не доходит до адресата. Так вот утилита трассировки помогает определить на каком этапе этот пакет застревает.
На ОС Windows эта утилита вызывается командой “tracert” ip-адрес или домен:
Здесь мы увидели через какие узлы проходит наш запрос, прежде чем дойдет до сервера ya.ru
На ОС Linux эта утилита вызывается командой traceroute.
Утилитой трассировки также и обладают некоторые устройства, маршрутизаторы или голосовые VoIP шлюзы.
в) Утилита whois
Данная утилита позволяет узнать всю информацию об ip-адресе или о регистраторе домена.
Например, проверим ip-адрес 145.255.1.71. Для этого ввожу в терминале команду whois 145.255.1.71
Получили информацию о провайдере ip-адреса, страну, город, адрес, диапазон и т.д.
Я пользуюсь ей только на Linux. Утилита качается и устанавливается легко из стандартного репозитория операционной системы.
Но также читал, что и на Windows есть подобное решение.
7. Транспортные протоколы TCP и UDP
Все передачи запросов и прием ответов между устройствами в сети осуществляются с помощью транспортных протоколов TCP и UDP.
TCP протокол гарантированно осуществляет доставку запроса и целостность его передачи. Он заранее проверяет доступность узла перед отправкой пакета. А если по пути целостность пакета будет нарушена, то TCP дополнит недостающие составляющие.
В общем, это протокол, который сделает все, чтобы ваш запрос корректно дошел до адресата.
Поэтому TCP самый распространенный транспортный протокол. Он используется когда пользователь серфит интернет, лазает по сайтам, сервисам, соц. сетям и т.д.
UDP протокол не имеет такой гарантированной передачи данных, как TCP. Он не проверяет доступность конечного узла перед отправкой и не восполняет пакет в случае его деградации. Если какой-то пакет или несколько пакетов по пути утеряны, то сообщение дойдет до адресата в таком неполном виде.
Зачем тогда нужен UDP?
Дело в том, что данный транспортный протокол имеет огромное преимущество перед TCP в скорости передачи данных. Поэтому UDP широко используется для пересылки голосовых и видео пакетов в реальном времени. А именно, в ip-телефонии и видео звонках.
К примеру, любой звонок через WhatsApp или Viber использует транспортный протокол UDP. Также и при видео звонках, например, через Skype или те же мессенджеры WhatsApp и Viber.
Именно потому что UDP не гарантирует абсолютную передачу данных и целостность передаваемого пакета, зачастую возникают проблемы при звонках через интернет.
Это прерывание голоса, запаздывание, эхо или робоголос.
Данная проблема возникает из-за нагруженного интернет канала, двойного NATа или радиоканала.
Хорошо бы конечно в таких случаях использовать TCP, но увы, для передачи голоса необходима мгновенная передача целостных пакетов, а для этой задачи идеально подходит UDP.
Чтобы не возникало проблем с использованием UDP протокола, нужно просто организовать качественный интернет канал. А также настроить на роутере выделенную полосу для UDP, чтобы нагрузка с других устройств, которые используют TCP не мешала работе транспортного протокола UDP.
На этом всё.
Я не стал нагромождать статью и копипастить сюда научные определения всех используемых терминов, кому это необходимо, просто загуглите.
Я постарался собрать воедино 7 самых важных, на мой взгляд, моментов, знание которых, помогут юному “айтишнику” пройти первые этапы собеседования на “айтишные” должности или хотя бы просто дать понять работодателю, что вы явно знаете больше, чем рядовой юзер.
Изучайте, конспектируйте. Надеюсь, что статья многим принесет пользу.