Как работаю локальные сети Ethernet( или Интернет).

Не судите строго, это очень сумбурная статья в которой я сам пытаюсь на пальцах понять как работает локальная сеть. Предложения и замечания приветствуются. Обратная связь на сайте работает )

Сетевая модель OSI.

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

УровеньПротокол
Прикладной ПО которое общаться по сети (например браузер) HTTP
ТранспортныйОС, СокетTCP \ UDP
СетевойIP
КанальныйСетевая карта которая принимает и обрабатывает электрические сигналы.PPP, MAC, Ethernet
ФизическийПровода, в нашем случае UTP кабельRJ-45

Физический уровень.

Самый низкий уровень в нашей модели это — физический. Тут все просто и понятно, это среда через которую передается информация. Например радио волны , провода, свет. В сетях Ethernet используется кабель UTP или FTP. Обжимается специальным коннектором и соединяет два устройства между собой. Например компьютер и ротер. Думаю вы все это приблизительно представляете:

Данные передаются с помощью электричества, но в целом нам это вообще не важно( как ). Главное что эти данные в цифровом виде, то есть последовательность из 0 и 1 (011000111101010101), один такой нолик или единица называется бит. Восемь бит — один байт, 1024 байта — 1 килобайт и т.д. То есть на Физическом уровне данные передаються в битах.

К стати сети стандарта Ethernet могут использовать и радио каналы и оптоволоконный кабель в котором проходит свет. Это всего лишь стандарт передачи данных а не физическая среда.

Канальный уровень.

Дальше у нас есть какое-то сетевой устройство которое соединено физически с другим сетевым устройство (сетевая карточка) и у них должны быть какие то правила как они общаются между собой. Мы же не общаемся по буквам. Мы говорим слова , складываем их в предложения. То есть сетевые устройства передаем какую то последовательность битов которая называется — кадр(Frame) друг другу.

Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне, формат кадров и протоколы управления доступом к среде — на канальном уровне модели OSI согласно стандартам IEEE 802

Википедия

Ват так вот выглядит кадр стандарта Ethernet:

Он может иметь длину от 64 байт до 1518 байт. И состоит из :

  • MAC адрес назначения.
  • MAC адрес источника.
  • EtherType используется для указания того, какой протокол в полезную нагрузку кадра(тип данных).
  • Данные.
  • Контрольная сумма для подтверждения правильного приема данных.

Давайте представим что три компьютера A, B, C соединены одним проводом (шиной) между собой. И компьютер A хочет отравить данные компьютеру C, но эти же данные(кадр) получит и компьютер B. Что бы компьютеры понимали что это кадр предназначен для него используется уникальный MAC адрес, который производитель присваивает сетевому устройству еще в процессе производства.

Механизм адресации уровня MAC называется физической адресацией или MAC-адресами. MAC-адрес представляет собой уникальный серийный номер (см. OUI), который присваивается каждому сетевому устройству (такому, как сетевая карта в компьютере или сетевой коммутатор) во время изготовления, и позволяет однозначно определить его среди других сетевых устройств в мире. Это гарантирует, что все устройства в сети будут иметь различные MAC-адреса (по аналогии с почтовыми адресами), что делает возможным доставку пакетов данных в место назначения

Википедия

Сейчас используется немного другой формат кадра Ethernet_802.3/802.2 (802.3 with LLC header) . Как понятно добавилось поля заголовка LLC. Logical Link Control — отвечает за согласование максимального размера кадра , скорости передач данных и т.д.

Если кому то требуется отправить сообщение сразу всем (broadcasting) то используется специальный адрес назначения FF-FF-FF-FF-FF-FF .

Сетевой уровень.

MAC адрес очень похож на почтовый адрес. Скажем вы живете на улице Мира и все оправляют письма на этот адрес. Но очень быстро, при развитии сетей поняли что одного адреса мало. А что будет если вы переехали ? И придумали IP адрес — уникальный числовой идентификатор устройства в компьютерной сети. То есть вы не только живете на улице Мира, но вас зовут Вася.

Пакет протокола IP состоит из заголовка и поля данных. Максимальная длина пакета 65 535 байт. Заголовок обычно имеет длину 20 байт и содержит информацию о сетевых адресах отправителя и получателя, о времени жизни пакета, о контрольной сумме и некоторых других. В поле данных IP- пакета находятся сообщения более высокого уровня.

Пробежимся по самым интересным полям:

  • Поле Номер версии (Version) занимает 4 бита, указывает версию протокола IP (IPv4 или IPv6).
  • Поле Общая длина (Total Length) занимает 2 байта и означает общую длину пакета с учетом заголовка и поля данных. Максимальная длина пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65 535 байт, однако в большинстве компьютеров и сетей такие большие пакеты не используются.
  • Поле Время жизни (Time to Live) занимает 1 байт и означает предельный срок, в течение которого пакет может перемещаться по сети. Время жизни данного пакета измеряется в секундах и задается источником передачи. На маршрутизаторах и в других узлах сети по истечении каждой секунды из текущего времени жизни вычитается единица; единица вычитается и в том случае, когда время задержки меньше секунды. Поскольку современные маршрутизаторы редко обрабатывают пакет дольше, чем за одну секунду, то время жизни можно считать равным максимальному числу узлов, которые разрешено пройти данному пакету до того, как он достигнет места назначения. Если параметр времени жизни станет нулевым до того, как пакет достигнет получателя, этот пакет будет уничтожен. Время жизни можно рассматривать как часовой механизм самоуничтожения. Значение этого поля изменяется при обработке заголовка IP-пакета.
  • Контрольная сумма (Header Checksum) занимает 2 байта и рассчитывается только по заголовку. Поскольку некоторые поля заголовка меняют свое значение в процессе передачи пакета по сети (например, время жизни), контрольная сумма проверяется и повторно рассчитывается при каждой обработке IP- заголовка.
  • Поля IP-адрес источника (Source IP Address) 
  • IP-адрес назначения (Destination IP Address) имеют одинаковую длину — 32 бита — и одинаковую структуру.

По сути мы получаем матрешку. Сетевой уровень передает в Канальный IP-пакет который помещается в Ethernet Frame в поле данных. То есть нам нужен и MAC адрес(который зашит в сетевую карточку) и IP адрес (указывается в ручную или с помощью DHCP).

ARP.

Вы хотите отправить пакет данных по сети Василию, но какой же у него физический адрес? Да, к сожалению мы его не знаем, но за нас уже придумали специальный запрос который передается всем членам сети с простым вопросом : Если ты Василий отправь свой MAC адрес, используя адрес FF-FF-FF-FF-FF-FF для широковещательной рассылки ( broadcasting ).

ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по IP-адресу другого компьютера.

Википедия

Для того что бы не устраивать балаган из одних ARP запросов в локальной сети, у всех сетевых устройств есть кэш где он запоминает пары IP —> MAC, который обновляется вроде каждые две минуты.

DHCP

Если сеть большая и состоит из много числа устройств. В ручную прописывать им IP адреса долго и можно даже ошибиться указав одинаковые имена. Вы должны помнить что IP адрес — уникальный. По этому придумали клиент-серверный протокол DHCP( сервер- то устройство которое всегда в сети и включено).

DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) — прикладной протокол, позволяющий сетевым устройствам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер». Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к так называемому серверу DHCP и получает от него нужные параметры.

Википедия.

Выглядит это так :

  • Устройство повесившись в сети выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он отправляет сообщение типа DHCPDISCOVER.
  • Получив сообщение от клиента, сервер определяет требуемую конфигурацию клиента в соответствии с указанными сетевым администратором настройками отправляет ему ответ DHCPOFFER.
  • Выбрав одну из конфигураций, предложенных DHCP-серверами, клиент отправляет запрос DHCP DHCPREQUEST.
  • Наконец, сервер подтверждает запрос и направляет это подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.

Современные неуправляемые коммутаторы.

Коммутатор (Switch) – это устройство, предназначенное подключать несколько сетевых устройств: компьютеров, ноутбуков, серверов, сетевых принтеров или даже самих коммутаторов. Имеет вид коробки с большим количеством сетевых LAN портов. Причем все эти порты изолированы друг от друга, по сути это соединение точка-точка.

Коммутаторы являются L2 устройствами, так как работают на канальном уровне. Они обрабатывают заголовок Ethernet кадра, а точнее MAC адреса получателя и отправителя, а также контрольную сумму. Каждый коммутатор составляет таблицу MAC адресов (CAM table) всех хостов, подключенных в его порты.

  • 1-ый компьютер отправляет пакет информации 5-му компу.
  • Пакет доходит до коммутатора;
  • Коммутатор смотрит в свою таблицу и видит, что она полностью пустая. Оно и понятно, его только включили;
  • Тогда коммутатор решает вопрос гениально – он отправляет данный пакет всем компьютерам, подключенным к портам. Но отправляет не просто так, а с запросом, чтобы ему пришел ответ от нужного устройства.
  • Все компьютеры принимают пакет и смотрят на адрес получателя. В итоге ответ приходит только от 5 компьютера, которому и отправлялся пакет.
  • Коммутатор смотрит, с какого порта пришел ответ. И записывает в таблицу коммутации к какому порту подключен 5 компьютер. В запись входит – номер порта и MAC-адрес устройства.

Транспортный уровень.

У вот мы с вами и подошли к транспортному уровни модели OSI. Для себя я считаю уто уже часть операционной системы которая дает понятные инструменты (API) для сетевого взаимодействия сервисов и процессов. Собственно сервисам и не нужно знать что то об уровнях нижележащих. Давайте пробежимся по этим примитивам:

SOCKETСоздать новый сокет (гнездо связи)
BINDСвязать локальный адрес с сокетом
LISTENОбъявить о желании принять соединение
ACCEPTПассивно установить соединение (ждать входящего соединение)
CONNECTАктивно установить соединение
SENDПослать данные
RECEIVEПолучить данные
CLOSEРазорвать соединение
Базовые операции сокета TCP

Думаю кто знаком с программирование и использовал сеть уже заметили знакомые слова)) Операционная система для каждого сервиса создает сокет, это и есть транспортный уровень.

Интерфейс сокета Беркли — API, позволяющий реализовывать взаимодействие между компьютерами или между процессами на одном компьютере. Данная технология может работать со множеством различных устройств ввода-вывода и драйверов, несмотря на то, что их поддержка зависит от реализации операционной системы. Подобная реализация интерфейса лежит в основе TCP/IP, благодаря чему считается одной из фундаментальных технологий, на которых основывается Интернет.

Википедия

Для сокета TCP\IP требуется IP адрес, а еще порт. Зачем же нужен порт ? Тут ответ очень простой. У нас есть только один сетевой интерфейс (физически) ,а процессов и сервисом которым нужно передавать данные может быть несколько. Как вы понимаете IP адрес для всех сервисов будет один и тот же, но как транспортному уровню понят какие данные кому предназначаются. Тут нас и выручает такой параметр как порт (для каждого сервиса или процесса свой) который может иметь значение от 0 до 65563. Самых популярных протоколы передачи данных в сети это TCP (протокол с установлением соединения и гарантией передачи данных) и UDP (протокол без установки соединения и гарантии передачи данных).

Мы конечно с вами не затронули тему маршрутизации, как наши данные находят путь в огромной, с множеством соединений сети. Что такое шлюз и маска сети. Но это очень объемная и сложная тема. Надеюсь вы получили общее представление о том как устроена локальная сеть от провода до операционной системы.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Один ответ на “Как работаю локальные сети Ethernet( или Интернет).”

Добавить комментарий

Ваш адрес email не будет опубликован.