Skip to content

network

Компьютерная сеть - это инфраструктура, состоящая из устройств и программных средств, предназначенных для связи и обмена информацией между клиентами и серверами. Устройства в сети считаются взаимосвязанными, если они могут обмениваться информацией через какой-либо канал связи. Сети создаются с целью обеспечить обмен данных, ресурсами и услугами, как внутри ограниченных локальных сред, так и на глобальном уровне.

Основные компоненты компьютерной сети:

  • Устройства: Компьютеры, серверы, маршрутизаторы, коммутаторы, смартфоны, планшеты, принтеры и другие устройства, подключенные к сети, образуют ее компоненты. Это уровень физических устройств: здесь клиентские хосты (пк, смартфоны, умные устройства) отправляют запросы пользователей на различные сервера по всему миру, а в ответ получают обработанные данные. Между клиентами и серверами стоит множество специальных коммутирующих устройств, от простых свичей и коммутаторов до сложных автономных систем, которые знают как наилучшими маршрутами с наименьшими задержками передавать террабайты информации через различные каналы.
  • Соединения: Сети могут использовать различные среды передачи данных, включая проводные (Ethernet, оптоволокно) и беспроводные (Wi-Fi, Bluetooth, сотовая связь) соединения. Любое устройство в любой сети должно иметь IP-адрес, далее используя default gateway оно упорно лезет в сеть более высокого ранга чтобы добыть требуемую инфу. Наш пакетик с данными, размером с MTU, имеющий обязательный TTL, должен передаваться через какую-нибудь среду передачи, пусть это будет старый-добрый-надежный ethernet. Далее наш замечательный пакетик, применяя механизм NAT, поменяет свой айпишник и полетит через различные AS и хопы к своему серверу. Наш труженник сервер безропотно декапсулирует данные, обработает запрос, выберет наилучший способ передачи данных и пошлет точно своему клиенту правильный ответ. Пользователь, оценив round-trip delay, обрадуется на своем конце провода.
  • Протоколы: Протоколы - это наборы правил и стандартов, определяющие способы обмена данных и коммуникации в сети.
  • Пакеты. Компьютер передает данные по сети в виде небольших порций, на­зываемых пакетами. Они состоят из двух частей: заголовка и полезной нагрузки. Заголовок содержит такую идентифицирующую информацию, как хосты проис­хождения/назначения и основной протокол. С другой стороны, полезная нагруз­ка — это реальные данные, которые компьютер собирается передать (например, код HTML или изображение). Пакеты позволяют хосту взаимодействовать с другими хостами «одновремен­но», поскольку хосты могут отправлять, получать и обрабатывать пакеты в любом порядке, вне зависимости от того, откуда они поступили и куда направляются.

Основные понятия и контексты применяемые в компьютерных сетях:

  • Стек протоколов TCP/IP - это сетевая модель, которая описывает набор протоколов, используемых для передачи данных в компьютерных сетях. Он состоит из четырех уровней (или слоев), каждый из которых предназначен для выполнения определенных функций.
  • Открытая сетевая модель OSI - состоит из семи уровней. Это набор инструкций (протоколов), которые помогают компьютерам обмениваться данными внутри локальных сетей и всего интернета.
  • Инкапсуляция и декапсуляция данных. В контексте передачи данных по сети, инкапсуляция данных означает включение данных в определенный формат или структуру, чтобы они могли быть переданы по сети с помощью сетевых протоколов.
  • IP-адрес — уникальный сетевой адрес узла в компьютерной сети, построенной на основе стека протоколов TCP/IP
  • Протоколы SSL и TLS - это криптографические протоколы, используемые для обеспечения безопасной связи и защиты данных при передаче через компьютерные сети, особенно в интернете.
  • NAT (Network Address Translation) - это механизм в сетях TCP/IP, позволяющий изменять IP адрес в заголовке пакета, проходящего через устройство маршрутизации трафика.

    Что такое NAT?

    Network Address Translation - это механизм в сетях TCP/IP, позволяющий изменять IP адрес в заголовке пакета, проходящего через устройство маршрутизации трафика. Принимая пакет от локального компьютера, маршрутизатор смотрит на IP-адрес назначения. Если это локальный адрес, то пакет пересылается другому локальному компьютеру. Если нет, то пакет надо переслать наружу в интернет.

    Маршрутизатор подменяет обратный IP-адрес пакета на свой внешний (видимый из интернета) IP-адрес и меняет номер порта (чтобы различать ответные пакеты, адресованные разным локальным компьютерам). Комбинацию, нужную для обратной подстановки, маршрутизатор сохраняет у себя во временной таблице. Через некоторое время после того, как клиент и сервер закончат обмениваться пакетами, маршрутизатор сотрет у себя в таблице запись об n-ом порте за сроком давности.

    Суть функции NAT заключается в том, что маршрутизатор не просто передает пакеты от одной подсети в другую, но и трансформирует их во время передачи. Ин­тернет-хосты знают, как подключиться к маршрутизатору, однако ничего не знают о расположенной за ним частной сети. Хостам частной сети не требуется специальная конфигурация; маршрутизатор является для них шлюзом по умолчанию.

    Эта система в общих чертах работает так:

    1. Хост внутренней частной сети намерен установить соединение с внешним ми­ром, поэтому он отправляет пакеты своего запроса на соединение через маршру­тизатор.
    2. Маршрутизатор перехватывает эти пакеты, вместо того чтобы отправить их в Интернет (в котором они пропали бы, поскольку общественный Интернет ничего не знает о частных сетях).
    3. Маршрутизатор определяет пункт назначения для пакета-запроса и открывает собственное соединение с этим пунктом назначения.
    4. Когда маршрутизатор установит соединение, он отправляет фальсифицирован­ное сообщение «соединение установлено» обратно, исходному внутреннему хосту.
    5. Теперь маршрутизатор становится посредником между внутренним хостоми пунктом назначения. Пункт назначения ничего не знает о внутреннем хосте; для удаленного хоста соединение выглядит как исходящее от маршрутизатора.

    Однако все не настолько просто, как выглядит. Нормальная IP-маршрутизация знает лишь IP-адреса источника и пункта назначения в интернет-уровне. Однако, если бы маршрутизатор имел дело только с интернет-уровнем, каждый хост вну­тренней сети смог бы установить только одно соединение с единственным пунктом назначения в данный момент времени (есть и другие ограничения), поскольку та часть пакета, которая относится к интернет-уровню, не содержит информации о том, как отличить повторные запросы от одного хоста к тому же пункту назначе­ния. Следовательно, функция NAT должна выйти за пределы интернет-уровня и «вскрыть» пакеты, чтобы извлечь дополнительную идентифицирующую инфор­мацию, в частности номера портов UDP и TCP, из транспортных уровней. Прото­кол UDP достаточно прост, поскольку здесь есть порты, но нет соединений; слож­нее дело с транспортным уровнем на основе протокола TCP.

    Типы NAT:

    • Static NAT - применяют для отображения незарегистрированного IP-адреса на зарегистрированный IP-адрес на основании один к одному. Особенно полезно, когда устройство должно быть доступным снаружи сети.
    • Dynamic NAT - отображает незарегистрированный IP-адрес на зарегистрированный адрес из группы зарегистрированных IP-адресов. Динамический NAT также устанавливает непосредственное отображение между незарегистрированными и зарегистрированными адресами, но отображение может меняться в зависимости от зарегистрированного адреса, доступного в пуле (pool - диапазон) адресов, во время коммуникации.
    • Overload NAT - форма динамического NAT, который отображает несколько незарегистрированных адресов в единственный зарегистрированный IP-адрес, используя различные порты. При перегрузке каждый компьютер в частной сети транслируется в тот же самый адрес, но с различным номером порта. Этот тип NAT'a имеет множество названий: NAT Overload, Many-to-One, PAT (Port Address Translation) и IP Masquerading, однако в большинстве источников указывается как NAT Overload.
  • Маршрутизация IP и форвардинг - это процесс пересылки IP-пакетов от узла-отправителя к узлу–получателю в IP-сети с произвольной топологией на основе решения задачи о маршрутизации.

  • URL (Uniform Resource Locator) — это стандартизированный адрес ресурса в сети Интернет.

    URL (Uniform Resource Locator)

    URL (Uniform Resource Locator) — это стандартизированный адрес ресурса в сети Интернет. Он служит для указания местоположения определенного ресурса, такого как веб-страница, изображение, видео, API-эндпоинт и т. д.

    URL состоит из нескольких компонентов:

    • Протокол (Protocol): Определяет способ обмена данными между клиентом и сервером. Некоторые распространенные протоколы включают http://, https://, ftp://, mailto:// и т. д.
    • Доменное имя (Domain Name): Идентифицирует уникальный адрес сервера или ресурса в Интернете. Например, в URL https://www.example.com, www.example.com - это доменное имя.
    • Порт (Port): Указывает конкретный порт, который используется для установки соединения с сервером. Порт обычно указывается после доменного имени, разделенный двоеточием. Например, в URL https://www.example.com:8080, 8080 - это порт.
    • Путь (Path): Определяет конкретный путь к ресурсу на сервере. Путь следует после доменного имени и порта, начиная с /. Например, в URL https://www.example.com/products/shoes, /products/shoes - это путь к ресурсу.
    • Запрос (Query): Используется для передачи дополнительных параметров или данных на сервер. Запрос начинается с символа ? и может содержать несколько пар ключ-значение, разделенных символом &. Например, в URL https://www.example.com/search?q=shoes&page=1, ?q=shoes&page=1 - это запрос.
    • Якорь (Fragment): Указывает конкретное место внутри документа, к которому нужно прокрутить после загрузки страницы. Якорь обозначается символом # и следует после пути или запроса. Например, в URL https://www.example.com/article#section3, #section3 - это якорь.

    Общий формат URL выглядит следующим образом: <протокол>://<домен>:<порт>/<путь>?<запрос>#<якорь>

  • TTL (Time to Live) - это поле в заголовке IP-пакета, которое указывает максимальное количество сетевых узлов (хопов), через которые может пройти пакет, прежде чем будет отброшен.

    TTL

    TTL (Time to Live) - это поле в заголовке IP-пакета, которое указывает максимальное количество сетевых узлов (хопов), через которые может пройти пакет, прежде чем будет отброшен.

    TTL используется для предотвращения бесконечного цикла передачи пакетов в компьютерных сетях. Каждый сетевой узел (роутер), через который проходит пакет, уменьшает значение TTL на 1. Если значение TTL достигает нуля, пакет считается недействительным и отбрасывается.

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

    Обычно отправитель IP-пакета устанавливает начальное значение TTL перед отправкой пакета в сеть. Значение TTL может быть предопределено операционной системой или настроено вручную отправителем в зависимости от его потребностей. Значение TTL может варьироваться от платформы к платформе, но обычно составляет несколько прыжков (hops), например, 64 или 128.

    Значение TTL имеет значение только в процессе отправки и маршрутизации пакета в сети и не изменяется промежуточными маршрутизаторами или узлами.

  • Автономная система (AS) - это сетевая сущность, представляющая собой набор связанных сетей и узлов, которые управляются одним административным доменом.

    AS, Autonomous System

    Автономная система (AS, Autonomous System) - это сетевая сущность, представляющая собой набор связанных сетей и узлов, которые управляются одним административным доменом. Каждая автономная система имеет уникальный номер, называемый номером автономной системы (ASN, Autonomous System Number), который используется для идентификации и маршрутизации трафика в Интернете.

    AS является основным строительным блоком Интернета и позволяет провайдерам сети обмениваться информацией о маршрутизации трафика. Каждая автономная система имеет собственную политику маршрутизации и принимает решения о том, как передавать трафик между сетями, находящимися внутри и снаружи этой автономной системы.

    ASN представляет собой 16-битное или 32-битное число, которое присваивается автономной системе для идентификации в рамках протокола маршрутизации BGP (Border Gateway Protocol). 16-битные числа ASN находятся в диапазоне от 1 до 65,535, а 32-битные числа ASN находятся в диапазоне от 65,536 до 4,294,967,295.

    Автономные системы могут быть провайдерами интернет-услуг, большими организациями, университетами или другими сетевыми субъектами. Они играют важную роль в маршрутизации и обеспечении связности в Интернете, позволяя трафику достигать назначения, проходя через различные автономные системы.

  • Типы передачи данных: Unicast, Broadcast, Multicast.

    Типы передачи данных

    В сетях IP существует 3 основных способа передачи данных: Unicast, Broadcast, Multicast.

    • Unicast — одноадресная рассылка — один отправитель, один получатель. (Пример: запрос HTTP-странички у WEB-сервера). В unicast пакетах в качестве IP адреса назначения используется конкретный IP адрес устройства, для которого этот пакет предназначен.
    • Broadcast — широковещательная рассылка — один отправитель, получатели — все устройства в широковещательном сегменте. (Пример: ARP-запрос). Из-за того, что тип передачи broadcast используется для отправки пакетов ко всем хостам в сети, пакеты использую специальный broadcast IP адрес. Когда хост получает пакет, в заголовке которого в качестве адреса получателя указан broadcast адрес, он обрабатывает пакет так, как будто это unicast пакет.

      Направленный broadcast отправляется всем хостам какой-то конкретной сети. Этот тип широковещания удобно использовать для отправки broadcast трафика всем хостам за пределами локальной сети.

      Ограниченный broadcast используется для передачи данных всем хостам в локальной сети. В такие пакеты в качестве пункта назначения вставляется IP адрес 255.255.255.255. Маршрутизаторы такой широковещательный трафик не передают. Пакеты, переданные ограниченным broadcast будут распространяться только в локальной сети.

    • Multicast — многоадресная рассылка — один отправитель, много получателей. (Пример: IPTV). Хосты, которые хотят получить определенные multicast данные, называются multicast клиентами. Multicast клиенты используют сервисы инициированные (начатые) клиентскими программами для рассылки multicast данных группам. Каждая multicast группа представляет собой один multicast IP адрес назначения. Когда хост рассылает данные для multicast группы, хост помещает multicast IP адрес в заголовок пакета (в раздел пункта назначения). Для multicast групп выделен специальный блок IP адресов, от 224.0.0.0 до 239.255.255.255.

    • Anycast — одноадресная рассылка ближайшему узлу — один отправитель, вообще получателей много, но фактически данные отправляются только одному. (Пример: Anycast DNS).