Чем определяется сетевой уровень сетевой модели internet
Сетевой уровень
Содержание
Введение, сервисы [ править ]
Сетевой уровень оперирует пакетами. Наиболее известный протокол сетевого уровня — IP. На сетевом уровне работают маршрутизаторы.
Задачи, ставившиеся при разработке сервисов сетевого уровня:
Возможны два типа сервисов:
Принципиальные отличия представлены в таблице:
Ещё раз вкратце: сетевой уровень прежде всего должен прокладывать маршрут между узлами. Если на канальном уровне мы просто передавали пакет с одного конца провода на другой, то на сетевом мы уже хотим передавать данные по большой сети, то есть не факт, что напрямую. Помимо этого хорошо бы стараться равномерно распределять нагрузку на узлы. Ещё одна проблема для сетевого уровня состоит в том, что разные узлы могут находиться в разных сетях, с разными гарантиями от канального уровня. Есть два подхода: дейтаграмный и с установлением канала. В первом случае мы не тратим время на установку соединения, не боимся отказа узла. Во втором случае получаются поменьше пакеты, не нужно каждый раз думать, куда пересылать пакет, можно боговорить параметры передачи (для обеспечения QoS, например).
Роутинг на сетевом уровне [ править ]
На сетевом уровне работает такое сетевое устройство, как маршрутизатор.
Схемы доставки данных [ править ]
Алгоритмы роутинга [ править ]
В общем случае с момента отправки и до момента получения проходит через множество роутеров. Происходит это потому, что отправитель и получатель не могут общаться напрямую из-за размеров сети.
В больших сетях топология постоянно изменяется, поэтому необходимо изменять стратегии доставки сообщений в зависимости от этих изменений, а также в зависимости от загруженности сети. Для решения этой задачи существуют алгоритмы маршрутизации, благодаря которым роутер понимает, какому устройству нужно отправить сообщение, чтобы добиться хороших результатов в его доставке.
Алгоритм на основе расстояния между устройствами [ править ]
Используют алгоритм Форда-Беллмана. Каждому ребру в сети присваивается некоторая цена и узлы выбирают маршрут для отправки данных, используя путь наименьшей цены.
Когда узел запускается, он знает только о своих ближайших соседях и цену для достижения каждого из них. Каждый узел регулярно отправляет своим соседям информацию о цене достижения всех узлов в сети, для которых он знает эту цену. Соседи получают эту информацию и сравнивают с имеющейся у них. Если за счет полученной информации можно улучшить цену достижения некоторой вершины, то они записывают эту информацию в своей таблице маршрутизации. Через какое-то время все узлы сети будут знать наилучшую цену доставки и оптимальный маршрут доставки сообщения от себя до некоторого узла В, благодаря чему смогут отправлять данные оптимально.
Если топология сети изменяется, например, в следствии отказа какого-нибудь узла, то его соседи с использованием описанного выше алгоритма могут перестроить маршруты, которые использовали этот узел.
Link-state algorithm [ править ]
Для данного алгоритма каждый узел в сети должен знать структуру графа, которым является сеть. Это достигается следующим образом: каждый узел при запуске знает только о своих соседях. Узел регулярно отправляет информацию о той части сети, про которую он что-то знает (уже узнал на предыдущих итерациях) своим непосредственным соседям, добавляя к этой информации число- версию отправляемых данных. Узел, получая данные от своего соседа, сравнивает версию в данных с собственной версией и если версия в данных больше, чем его собственная, то он использует данные для изменения своего представления о структуре графа и переплывает сообщение своим соседям. Если же версия в сообщении меньше, чем версия у узла, то данное сообщение игнорируется.
Когда узнали информацию о структуре сети, можно построить граф сети для поиска кратчайших путей. На графе запускается алгоритм Дейкстры, в результате выполнения которого узел узнает кратчайший путь от себя до любого другого узла сети, а также ближайшего соседа на этом пути, которому и будет пересылаться сообщение.
Когда у вершины построен граф, используется специальный протокол, который позволяет понять, доступны ли все соседи вершины. Если с каким-то соседом что-то случилось, то вершина начинает перестраивать свой граф, используя алгоритм, аналогичный алгоритму для изначального построения графа.
Path vector algorithm [ править ]
Описанные выше алгоритмы хороши для не очень больших сетей. В больших сетях их будет сложно реализовать, потому что придется тратить очень много ресурсов на построение графа сети, причем как ресурсов узлов для вычисления таблиц маршрутизации, так и ресурсов сети для постоянной отправки соседям сообщений о структуре сети.
Path vector protocol используется для взяимодействия нескольких автономных систем. Предполагается, что в каждой из систем есть узел, который отвечает за свою автономную систему (speaker). Speaker создает таблицу маршрутизации для своей автономной системы и отправляет ее соседним автономным системам.
Алгоритм похож на Алгоритм на основе расстояния между устройствами с той разницей, что между каждый узел одной автономной системы не общается с каждым узлом другой автономный системы, между собой общаются только спикеры, за счет чего экономятся ресурсы и решаются описанные выше проблемы для больших сетей.
Зачем вообще нужен роутинг [ править ]
В общем случае в сети существует несколько путей для доставки данных от узла А до узла В. При этом скорость доставки данных по этим маршрутам может существенно отличаться в зависимости от пропускной способности каналов, задержек сети, количества вершин на пути, загруженности канала и других характеристик. Для того, чтобы доставка сообщения занимала меньше времени и используются алгоритмы маршрутизации.
Пример [ править ]
Представим следующий граф:
Вершины- узлы сети, на ребрах написано ожидаемое время отправки сообщения между узлами. Пусть вершины A и B находятся в Лондоне, а вершины C и D в Нью-Йорке, в связи с чем время доставки сообщения между вершинами A и B или вершинами C и D быстрое, а между вершинами B и D или A и C медленнее.
Сетевой уровень в модели взаимодействия открытых систем OSI
Сетевой уровень в модели OSI (Network Layer) нужен, чтобы построить крупную, составную сеть, на основе отдельных сетей, каждая из которых построена на различных технологиях.
История создания
Идею отдельного сетевого уровня для объединения сетей, построенных на основе разных технологий канального уровня, впервые предложили Винтон Серф и Роберт Кан в 1974 году. За эту идею они получили премию Тьюринга, это эквивалентно нобелевской премии, но только в информационных технологиях и компьютерных науках.
Сетевой уровень и протокол IP широко используется в Интернет являются его основой. Винстон и Роберт за свою идею сетевого уровня получили звание “Отцы” интернета.
Назначение сетевого уровня
На канальном уровне можно передавать информацию между компьютерами разными способами:
Почему нельзя использовать, то что есть? Если мы хотим построить сеть, которая охватывает весь мир с помощью технологий канального уровня, у нас возникают проблемы:
Различия сетей
Рассмотрим отличия технологий канального уровня на основе которых создаются сети.
Согласование различий в сетях
Что можно сделать на сетевом уровне, чтобы согласовать различия в сетях.
Тип сервиса
Чтобы согласовать тип сервиса — устройство, которое объединяет сети, может обеспечивать разные типы сервисов в разных сетях. Например, некое устройство принимает данные из вайфай и отправляет подтверждение о получении кадра, а затем передает кадр в изернет, гд еуже подтверждение не используется. В таком случае устройство объединяющее сети, само отправляет подтверждение сети вайфай, и не ждет подтверждения от получателя, который работает в сети ethernet и не отправляет подтверждений о получении.
Адресация
Чтобы согласовать адреса на сетевом уровне вводятся глобальные типы адресов. Это адреса устройств в составной сети, которые не зависят от адресов в конкретных технологиях канального уровня. Когда используется такой тип адресации, каждое устройство в сети содержит два адреса: глобальный и локальный, поэтому нам нужны механизмы определения локального адреса по глобальному.
Широковещание
Чтобы реализовать широковещание в сети, которая его не поддерживает, устройство которое объединяет сети, может отправлять широковещательный кадр всем устройствам сети в отдельности.
Фрагментация
Что делать с максимальным размером пакета в сетях? Когда мы передаем данные от отправителя к получателю составной сети, мы не можем заранее знать, какие сети нам встретятся по пути и какой там размер кадра. Поэтому не можем заранее выбрать правильный размер. Чтобы согласовать размер в технологиях канального уровня, на сетевом уровне используется фрагментация.
Подробный пример фрагментации рассмотрен в видео. (timecode 6.43)
Ethernet везде
Отличия в технологиях канального уровня, некоторое время тому назад были достаточно существенны. Но сейчас, почти везде используется технология канального уровня Изернет. Wi-Fi это адаптация технологии Ethernet, но для беспроводной среды.
Технологии изернет и вайфай достаточно похожи. Они используют одинаковый формат адресов, МАС-адреса. Уровень кадра изернет и вайфай на подуровне управления логической связью (LLC) одинаков. Можно согласовать вайфай и изернет без сетевого уровня. И на практике это используется. Многие wifi маршрутизаторы могут работать в режиме моста. Это режим, в котором работа Ethernet и wifi согласуются на канальные уровни. И почти все мы используем вай фай, чтобы получить доступ к интернету. А доступ к интернет обеспечивается через распределительную систему вайфай, которая почти всегда является проводной. Поэтому возникает вопрос, а зачем нам разные технологии? Почему нельзя использовать везде Ethernet?
Масштабируемость Ethernet
Оказывается, Ethernet и другие технологии канального уровня не подходят для создания крупной сети, которая может охватить весь мир из-за того, что у них есть существенные ограничения по масштабируемости.
Давайте рассмотрим существующие ограничения. Коммутаторы изернет для передачи кадра пользуются таблицами коммутации. И эта таблица должна содержать все MAК-адреса компьютеров в сети. Если для локальной сети это можно сделать, то для глобальной сети, в которой несколько миллиардов устройств, никакому коммутатору не хватит памяти, чтобы хранить подобную таблицу. И искать нужный порт в такой огромной таблице будут очень долго.
Следующая проблема в том, что если коммутатор не понимает куда отправлять кадр, он передает его на все порты, надеясь, что где-то там находиться получатель. Такой подход тоже работает в локальных сетях, но в глобальных сетях не работает. Если в интернет мы не знаем куда отправить пакет и будем пересылать всем компьютерам в интернете, то через некоторое время, мы засорим сеть такими мусорными пакетами и это приведет к отказу в обслуживании.
Другая проблема это отсутствие дублирующих путей между коммутаторами. В Ethernet у нас всегда должно быть одно соединение, чтобы не образовалось кольца, иначе сеть будет перегружена широковещательным штормом. В Ethernet есть технология STP, которая позволяет создавать несколько связей между коммутаторами, но в каждый момент времени активно всего одно соединение.
Рассмотрим пример, в нашей сети есть несколько коммутаторов. Они соединены между собой и есть такое соединение, которое приводит к образованию кольца.
В сети запускается протокол STP, коммутаторы выбирают корневой. Рассчитывают расстояние до корневого и отключают одно из соединений.
Если коммутаторы используются для построения локальной сети, где расстояние между коммутаторами небольшое, то такой подход работает отлично. Но, предположим, что мы строим глобальную сеть и если мы хотим отправить данные из Екб в Челябинск, который является соседним городом и расположен близко, то на уровне Ethernet мы это сделать не сможем, потому что прямое соединение отключено протоколом STP.
Необходимо передавать данные через другие города, расстояние гораздо больше, поэтому скорость передачи будет существенно ниже. От этого хотелось бы избавиться.
Масштабируемость на сетевом уровне
Что делает сетевой уровень, чтобы обеспечить масштабирование и построить такую сеть, которая способна объединить все компьютеры во всем мире, например сеть интернет.
Задачи сетевого уровня
Оборудование для сетевого уровня
Оборудования, которые работают на сетевом уровне, называются маршрутизаторы.
Маршрутизатор — это устройство для объединения сетей. У маршрутизатора есть некое количество интерфейсов, через них к маршрутизатору подключается сеть.
Маршрутизация
Маршрутизация (routing) это поиск пути доставки пакета между сетями через транзитные узлы — маршрутизаторы. Какие возникают сложности? Со временем может изменяться структура сети. Могут появляться новые маршрутизаторы, существующие маршрутизаторы могут выходить из строя и отключаться от сети, поэтому мы должны учитывать изменения в топологии сети. Хорошо еще учитывать изменения в загрузке каналов связи (КС), чтобы не передавать информацию через один КС, а другие маршруты оставлять не загруженными. Это позволит более эффективно использовать пропускную способность сети.
В англоязычной литературе выделяется термин продвижение (forwarding) это поиск маршрута для каждого пакета, который пришел на маршрутизатор, при этом маршрутизатор уже знает топологию сети и знает загрузку каналов.
Как данные могут доставляться по сети? Рассмотрим пример, в котором 5 маршрутизаторов и 2 компьютера. Отправитель передает данные получателю и каждый раз задача маршрутизации для каждой новой порции данных решается заново. Поэтому части данных могут проходить по разным путям.
Нет фиксированного маршрута от отправителя к получателю. Маршрут определяется для каждой порции данных отдельно. Это хорошо в том случае, если выйдет из строя один из маршрутизаторов, мы сможем найти путь в обход этого маршрутизатора.
Если бы мы задавали заранее маршрут, и один из маршрутизаторов вышел бы из строя, то нам пришлось бы вручную переконфигурировать маршрут, либо данные перестали бы доставляться. Если для каждой порции данных поиск маршрута выполняется независимо, то мы можем защититься от сбоев в сети.
Сетевой уровень в TCP/IP
На стеке протоколов в tcp/ip достаточно много протоколов, основной протокол это IP (интернет протокол) он используется для отправки данных. Также есть 3 протокола ICMP — используется для управления сетью. ARP — используется, чтобы с помощью глобального адреса сетевого уровня, определить локальный адрес в технологии канального уровня. DHCP протокол динамической конфигурации хостов, используется, чтобы автоматически назначать IP адреса компьютерам в составной сети.
Заключение
Мы рассмотрели сетевой уровень — он нужен, чтобы строить составные сети, которые объединяют различные подсети, сформированные на основе различных технологий канального уровня. Спасибо, что дочитали статью до конца, если она была Вам полезна, поделитесь ею с одногруппниками. А также, читайте похожие статьи про модель OSI и её остальные уровни.
OSI Model
Содержание
Сетевая модель OSI [ править ]
Общая характеристика модели [ править ]
OSI состоит из двух основных частей:
Концепция семиуровневой модели была описана в работе Чарльза Бахмана. Данная модель подразделяет коммуникационную систему на уровни абстракции (англ. «abstraction layers»). В модели OSI средства взаимодействия делятся на семь уровней: прикладной, представления, сеансовый, транспортный, сетевой, канальный и физический. Каждый уровень:
Каждый из семи уровней характеризуется типом данных (PDU, сокращение от англ. protocol data units), которым данный уровень оперирует и функционалом, который он предоставляет слою, находящемуся выше него. Предполагается, что пользовательские приложения обращаются только к самому верхнему (прикладному) уровню, однако на практике это выполняется далеко не всегда.
Описание уровней модели OSI [ править ]
Уровень | Функции | PDU | Примеры |
7. Прикладной | Некоторое высокоуровневое API | Данные | HTTP, FTP |
6. Представительский | Представление данных между сетевым сервисом и приложением | Данные | ASCII, EBCDIC, JPEG |
5. Сеансовый | Управление сеансами: продолжительный обмен информацией в виде множества передач между нодами | Данные | RPC, PAP |
4. Транспортный | Надёжная передача сегментов между двумя нодами в сети | Сегменты/Датаграммы | TCP, UDP |
3. Сетевой | Структуризация и управление множеством нод в сети | Пакеты | IPv4, IPv6 |
2. Канальный | Надёжная передача датафреймов между двумя нодами соединённых физическим уровнем | Фреймы | PPP, IEEE 802.2, Ethernet |
1. Физический | Передача и приём потока байтов через физическое устройство | Биты | USB, витая пара |
Прикладной уровень (Application layer) [ править ]
Самый верхний уровень модели, предоставляет набор интерфейсов для взаимодействия пользовательских процессов с сетью. Единицу информации, которой оперируют три верхних уровня модели OSI, принято называть сообщение (англ. message).
Прикладной уровень выполняет следующие функции:
К числу наиболее распространенных протоколов верхних трех уровней относятся:
Уровень представления (Presentation layer) [ править ]
Уровень представления занимается представлением данных, передаваемых прикладными процессами в нужной форме. Данные, полученные от приложений с прикладного уровня, на уровне представления преобразуются в формат подходящий для передачи их по сети, а полученные по сети данные преобразуются в формат приложений. Также кроме форматов и представления данных, данный уровень занимается конвертацией структур данных, используемых различными приложениями. Другой функцией, выполняемой на уровне представлений, является шифрование данных, которое применяется в тех случаях, когда необходимо защитить передаваемую информацию от доступа несанкционированными получателями.
Как и прикладной уровень, уровень представления оперирует напрямую сообщениями. Уровень представления выполняет следующие основные функции:
Примеры протоколов данного уровня:
Сеансовый уровень (Session layer) [ править ]
Сеансовый уровень контролирует структуру проведения сеансов связи между пользователями. Он занимается установкой, поддержанием и прерыванием сеансов, фиксирует, какая из сторон является активной в данный момент, осуществляет синхронизацию обмена информацией между пользователями, что также позволяет устанавливать контрольные точки.
На сеансовом уровне определяется, какой будет передача между двумя прикладными процессами:
Как 2 уровня над ним, сеансовый уровень использует сообщения в качестве PDU.
Примеры протоколов сеансового уровня:
Транспортный уровень (Transport layer) [ править ]
Транспортный уровень предназначен для передачи надежной последовательностей данных произвольной длины через коммуникационную сеть от отправителя к получателю. Уровень надежности может варьироваться в зависимости от класса протокола транспортного уровня. Так например UDP гарантирует только целостность данных в рамках одной датаграммы и не исключает возможности потери/дублирования пакета или нарушения порядка получения данных; TCP обеспечивает передачу данных, исключающую потерю данных или нарушение порядка их поступления или дублирования, может перераспределять данные, разбивая большие порции данных на фрагменты и наоборот, склеивая фрагменты в один пакет.
Модель OSI определяет пять классов сервиса, предоставляемых транспортным уровнем. Эти виды сервиса отличаются качеством предоставляемых услуг: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное способностью к обнаружению и исправлению ошибок передачи, таких как искажение, потеря и дублирование пакетов. В функции транспортного уровня входят:
Транспортный уровень использует сегменты или датаграммы в качестве основного типа данных.
Сетевой уровень (Network layer) [ править ]
Сетевой уровень предоставляет функционал для определения пути передачи пакетов данных между клиентами, подключенными к одной коммуникационной сети. На данном уровне решается проблема маршрутизации (выбора оптимального пути передачи данных), трансляцией логических адресов в физические, отслеживанием неполадок в сети.
В рамках сетевого надежность доставки сообщений не гарантируется; сетевой уровень может реализовывать соответствующий функционал, но не обязан это делать. Роль PDU исполняют пакеты (англ. packet).
Сетевой уровень выполняет функции:
Наиболее часто на сетевом уровне используются протоколы:
Канальный уровень (Data link layer) [ править ]
Канальный уровень предназначен для передачи данных между двумя узлами, находящихся в одной локальной сети. Роль PDU исполняют фреймы (англ. frame). Фреймы канального уровня не пересекают границ локальной сети, что позволяет данному уровню сосредоточиться на локальной доставке (фактически межсетевой доставкой занимаются более высокие уровни).
Заголовок фрейма формируется из аппаратных адресов отправителя и получателя, что позволяет однозначно определить устройство, которое отправило данный фрейм и устройство, которому он предназначен. При этом никакая часть адреса не может быть использована, чтобы определить некую логическую/физическую группу к которой принадлежит устройство.
Канальный уровень состоит из двух подуровней: LLC и MAC.
Канальный уровень выполняет функции:
Наиболее часто на канальной уровне используются протоколы:
Физический уровень (Physical layer) [ править ]
Физический уровень описывает способы передачи потока бит через дата линк, соединяющий сетевые устройства. Поток байт может быть сгруппирован в слова и сконвертирован в физический сигнал, который посылается через некоторое устройство.
Здесь специфицируются такие низкоуровневые параметры как частота, амплитуда и модуляция.
Физический уровень выполняет функции:
Наиболее часто на физическом уровне используются протоколы:
Инкапсуляция [ править ]
Физический уровень ответственен за физическую передачу данных. IP предоставляет глобальный способ адресации устройств. TCP добавляет возможность выбора приложения (порт).
Во время инкапсуляции каждый уровень собирает свой собственный PDU, добавляя некоторый заголовок с контрольной информацией к PDU с более высокого уровня.
Пример [ править ]
Предположим мы отправляем веб-страницу клиенту: