Основы компьютерных сетей. Тема №1. Основные сетевые термины и сетевые модели
Всем привет. На днях возникла идея написать статьи про основы компьютерных сетей, разобрать работу самых важных протоколов и как строятся сети простым языком. Заинтересовавшихся приглашаю под кат.
Немного оффтопа: Приблизительно месяц назад сдал экзамен CCNA (на 980/1000 баллов) и осталось много материала за год моей подготовки и обучения. Учился я сначала в академии Cisco около 7 месяцев, а оставшееся время вел конспекты по всем темам, которые были мною изучены. Также консультировал многих ребят в области сетевых технологий и заметил, что многие наступают на одни и те же грабли, в виде пробелов по каким-то ключевым темам. На днях пару ребят попросили меня объяснить, что такое сети и как с ними работать. В связи с этим решил максимально подробно и простым языком описать самые ключевые и важные вещи. Статьи будут полезны новичкам, которые только встали на путь изучения. Но, возможно, и бывалые сисадмины подчеркнут из этого что-то полезное. Так как я буду идти по программе CCNA, это будет очень полезно тем людям, которые готовятся к сдаче. Можете держать статьи в виде шпаргалок и периодически их просматривать. Я во время обучения делал конспекты по книгам и периодически читал их, чтобы освежать знания.
Вообще хочу дать всем начинающим совет. Моей первой серьезной книгой, была книга Олиферов «Компьютерные сети». И мне было очень тяжело читать ее. Не скажу, что все было тяжело. Но моменты, где детально разбиралось, как работает MPLS или Ethernet операторского класса, вводило в ступор. Я читал одну главу по несколько часов и все равно многое оставалось загадкой. Если вы понимаете, что какие то термины никак не хотят лезть в голову, пропустите их и читайте дальше, но ни в коем случае не отбрасывайте книгу полностью. Это не роман или эпос, где важно читать по главам, чтобы понять сюжет. Пройдет время и то, что раньше было непонятным, в итоге станет ясно. Здесь прокачивается «книжный скилл». Каждая следующая книга, читается легче предыдущей книги. К примеру, после прочтения Олиферов «Компьютерные сети», читать Таненбаума «Компьютерные сети» легче в несколько раз и наоборот. Потому что новых понятий встречается меньше. Поэтому мой совет: не бойтесь читать книги. Ваши усилия в будущем принесут плоды. Заканчиваю разглагольствование и приступаю к написанию статьи.
Вот сами темы
P.S. Возможно, со временем список дополнится.
Итак, начнем с основных сетевых терминов.
Что такое сеть? Это совокупность устройств и систем, которые подключены друг к другу (логически или физически) и общающихся между собой. Сюда можно отнести сервера, компьютеры, телефоны, маршрутизаторы и так далее. Размер этой сети может достигать размера Интернета, а может состоять всего из двух устройств, соединенных между собой кабелем. Чтобы не было каши, разделим компоненты сети на группы:
1) Оконечные узлы: Устройства, которые передают и/или принимают какие-либо данные. Это могут быть компьютеры, телефоны, сервера, какие-то терминалы или тонкие клиенты, телевизоры.
2) Промежуточные устройства: Это устройства, которые соединяют оконечные узлы между собой. Сюда можно отнести коммутаторы, концентраторы, модемы, маршрутизаторы, точки доступа Wi-Fi.
3) Сетевые среды: Это те среды, в которых происходит непосредственная передача данных. Сюда относятся кабели, сетевые карточки, различного рода коннекторы, воздушная среда передачи. Если это медный кабель, то передача данных осуществляется при помощи электрических сигналов. У оптоволоконных кабелей, при помощи световых импульсов. Ну и у беспроводных устройств, при помощи радиоволн.
Посмотрим все это на картинке:
На данный момент надо просто понимать отличие. Детальные отличия будут разобраны позже.
Теперь, на мой взгляд, главный вопрос: Для чего мы используем сети? Ответов на этот вопрос много, но я освещу самые популярные, которые используются в повседневной жизни:
1) Приложения: При помощи приложений отправляем разные данные между устройствами, открываем доступ к общим ресурсам. Это могут быть как консольные приложения, так и приложения с графическим интерфейсом.
2) Сетевые ресурсы: Это сетевые принтеры, которыми, к примеру, пользуются в офисе или сетевые камеры, которые просматривает охрана, находясь в удаленной местности.
3) Хранилище: Используя сервер или рабочую станцию, подключенную к сети, создается хранилище доступное для других. Многие люди выкладывают туда свои файлы, видео, картинки и открывают общий доступ к ним для других пользователей. Пример, который на ходу приходит в голову, — это google диск, яндекс диск и тому подобные сервисы.
4) Резервное копирование: Часто, в крупных компаниях, используют центральный сервер, куда все компьютеры копируют важные файлы для резервной копии. Это нужно для последующего восстановления данных, если оригинал удалился или повредился. Методов копирования огромное количество: с предварительным сжатием, кодированием и так далее.
5) VoIP: Телефония, работающая по протоколу IP. Применяется она сейчас повсеместно, так как проще, дешевле традиционной телефонии и с каждым годом вытесняет ее.
Из всего списка, чаще всего многие работали именно с приложениями. Поэтому разберем их более подробно. Я старательно буду выбирать только те приложения, которые как-то связаны с сетью. Поэтому приложения типа калькулятора или блокнота, во внимание не беру.
1) Загрузчики. Это файловые менеджеры, работающие по протоколу FTP, TFTP. Банальный пример — это скачивание фильма, музыки, картинок с файлообменников или иных источников. К этой категории еще можно отнести резервное копирование, которое автоматически делает сервер каждую ночь. То есть это встроенные или сторонние программы и утилиты, которые выполняют копирование и скачивание. Данный вид приложений не требует прямого человеческого вмешательства. Достаточно указать место, куда сохранить и скачивание само начнется и закончится.
Скорость скачивания зависит от пропускной способности. Для данного типа приложений это не совсем критично. Если, например, файл будет скачиваться не минуту, а 10, то тут только вопрос времени, и на целостности файла это никак не скажется. Сложности могут возникнуть только когда нам надо за пару часов сделать резервную копию системы, а из-за плохого канала и, соответственно, низкой пропускной способности, это занимает несколько дней. Ниже приведены описания самых популярных протоколов данной группы:
FTP- это стандартный протокол передачи данных с установлением соединения. Работает по протоколу TCP (этот протокол в дальнейшем будет подробно рассмотрен). Стандартный номер порта 21. Чаще всего используется для загрузки сайта на веб-хостинг и выгрузки его. Самым популярным приложением, работающим по этому протоколу — это Filezilla. Вот так выглядит само приложение:

TFTP- это упрощенная версия протокола FTP, которая работает без установления соединения, по протоколу UDP. Применяется для загрузки образа бездисковыми рабочими станциями. Особенно широко используется устройствами Cisco для той же загрузки образа и резервных копий.
Интерактивные приложения. Приложения, позволяющие осуществить интерактивный обмен. Например, модель «человек-человек». Когда два человека, при помощи интерактивных приложений, общаются между собой или ведут общую работу. Сюда относится: ICQ, электронная почта, форум, на котором несколько экспертов помогают людям в решении вопросов. Или модель «человек-машина». Когда человек общается непосредственно с компьютером. Это может быть удаленная настройка базы, конфигурация сетевого устройства. Здесь, в отличие от загрузчиков, важно постоянное вмешательство человека. То есть, как минимум, один человек выступает инициатором. Пропускная способность уже более чувствительна к задержкам, чем приложения-загрузчики. Например, при удаленной конфигурации сетевого устройства, будет тяжело его настраивать, если отклик от команды будет в 30 секунд.
Приложения в реальном времени. Приложения, позволяющие передавать информацию в реальном времени. Как раз к этой группе относится IP-телефония, системы потокового вещания, видеоконференции. Самые чувствительные к задержкам и пропускной способности приложения. Представьте, что вы разговариваете по телефону и то, что вы говорите, собеседник услышит через 2 секунды и наоборот, вы от собеседника с таким же интервалом. Такое общение еще и приведет к тому, что голоса будут пропадать и разговор будет трудноразличимым, а в видеоконференция превратится в кашу. В среднем, задержка не должна превышать 300 мс. К данной категории можно отнести Skype, Lync, Viber (когда совершаем звонок).
Теперь поговорим о такой важной вещи, как топология. Она делится на 2 большие категории: физическая и логическая. Очень важно понимать их разницу. Итак, физическая топология — это как наша сеть выглядит. Где находятся узлы, какие сетевые промежуточные устройства используются и где они стоят, какие сетевые кабели используются, как они протянуты и в какой порт воткнуты. Логическая топология — это каким путем будут идти пакеты в нашей физической топологии. То есть физическая — это как мы расположили устройства, а логическая — это через какие устройства будут проходить пакеты.
Теперь посмотрим и разберем виды топологии:
1) Топология с общей шиной (англ. Bus Topology)

Одна из первых физических топологий. Суть состояла в том, что к одному длинному кабелю подсоединяли все устройства и организовывали локальную сеть. На концах кабеля требовались терминаторы. Как правило — это было сопротивление на 50 Ом, которое использовалось для того, чтобы сигнал не отражался в кабеле. Преимущество ее было только в простоте установки. С точки зрения работоспособности была крайне не устойчивой. Если где-то в кабеле происходил разрыв, то вся сеть оставалась парализованной, до замены кабеля.
2) Кольцевая топология (англ. Ring Topology)

В данной топологии каждое устройство подключается к 2-ум соседним. Создавая, таким образом, кольцо. Здесь логика такова, что с одного конца компьютер только принимает, а с другого только отправляет. То есть, получается передача по кольцу и следующий компьютер играет роль ретранслятора сигнала. За счет этого нужда в терминаторах отпала. Соответственно, если где-то кабель повреждался, кольцо размыкалось и сеть становилась не работоспособной. Для повышения отказоустойчивости, применяют двойное кольцо, то есть в каждое устройство приходит два кабеля, а не один. Соответственно, при отказе одного кабеля, остается работать резервный.
3) Топология звезда (англ. Star Topology)

Все устройства подключаются к центральному узлу, который уже является ретранслятором. В наше время данная модель используется в локальных сетях, когда к одному коммутатору подключаются несколько устройств, и он является посредником в передаче. Здесь отказоустойчивость значительно выше, чем в предыдущих двух. При обрыве, какого либо кабеля, выпадает из сети только одно устройство. Все остальные продолжают спокойно работать. Однако если откажет центральное звено, сеть станет неработоспособной.
4)Полносвязная топология (англ. Full-Mesh Topology)

Все устройства связаны напрямую друг с другом. То есть с каждого на каждый. Данная модель является, пожалуй, самой отказоустойчивой, так как не зависит от других. Но строить сети на такой модели сложно и дорого. Так как в сети, в которой минимум 1000 компьютеров, придется подключать 1000 кабелей на каждый компьютер.
5)Неполносвязная топология (англ. Partial-Mesh Topology)
Как правило, вариантов ее несколько. Она похожа по строению на полносвязную топологию. Однако соединение построено не с каждого на каждый, а через дополнительные узлы. То есть узел A, связан напрямую только с узлом B, а узел B связан и с узлом A, и с узлом C. Так вот, чтобы узлу A отправить сообщение узлу C, ему надо отправить сначала узлу B, а узел B в свою очередь отправит это сообщение узлу C. В принципе по этой топологии работают маршрутизаторы. Приведу пример из домашней сети. Когда вы из дома выходите в Интернет, у вас нет прямого кабеля до всех узлов, и вы отправляете данные своему провайдеру, а он уже знает куда эти данные нужно отправить.
6) Смешанная топология (англ. Hybrid Topology)

Самая популярная топология, которая объединила все топологии выше в себя. Представляет собой древовидную структуру, которая объединяет все топологии. Одна из самых отказоустойчивых топологий, так как если у двух площадок произойдет обрыв, то парализована будет связь только между ними, а все остальные объединенные площадки будут работать безотказно. На сегодняшний день, данная топология используется во всех средних и крупных компаниях.
И последнее, что осталось разобрать — это сетевые модели. На этапе зарождения компьютеров, у сетей не было единых стандартов. Каждый вендор использовал свои проприетарные решения, которые не работали с технологиями других вендоров. Конечно, оставлять так было нельзя и нужно было придумывать общее решение. Эту задачу взвалила на себя международная организация по стандартизации (ISO — International Organization for Standartization). Они изучали многие, применяемые на то время, модели и в результате придумали модель OSI, релиз которой состоялся в 1984 году. Проблема ее была только в том, что ее разрабатывали около 7 лет. Пока специалисты спорили, как ее лучше сделать, другие модели модернизировались и набирали обороты. В настоящее время модель OSI не используют. Она применяется только в качестве обучения сетям. Мое личное мнение, что модель OSI должен знать каждый уважающий себя админ как таблицу умножения. Хоть ее и не применяют в том виде, в каком она есть, принципы работы у всех моделей схожи с ней.

Состоит она из 7 уровней и каждый уровень выполняет определенную ему роль и задачи. Разберем, что делает каждый уровень снизу вверх:
1) Физический уровень (Physical Layer): определяет метод передачи данных, какая среда используется (передача электрических сигналов, световых импульсов или радиоэфир), уровень напряжения, метод кодирования двоичных сигналов.
2) Канальный уровень (Data Link Layer): он берет на себя задачу адресации в пределах локальной сети, обнаруживает ошибки, проверяет целостность данных. Если слышали про MAC-адреса и протокол «Ethernet», то они располагаются на этом уровне.
3) Сетевой уровень (Network Layer): этот уровень берет на себя объединения участков сети и выбор оптимального пути (т.е. маршрутизация). Каждое сетевое устройство должно иметь уникальный сетевой адрес в сети. Думаю, многие слышали про протоколы IPv4 и IPv6. Эти протоколы работают на данном уровне.
4) Транспортный уровень (Transport Layer): Этот уровень берет на себя функцию транспорта. К примеру, когда вы скачиваете файл с Интернета, файл в виде сегментов отправляется на Ваш компьютер. Также здесь вводятся понятия портов, которые нужны для указания назначения к конкретной службе. На этом уровне работают протоколы TCP (с установлением соединения) и UDP (без установления соединения).
5) Сеансовый уровень (Session Layer): Роль этого уровня в установлении, управлении и разрыве соединения между двумя хостами. К примеру, когда открываете страницу на веб-сервере, то Вы не единственный посетитель на нем. И вот для того, чтобы поддерживать сеансы со всеми пользователями, нужен сеансовый уровень.
6) Уровень представления (Presentation Layer): Он структурирует информацию в читабельный вид для прикладного уровня. Например, многие компьютеры используют таблицу кодировки ASCII для вывода текстовой информации или формат jpeg для вывода графического изображения.
7) Прикладной уровень (Application Layer): Наверное, это самый понятный для всех уровень. Как раз на этом уроне работают привычные для нас приложения — e-mail, браузеры по протоколу HTTP, FTP и остальное.
Самое главное помнить, что нельзя перескакивать с уровня на уровень (Например, с прикладного на канальный, или с физического на транспортный). Весь путь должен проходить строго с верхнего на нижний и с нижнего на верхний. Такие процессы получили название инкапсуляция (с верхнего на нижний) и деинкапсуляция (с нижнего на верхний). Также стоит упомянуть, что на каждом уровне передаваемая информация называется по-разному.
На прикладном, представления и сеансовым уровнях, передаваемая информация обозначается как PDU (Protocol Data Units). На русском еще называют блоки данных, хотя в моем круге их называют просто данные).
Информацию транспортного уровня называют сегментами. Хотя понятие сегменты, применимо только для протокола TCP. Для протокола UDP используется понятие — датаграмма. Но, как правило, на это различие закрывают глаза.
На сетевом уровне называют IP пакеты или просто пакеты.
И на канальном уровне — кадры. С одной стороны это все терминология и она не играет важной роли в том, как вы будете называть передаваемые данные, но для экзамена эти понятия лучше знать. Итак, приведу свой любимый пример, который помог мне, в мое время, разобраться с процессом инкапсуляции и деинкапусуляции:
1) Представим ситуацию, что вы сидите у себя дома за компьютером, а в соседней комнате у вас свой локальный веб-сервер. И вот вам понадобилось скачать файл с него. Вы набираете адрес страницы вашего сайта. Сейчас вы используете протокол HTTP, которые работает на прикладном уровне. Данные упаковываются и спускаются на уровень ниже.
2) Полученные данные прибегают на уровень представления. Здесь эти данные структурируются и приводятся в формат, который сможет быть прочитан на сервере. Запаковывается и спускается ниже.
3) На этом уровне создается сессия между компьютером и сервером.
4) Так как это веб сервер и требуется надежное установление соединения и контроль за принятыми данными, используется протокол TCP. Здесь мы указываем порт, на который будем стучаться и порт источника, чтобы сервер знал, куда отправлять ответ. Это нужно для того, чтобы сервер понял, что мы хотим попасть на веб-сервер (стандартно — это 80 порт), а не на почтовый сервер. Упаковываем и спускаем дальше.
5) Здесь мы должны указать, на какой адрес отправлять пакет. Соответственно, указываем адрес назначения (пусть адрес сервера будет 192.168.1.2) и адрес источника (адрес компьютера 192.168.1.1). Заворачиваем и спускаем дальше.
6) IP пакет спускается вниз и тут вступает в работу канальный уровень. Он добавляет физические адреса источника и назначения, о которых подробно будет расписано в последующей статье. Так как у нас компьютер и сервер в локальной среде, то адресом источника будет являться MAC-адрес компьютера, а адресом назначения MAC-адрес сервера (если бы компьютер и сервер находились в разных сетях, то адресация работала по-другому). Если на верхних уровнях каждый раз добавлялся заголовок, то здесь еще добавляется концевик, который указывает на конец кадра и готовность всех собранных данных к отправке.
7) И уже физический уровень конвертирует полученное в биты и при помощи электрических сигналов (если это витая пара), отправляет на сервер.
Процесс деинкапсуляции аналогичен, но с обратной последовательностью:
1) На физическом уровне принимаются электрические сигналы и конвертируются в понятную битовую последовательность для канального уровня.
2) На канальном уровне проверяется MAC-адрес назначения (ему ли это адресовано). Если да, то проверяется кадр на целостность и отсутствие ошибок, если все прекрасно и данные целы, он передает их вышестоящему уровню.
3) На сетевом уровне проверяется IP адрес назначения. И если он верен, данные поднимаются выше. Не стоит сейчас вдаваться в подробности, почему у нас адресация на канальном и сетевом уровне. Это тема требует особого внимания, и я подробно объясню их различие позже. Главное сейчас понять, как данные упаковываются и распаковываются.
4) На транспортном уровне проверяется порт назначения (не адрес). И по номеру порта, выясняется какому приложению или сервису адресованы данные. У нас это веб-сервер и номер порта — 80.
5) На этом уровне происходит установление сеанса между компьютером и сервером.
6) Уровень представления видит, как все должно быть структурировано и приводит информацию в читабельный вид.
7) И на этом уровне приложения или сервисы понимают, что надо выполнить.
Много было написано про модель OSI. Хотя я постарался быть максимально краток и осветить самое важное. На самом деле про эту модель в Интернете и в книгах написано очень много и подробно, но для новичков и готовящихся к CCNA, этого достаточно. Из вопросов на экзамене по данной модели может быть 2 вопроса. Это правильно расположить уровни и на каком уровне работает определенный протокол.
Как было написано выше, модель OSI в наше время не используется. Пока разрабатывалась эта модель, все большую популярность получал стек протоколов TCP/IP. Он был значительно проще и завоевал быструю популярность.
Вот так этот стек выглядит:

Как видно, он отличается от OSI и даже сменил название некоторых уровней. По сути, принцип у него тот же, что и у OSI. Но только три верхних уровня OSI: прикладной, представления и сеансовый объединены у TCP/IP в один, под названием прикладной. Сетевой уровень сменил название и называется — Интернет. Транспортный остался таким же и с тем же названием. А два нижних уровня OSI: канальный и физический объединены у TCP/IP в один с названием — уровень сетевого доступа. Стек TCP/IP в некоторых источниках обозначают еще как модель DoD (Department of Defence). Как говорит википедия, была разработана Министерством обороны США. Этот вопрос встретился мне на экзамене и до этого я про нее ничего не слышал. Соответственно вопрос: «Как называется сетевой уровень в модели DoD?», ввел меня в ступор. Поэтому знать это полезно.
Было еще несколько сетевых моделей, которые, какое то время держались. Это был стек протоколов IPX/SPX. Использовался с середины 80-х годов и продержался до конца 90-х, где его вытеснила TCP/IP. Был реализован компанией Novell и являлся модернизированной версией стека протоколов Xerox Network Services компании Xerox. Использовался в локальных сетях долгое время. Впервые IPX/SPX я увидел в игре «Казаки». При выборе сетевой игры, там предлагалось несколько стеков на выбор. И хоть выпуск этой игры был, где то в 2001 году, это говорило о том, что IPX/SPX еще встречался в локальных сетях.
Еще один стек, который стоит упомянуть — это AppleTalk. Как ясно из названия, был придуман компанией Apple. Создан был в том же году, в котором состоялся релиз модели OSI, то есть в 1984 году. Продержался он совсем недолго и Apple решила использовать вместо него TCP/IP.
Также хочу подчеркнуть одну важную вещь. Token Ring и FDDI — не сетевые модели! Token Ring — это протокол канального уровня, а FDDI это стандарт передачи данных, который как раз основывается на протоколе Token Ring. Это не самая важная информация, так как эти понятия сейчас не встретишь. Но главное помнить о том, что это не сетевые модели.
Вот и подошла к концу статья по первой теме. Хоть и поверхностно, но было рассмотрено много понятий. Самые ключевые будут разобраны подробнее в следующих статьях. Надеюсь теперь сети перестанут казаться чем то невозможным и страшным, а читать умные книги будет легче). Если я что-то забыл упомянуть, возникли дополнительные вопросы или у кого есть, что дополнить к этой статье, оставляйте комментарии, либо спрашивайте лично. Спасибо за прочтение. Буду готовить следующую тему.
- Системное администрирование
- IT-инфраструктура
- Cisco
- Сетевые технологии
Сети для начинающего 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 самых важных, на мой взгляд, моментов, знание которых, помогут юному “айтишнику” пройти первые этапы собеседования на “айтишные” должности или хотя бы просто дать понять работодателю, что вы явно знаете больше, чем рядовой юзер.
Изучайте, конспектируйте. Надеюсь, что статья многим принесет пользу.
10 типов подключения к интернету. Выбираем оптимальный вариант
Качество соединения, скорость домашнего интернета и даже его стоимость по тарифу зависит от типа подключения. Рекомендуем выяснить особенности всех технологий и определиться с видом подключения к интернету до выбора провайдера и тарифа, чтобы в дальнейшем воспользоваться всеми его преимуществами.
В статье рассматриваем типы подключения к интернету, их плюсы и минусы. Даём рекомендации, какому варианту подключения интернета отдать предпочтение.
Все виды подключения к сети: проводные и беспроводные.
При проводном соединении функциональные возможности передачи данных ограничены физическими свойствами кабеля. Он может быть волоконно-оптическим или медным.
При беспроводном подключении сигнал интернета передается по радиоканалам высокочастотных диапазонов, а также при помощи лазерного, оптического и инфракрасного излучения. Регламентируется работа беспроводного подключения Wi-Fi протоколом IEEE 802.11Х.
В ближайшей перспективе в крупных городах все медные кабельные каналы связи планируется перевести на оптоволоконные, но пока это не произошло, рассмотрим все существующие варианты проводного подключения.
Проводные типы подключения:
Коммутируемый доступ или Dial-Up
Устаревший тип подключения, который был популярен в 90-х. Коммутируемый доступ до сих пор иногда используется в отдалённых населённых пунктах, где проведена обычная телефонная линия, а широкополосный интернет в силу определенных причин провести нельзя. Для подключения нужен только модем.
Скорость на таком соединении очень медленная для современного пользователя: в среднем не более 60 КБит/сек. Второй существенный недостаток — при занятости телефонной линии нет возможности пользоваться интернетом: или разговариваешь по телефону, или сидишь в интернете.
ADSL или асимметричная цифровая абонентская линия
При этом типе также используется телефонная линия, при этом есть важные отличия: можно одновременно звонить по телевону и выходить в сеть, и скорость гораздо выше — до 24 Мбит/c. При этом нагрузка на линию распределяется асимметрично — входящее соединение происходит быстрее, чем исходящее. Это плохо отражается на скорости отправки данных.
Для подключения потребуется телефонный провод, модем и сплиттер.
Этот переходный вариант подключения к сети интернет между коммутируемым доступом и подключением по технологии FTTb. К ней мы еще вернемся.
Еще выделяют VDSL или сверхвысокоскоростную цифровую абонентскую линию. Такой тип интернета использует медную витую пару на высокой частоте для обеспечения высокоскоростного интернета.
DOCSIS
Этот тип подключения предоставляет интернет по телевизионному (коаксиальному) кабелю. Такой тип подключения известен только жителям спальных и отдаленных районов Санкт-Петербурга, Москвы и Екатеринбурга, где нет возможности провести дополнительные провода в дом или ни один из интернет-провайдеров не работает в доме.
Для подключения необходим кабельный модем: один выход для провода к ПК для раздачи интернета, другой к ТВ. Просмотр ТВ-передач не влияет на работу интернета. Скорость при DOCSIS не превышает до 42 Мбит/c.
GPON
Самый современный из проводных типов подключения к интернету, но доступен не везде.
При GPON подключении используется специальное оптоволокно, которое устанавливается в квартире пользователя. Скорость сигнала до 2,5 Гбит/с и очень низкий пинг — то, что нужно для отличной онлайн-игры или стрима.
Для подключения требуется специальный оптический модем — ONT. Это устройство обычно предоставляет сам провайдер. Такой модем уже оснащен модулем, поэтому никаких лишних проводов в квартире не будет.
FTTb
Это самый распространённый тип подключения в многоэтажках.
Интернет идёт по оптоволоконной линии. При этом виде подключения кабель проводится только до дома, а в каждую квартиру разводится от коммутатора при помощи витой пары. У этой технологии отличное соотношение цена/качество. Пользователь может подключить пакет услуг (интернет, ТВ и телефония), при этом скорость доступа может достигать до 1000 Мбит/с.
Беспроводные типы подключения:
Wi-Fi
Главное преимущество Wi-Fi — передача данных происходит без проводов, по воздуху, с помощью невидимых радиоволн.
Технология только создает локальную сеть, в которой разные устройства (ноутбуки, принтеры, смартфоны) могут обмениваться данными без выхода в интернет. И только при подключении к провайдеру (через роутер, модем, точку доступа) устройства этой сети получают доступ в интернет. Количество подключаемых устройств ограничивается техническими параметрами роутера. Скорость будет зависеть от количества подключенных устройств, их удаленности от роутера и его расположения.
Мобильный интернет
Обычно пользователи интернета выбирают этот тип подключения, если нет технической возможности подключить интернет через кабель или нет желания приобретать дополнительные услуги. Основные недостатки мобильного интернета — высокая стоимость тарифов, а показатели скорости низкие, они в сотни раз меньше, чем при проводной связи. Преимущество — хорошее покрытие территории мобильными операторами и нет привязки к месту, хотя сигнал может быть нестабильным в зависимости от местности.
Спутниковый интернет
Самый дорогой среди всех вариантов подключения. Не подойдет для любителей поиграть онлайн, так как часто имеет очень высокий пинг (250 мс и выше). Для организации необходимо приобрести дорогое оборудование, которое не получится самостоятельно установить. Обычно спутниковый интернет выбирают в крайнем случае, если другие варианты подключения невозможны. Спутниковый интернет часто подключают в глухой местности, где нельзя провести оптоволокно или даже подключить мобильный интернет.

Радиоинтернет
Чтобы настроить радиоинтернет, дополнительно понадобится антенна и беспроводная точка доступа, организованная провайдером. Антенна ставится на возвышенности (столб, крыша), а её рупор должен быть точно направлен на источник сигнала. Дальность действия — до 50 км.
Подобно спутниковому типу подключения, к подобному варианту прибегают в крайнем случае. Стоимость оборудования высока, а природные явления могут стать причиной помех. Тем не менее, при этом варианте отличная скорость доступа — до 1 Гбит/с.
Какой вид подключения к интернету лучше выбрать
Мы перечислили все возможные виды подключения к интернету. Каждый из способов подключения имеет свои достоинства и недостатки, поэтому рекомендуем выбирать доступ к сети в зависимости от собственных потребностей и предпочтений. Настроить интернет можно через спутники связи, кабельное телевидение, сотовую связь, специальные оптико-волоконные линии и даже через телефонную линию и радиоантенну.
В крупных городах провайдеры предоставляют клиентам большой выбор технологий применения интернета, и из множества вариантов можно выбрать лучшее предложение. В небольших населенных пунктах услуг меньше, выбор небольшой и приходится отдавать предпочтение тому, что есть.

Если вы живете в городе, интернет-провайдер подключит вас по кабелю. Это самый недорогой тип подключения для жителей многоквартирного дома. Для городской квартиры оптимальный вариант – оптоволоконный интернет (GPON или FTTb), вы получите возможность пользоваться цифровым ТВ через интернет, технологией «умный дом», а также телефоном.
В случае использования телефонного кабеля оптимальным вариантом может стать ADSL подключение. Его скорости достаточно для запуска большинства игр в онлайн режиме, просмотра видео и скачивания файлов разного размера.
Спутниковый и мобильный типы подключения для дома следует рассматривать, если нет никакой другой оптимальной альтернативы.
Где выбрать и как подключить интернет
А подключить домашний интернет и ТВ по выгодному тарифу возможно на ДомИнтернет. Введите свой адрес (город, улица и номер дома) в форму ниже и получите подборку актуальных тарифов.
Введите адрес и получите список доступных провайдеров и тарифов
Компьютерные сети for dummies
После прочтения такого материала как «PHP 7 Д. Котерова», или «byte Of Python», может возникнуть один очень интересный вопрос, и нет, он не будет связан с языком, о котором была книга, он будет взят как правило из первых глав книги, которые обычно посвящаются «устройству интернета», как правило такие книги сильно глубоко пользователя не погружают, и оставляют его на уровне прикладных данных, то есть не дальше чем протокол HTTP, и работа TCP/IP. Но как всем нам известно, есть очень «прожорливые» умы, которым одного только
Каждый из протоколов в идеале «ничего не знает» о том, какой протокол «стоит над ним»
совершено не хватит. Вариантов занять свою «прожорливость» уйма, и сегодня я расскажу об всех основных моментах компьютерных сетей, кратко.
Сначала то, к чему мы вернемся
Основные термины и понятия компьютерных сетей, грубо говоря, компьютерные сети, это обычные «сети», состоящие из конечных машины. Конечными машинами называться любые компьютеры в сети, которые хотят обмениваться данными.
Такие сети, как правило передают данные по физическим передатчикам, а именно (будут рассмотрены самые популярные/простые в понимании типы):
- Оптоволокно: наивысшая скорость передачи данных, за счет передачи данных с помощью светосигналов.
- Витая пара: более низкая скорость (зависит от типа), переда данных осуществляется с помощью электро сигналов, по восьми медным кабелям.

Но, как вы сами понимаете, это еще не все, не можем же мы напрямую через кабеля быть связаны с провайдерами, а те с провайдерами на уровень выше, и так далее. Нет, это не так, на самом деле, между конечными системами, провайдерами, и прочими узлами, есть специальные комутаторы и километры кабелей, про комутаторы — а именно маршрутизаторы, маршрутизаторы, это специальные блоки, вычислительные машины, которые имеют несколько входов/выходов (может быть и тем и тем, такие входы/выходы называют интерфейсами), и имеют у себя на борту таблицы, в которой описано 1 адрес в сети следующего маршрутизатора или самой конечной системы, для отправки данных на конечную систему на которую сделан запрос, 2 километраж (это не точное определения, там считается специальными единицами), 3 маска под сети (это не все, но в этой статье не будут подробно раскрываться маршрутизаторы).
Теперь сеть выглядит так.
Компьютеры выделенные цветом, хотят связаться друг с другом, на пути у них, есть несколько маршрутизаторов, и других компьютеров. Появляется вопрос, как же маршрутизатор узнает где именно конечная система, есть ли там по адресу маршрутизатор вообще, и какой путь длиннее, а еще на какой маршрутизатор, дальше отправить данные. На вопрос, о том где конечная система, и на какой маршрутизатор дальше отправит данные, отвечает адресация в сети, а именно IP адреса, прим: 192.168.0.1, маршрутизатор принимая данные которые ему пришли от компьютера, или от другого маршрутизатора, смотрит на все 4 блока адреса (блоки разделены точкой), допустим изначальный путь 176.123.82.129 данные приходят на маршрутизатор 176.123.82.130, к нему подключены два маршрутизатора, 176.123.82.120, 176.123.82.125, и один компьютер 176.123.82.129, это маршрутизатор посмотрит на свою таблицу адресов, и отправит данные туда где они «быстрее дойдут» до конечной системы, то есть, он сам туда отправить данные за счет IP в данных, и своей таблицы. Длина пути вычисляется с помощью, таблицы с «километражом» (не точно, ибо есть своя единица исчисления). С маршрутизаторами все, на самом деле они имеют еще очень много неточностей, и функций, но раскрывать их здесь подробно, я не буду, ибо это займет довольно много времени.
Что-же мы получаем в итоге? У нас есть сети, из конечных систем, провайдеров, они связаны между собой кабелями, но через переходники «маршрутизаторы», которые выполняют роль главный маршрутизаторов данных.
Не большое уточнения, «данные» это пакет данных, содержащий биты информации, порядок обработки такого «пакета» на маршрутизаторе, примерно так — приходит пакет, как правило пакет, это лишь часть всех данных которые передала конечная система, так вот, маршрутизатор делает обработку, достает заголовки сетевого уровня сети (об этом позже) обратно запаковывает пакет, от отправляет его по принципу который был описан выше. Уточню, маршрутизаторы, есть и те которые дожидаются когда прибудут все данные с конечной системой, и которые сразу отправляют данные, сразу, не дожидаясь остальных, но когда приходят остальные, он отправляет их туда же, куда отправил первые (все эти вычисления делает сам маршрутизатор, за счет заголовков в каждом отдельном пакете), а заниматься дальнейшей обработкой, и склеиванием пакетов должна конечная система на которую пришли пакеты, при этом если пакет был потерян, или произошла ошибка, маршрутизатор обязан прервать соединения, и повторить попытку.
Пятиуровневая модель сети TCP/IP
Как вы понимаете, чтобы все выше описанное работало верно, должен быть некий стандарт, этим де-факто стандартом является стек протоколов TCP/IP + уровень OSI.
Для начала немного терминов.
Что такое протокол? Протокол, это некое правила общения между двумя системами, самый травильный и популярный пример, это взаимодействие двух человек, допустим вы подходите в человеку, что вы обычно ему говорите? «Здравствуйте», человек обработает это, и ответит «Здравствуйте», после этого, как прошло соглашения об общении, вы спрашиваете «сколько времени», человек обработает это и ответит к примеру «14:00», после этого общения закончится на слова «благодарю» и «до свидания». Вот такой тип общения, и есть протокол, а именно из примера выше, у нас был почти что браузера, и хостинг, которые работают через HTTP TCP.
Что такое порт? Как вообще общаться компьютеры, через сети? Компьютеры общаются, через специальные приложения, так вот, эти приложения работают, через специальные интерфейсы «сокеты», для того чтобы, верно обработать веб-серверу HTTP запрос допустим, надо чтобы веб сервер вызвал процесс HTTP находящийся по порту 80, по такому порту заработает хостинг, чтобы веб сервер обработал TCP, надо обращаться с процессу с портом 443. То есть порт, это идентификатор процесса на конечной системе, чтобы к ней мог обратится сокет.
Что такое сокет? Один из самых частых вопросов новичков, сокет, это всего лишь интерфейс между протоколом прикладного уровня сети, и процессом компьютера, грубо говоря, есть два дома друг на против друга, в левом доме живет Иван, в правом Сергей, Иван захотел передать письмо Сергею, тогда Иван выходит из своего дома, через дверь (процесс на компьютере посылает пакет, через сокет, сокет в данном случае дверь), переходи через дорогу, тротуар (компьютерная сеть, маршрутизаторы), стучится в дверь, пожимает руку Сергею, и заходи через дверь к нему в дом (делает запрос «стучится», соглашается об работе «пожимает руку», и пакет приходит через сокет «дверь»).
Что такое процесс? Тут все просто, это «программа», которая работает на фоне, все время, допустим это HTTP обработчик.
Что такое соглашения упомянутое раньше? Это вовсе не обязательная процедура, соглашения двух процессов, об общении на таком порту, по такому IP, пример, браузер и веб сервер, начинают общение только после соглашения типа «трехсторонние рукопожатие», это когда вы вводите в адресной строке браузера адрес сайт, браузер сначала посылает запрос на сервер с вопросом «будем работать», сервер может ответить «да» или «нет», если да, то браузер посылает еще один запрос, и соединения начато, если нет, браузер пишет нам какую то ошибку, об запрете доступа. Замечу что не во всех компьютерных сетях, и протоколах обязательно какое либо «соглашения».
Вернемся к пятиуровневой модели сети, и так, пять уровней сети, это специальные уровни работы сети, которые позволяют легче вычислять на каком уровнен была обнаружена ошибка, это позволяет прикладному приложению, работать легче с данными из сети, и позволяет разработчикам, при надстройке своего протокола, не изучать высшую математику.
Приведу пример, используемый в книге «Компьютерные сети. Наглядно», с некоторой модификацией. Представим аэропорт, аэропорт по сути и есть сетевая модель, только в других реалиях, как работает аэропорт? Человек (будет выступать в роли пакета), заходит в здания, и подходит к кассе, на покупку билета, он покупает билет, и идет на регистрацию багажа, дойдя до регистрации багажа, регистрирует багаж, далее он идет на посадку на самолет, после чего самолет берет разгон на взлетной полосе, и уже потом летит (пакет «летит» по сети), после чего самолет приземляется, и происходит все описанное ранние, только в обратном порядке, а именно, самолет садиться на взлетной полосе, человек выходит из самолета, человек забирает багаж, и по желанию может подать жалобу на билет. А теперь представьте, если бы заместо каждой отдельной службы, была всего одна, которая занималась бы и посадкой на самолет, и продаже билетов, и так далее. Тут просто на ум в первую очередь приходят очереди, были бы огромные очереди. Все тоже самое происходит и с моделью сети.
Пример, у нас есть чат, одно приложения на нашем ПК, и другое на ПК нашего друга, мы отправляем сообщения, и происходит следующие, а именно, пакет собирается процессом клиентской (нашей) конечной машины, и через сокет отправляется на уровень модели под названием «транспортный», тот в свою очередь через протокол TCP составляет пакет (длина данных, данные. ), и отправляет пакет еще ниже на уровень, к сетевому уровню, который через протокол IP добавляет к пакету данные, об получателе пакета (все данные, кроме изначально передаваемых, называются заголовками, далее мы и будем их так называть) (эти данные генерирует, сам процесс), далее процесс отправляет пакет на канальный уровень, этот уровень отвечает за поиск и исправления ошибок, в сети, а так же маршрутизацию в локальной сети, к примеру WI-FI, канальный уровень в свою очередь отправляет на физический уровень, физический уровень, шифрует все данные, и отправляет их через интерфейс (порт в ПК, или через WI-Fi) туда, куда предусмотрел сетевой уровень, после этого на конечной машине получателя, идет обработка данных, а именно, физический уровень на получателе, расшифровывает данные, и передает их на канальный, тот тоже расшифровывает их (убирает свои заголовки, взяв все нужные данные), и отправляет данные на сетевой уровень, тот обрабатывает, верно ли взят адрес, все ли работает, забирает свои заголовки, и отдает данные на транспортный уровень, тот в свою очередь, окончательно все расшифровывает, и отдает данные нашему «чату».
Уточню, если наш процесс вдруг захочет взят только данные из сетевого уровня, то он не как не сможет проскочить первые два уровня, то есть ему надо будет расшифровать сначала физический уровень, отправить данные на канальный, и только после этого дойти до сетевого, перепрыгнуть уровни не возможно. Это важно! Оно понадобится для дальнейшего домашнего задания (ответ будет описан в конце).
Вот как выглядят уровни сети

Уточню, у новичков может возникнуть вопрос, что значат стрелки между уровнями сети? На самом деле, этих стрелок нет, на самом деле, правый столб уровней, работает с пакетом просто на том протоколе, на котором он был отправлен в левом столбе, он не как не общается с уровнем который отправил этот пакет, он работает лишь с пакетом, на том протоколе, на котором работал уровень левого столба.
А теперь подумайте о плюсах, к примеру главный плюс, это если допустим на канальном уровне произошла ошибка, нам будет не трудно это узнать, просто пропустив по сети специальный возвращаемый запрос. Еще плюс, если мы захотим надстроить свой протокол, нам не придется менять все уровни сети, мы просто сделаем протокол, который верно будет работать с текущем уровнем сети. Далее будет более подробно рассмотрен каждый уровень.
Но для начала вопрос — маршрутизаторы, работают ли они с уровнями сети? С какими именно? До каких доходят? Какие читают? (Ответ в конце).
Прикладной уровень, это вовсе не обязательный в использовании сети уровень, он в основном отвечает за форматирования данных которые приходят на транспортный уровень, на конечной системе приемнике, допустим пример это веб сервер и веб браузер, они на прямую работают с HTML разметкой, при разработке веба, решили что передавать на прямую верстку через транспортный уровень, не очень хорошо, и был создан протокол прикладного уровня HTTP, этот протокол специально создан для передачи HTML документов. Но как я упомянул ранее, прикладной уровень вовсе не обязателен, практически все чат программы, еще до популярности онлайн чатов, обменивались данными через транспортный уровень, без использования прикладного.
Транспортный уровень, этот уровень сети, отвечает за транспортировку данных по сети, то есть он принимает сами данные, их длину, и еще некоторые заголовки, и посылает все это на сетевой уровень, данный уровень, эталонно должен повторять отправку при сбое системы, и одним из самых популярных протоколов данного уровня, является TCP, за ним UPD.
Сетевой уровень, данный уровень отвечает за, адресацию пакета, на данном уровне сохраняется, IP адрес, маска под сети, есть еще некоторые заголовки, но мы их рассматривать не будем. Он отвечает за маршрутизацию пакета по сети.
Канальный уровень, данный уровень отвечает за маршрутизацию пакета в локальной сети, к примеру для определения на какой компьютер послать пакет, в сети WI-FI, а так же, этот уровень отвечает за обнаружения, исправления ошибок при передаче пакета.
Физический уровень, этот уровень на прямую работает с интерфейсами ПК, и занимается шифровкой данных, в разного типа частоты, подробно мы его рассматривать не будем.
Какие типы сетей бывают?
Типов сетей бывает много, начиная от прикладных, заканчивая низкоуровневыми. Я рассмотрю тут два самых популярных типа сетей, это «P2P», и «client server». Но для начала термины.
Что такое клиент? Клиент этот как правила конечная машина (или процесс конечной машины), который запрашивает данные у сервера.
Что такое сервер? Сервер, этот как правило конечная машина (или процесс конечной машины), который по запросу отдает запрашиваемые данные, или любой другой ответ, в общем сервером называется то, что обрабатывает запросы которые на него поступают, и отвечает на них.
P2P (расшифровка — «peer-to-peer»), это тип сетей когда в, в компьютерной сети, все конечные машины, могут быть и серверами, и клиентами, пример группа скайп, когда вы звоните кому-то, вы становитесь клиентом (ваш скайп), который запрашивает у сервера видео обмен (у скайпа того кому вы звоните), теперь вы отключились от звонка, и резко вам позвонил тот с кем вы только что говорили, теперь вы не клиент, а сервер (ваш скайп теперь не делает запросы, а отвечает на них), а скайп того кто позвонил, не сервер а клиент (не отвечает на запросы, а посылает их). Так то и работает P2P, когда все машины потенциально и клиенты, и сервера. Опять же, пример такой сети это — Скайп.

Клиент сервер, это тип сети, когда у нас строго на строго есть клиенты, и сервер/сервера. То есть вы всегда можете лишь посылать запросы, а сервер отвечать на них, так может работать чат, ваш клиент (процесс) посылает запросы, на проверку нету ли, новых сообщений в базе, если есть, сервер вернет их, если нет, вернет другой ответ, когда вы отправляете сообщения, то оно летит на сервер с запросом типа «сохрани в базу новое сообщения». То есть у нас есть группа клиентов, и сервер, если два клиента захотят связаться, все будет проходить через сервер, а клиенты только будут делать запросы на сервер, с просьбой «верни все новые сообщения», а сервер лишь будет отвечать. Пример такой сети, это самая прикладная на данный момент сеть, это веб. Все ваши действия в браузере, вроде ввода адреса в адресную строку, делают запрос на сервер, а сервер лишь отвечает. Ваш браузер не может стать сервером, а сервер не может стать браузером. (Браузер процесс клиента, сервер процесс сервера).

И лишь совсем чуть чуть, о безопасности в сетях.
Безопасность в компьютерных сетях, это сейчас одна из самых популярных тем, информационной безопасности, и коротенькой статьи не хватит чтобы объяснить даже самые основные аспекты. Тут я лишь расскажу о паре самых популярных уязвимостей, и атак на компьютерные сети.
Перехват пакетов, как говорилось раньше, конечные машины обмениваются данными, через пакеты, проходящие по сети. Как вы понимаете в реалиях нашего мира, есть очень много виртуальных структур, которые связаны с финансами к примеру, это могут быть и банки, и просто оплата книги в интернет магазине, не важно. Все ваши данные, в любом случае будут переданы другой конечной машине (серверу), и обработаны, так вот, суть данной уязвимости в том, что данные которые передаются к серверу, а именно пакеты, могут быть перехвачены.
Соответственно могут быть украдены пароли, или номера кредитных карт. Это могут быть что пакеты веб браузера, что пакеты какой либо P2P сети. Решить данную уязвимость, можно сделав между клиентами, и серверами обязательное соглашения о котором шла речь раньше
Что такое соглашения упомянутое раньше? Это вовсе не обязательная процедура, соглашения двух процессов, об общении на таком порту, по такому IP, пример, браузер и веб сервер, начинают общение только после соглашения типа «трехсторонние рукопожатие», это когда вы вводите в адресной строке браузера адрес сайт, браузер начала посылает запрос на сервер с вопросом «будем работать», сервер может ответить «да» или «нет», если да, то браузер посылает еще один запрос, и соединения начато, если нет, браузер пишет нам какую то ошибку, об запрете доступа. Замечу что не во всех компьютерных сетях, и протоколах обязательно какое либо «соглашения».
И в этом обязательном соглашении договариваться о работе по протоколу, который шифрует данные к примеру это HTTPS, а процесс его обработчика находиться по порту 443 (это порт и для TCP). То есть договориться общаться по порту 443, это TCP с наработкой, которая работает с HTTPS. Что такое HTTPS? Это протокол, а именно HTTP который шифруется специальной утилитой «SSL, TSL», а главное что шифруется такой пакет и на клиенте, и на сервере, соответственно перехватив такой пакет, злоумышленик не сможет ничего расшифровать, и обнаружить пароли и прочие…
DDoS атака, это атака, которая в данный момент является одной из самых популярных в компьютерных сетях. Работает она так, на больше количество конечных систем, путем рекламы, спама, и прочих методов рекламы, устанавливается вредоносное программное обеспечение(процесс), которое не видно, и работает он как правило без каких либо действий пользователя, в фоновом режиме, в определенный час «Ч», все компьютеры зараженные данным процессом, начинают посылать огромное количество запросов на определенный сервер, с целью выведения данного сервера, или маршрутизатора на пути к серверу, из строя. В запросе, как правило летит не много весовая (для обширности атаки), при этом максимально сложная информация для обработки сервером.
Атаки такого типа выводят сервера из строя, тем самым, что у сервера пропадает возможность отвечать на все более и более новые запросы, таким образом сервер падает, и стает не работа способным, так же, очень часты случаи что из строя выходи маршрутизатор на пути к серверу, ибо у них забивается буфер, и пропадает возможность дальше отправлять пакеты. Такие атаки как правило очень быстро исправляются, но, когда такие атаки происходят на какие то интернет биржи, или банки, что пользователи, что сами структуры, терпят убытки.
Защититься от такой атаки, можно анализируя количество запросов в секунду, от одного и того же IP. Минимальный при этом опасный размер атаки на данный момент это 100 тысяч запросов в секунду. Так же существует родитель DDoS атаки, а именно DoS, но на данный момент эта атака не так страшна, ибо мощность даже самых ушлых серверов, позволяет обработать столь не значительную нагрузку.
Заключения
В заключение я хочу сказать некоторые детали об этой статье.
- Ни в коем случае не используйте эту статью как учебник по компьютерным сетям, ибо это всего лишь «перекус» для сознания новичка в веб программировании, перед специальным изучением компьютерных сетей, не более того.
- В этой статье показаны лишь основы основами, все граничащие с основами моменты, были упущены, так же были показаны не все протоколы уровней сети.
- В этой статье, не рассказано о некоторых вещах, которые вы можете принять за основы, такие как буферизация маршрутизатора, или задержки передачи данных, или единицы измерения данных на разных уровнях, или подробная работа маршрутизатор, так далее и тому подобное… Они были упущены, ибо сложные, и могут запутать новичка.
UPD: статья рассчитана на тех, кто о сетях и знать ничего не знал, но хочет начать хотя бы не со сложных книг, а с общего обзора.