Я скомпилировал свои предыдущие статьи на Github, приветствую всех в звездахGitHub.com/Next Day Picks/Не голоден…
Ранее мы узнали, как транспортный уровень передает данные между клиентами и серверами, обеспечивая сквозную связь между процессами. Затем мы узнаем, как сетевой уровень на самом деле реализует службу связи между хостами.Почти в каждой конечной системе есть эта часть сетевого уровня.. Поэтому сетевой уровень должен быть очень сложным. Ниже я потрачу много места, чтобы представить знания об уровне компьютерной сети.
Обзор сетевого уровня
Сетевой уровень является третьим уровнем эталонной модели OSI.Он расположен между транспортным уровнем и канальным уровнем.Основной целью сетевого уровня является достижение прозрачной передачи данных между двумя конечными системами.
На первый взгляд роль сетевого уровня выглядит очень простой, т.分组
Переход с одного хоста на другой. Для реализации этой функции сетевому уровню необходимы две функции.
-
转发
: Потому что в инете много路由器
Существование маршрутизатора является основой Интернета.Важнейшей функцией маршрутизатора является分组转发
, когда пакет поступает на входной канал маршрутизатора, маршрутизатор перемещает пакет на соответствующий выходной канал. Переадресация — единственная функция, реализованная в плоскости данных.
В сети есть два варианта самолетов
- Плоскость данных: отвечает за пересылку сетевого трафика, например за таблицы пересылки в коммутаторах маршрутизатора (о чем мы поговорим позже).
- Плоскость управления: управляет поведением сети, например выбором сетевых путей.
-
路由选择
: сетевой уровень должен выбирать путь для пакетов по мере их прохождения от отправителя к получателю. Алгоритм вычисления этих вариантов пути называется路由选择算法(routing algorithm)
.
Это,Переадресация — это локальное действие маршрутизатора по передаче пакета из одного входного канала в соответствующий интерфейс выходного канала.. Маршрутизация, с другой стороны, относится к выбору пути, по которому проходит пакет от источника к получателю. Позднее мы часто будем ссылаться на термины «пересылка» и «маршрутизация».
Так что здесь есть проблема, как маршрутизатор узнает, какие пути выбрать?
У каждого маршрутизатора есть ключевая концепция, которая转发表(forwarding table)
. Маршрутизаторы выполняют пересылку, проверяя значения полей в заголовке пакета, чтобы найти записи в таблице переадресации. Значение в заголовке соответствует значению в таблице пересылки, которая указывает выходной канал маршрутизатора, по которому будет пересылаться пакет. Как показано ниже
На приведенном выше рисунке после того, как пакет 1001 поступает на маршрутизатор, он сначала индексируется в таблице переадресации, а затем алгоритм маршрутизации определяет путь, по которому будет проходить пакет. Каждый маршрутизатор выполняет две функции:Переадресация и маршрутизация. Теперь поговорим о принципе работы роутера.
Как работают маршрутизаторы
Ниже приведена схема архитектуры маршрутизатора, маршрутизатор в основном состоит из 4 компонентов.
- Входной порт:
输入端口(input port)
Есть много функций.线路终端功能
и数据链路处理
функции, реализующие физический уровень и уровень канала передачи данных, связанные с одним входным каналом маршрутизатора.输入端口查找/转发功能
Это очень важно для функции коммутации маршрутизатора.Выходной порт определяется структурой коммутации маршрутизатора.В частности, он должен быть определен путем запроса таблицы переадресации. - Структура обмена:
交换结构(Switching fabric)
Просто подключите входной порт маршрутизатора к его выходному порту. Эта коммутационная структура эквивалентна сети внутри маршрутизатора. - Выходной порт:
输出端口(Output ports)
Пакеты пересылаются через коммутационную матрицу и транспортируются через функции физического уровня и уровня канала передачи данных, поэтому выходные порты выполняют функции обратного канала передачи данных и физического уровня в качестве входных портов. - Процессор маршрутизации:
路由选择处理器(Routing processor)
Выполнять протоколы маршрутизации на маршрутизаторах, поддерживать таблицы маршрутизации и выполнять функции управления сетью.
Вышеизложенное является лишь кратким введением этих компонентов.На самом деле, состав этих компонентов не так прост, как описано.Давайте поговорим об этих компонентах более подробно.
входной порт
Вышеизложенное показывает, что входной порт имеет множество функций, включая окончание строки, обработку данных, поиск и пересылку.На самом деле, эти функции имеют соответствующие модули внутри входного порта.Внутренняя реализация входного порта показана на рисунке ниже.
Каждый входной порт имеет поддерживаемый процессор маршрутакопия таблицы маршрутизации, который обновляется в соответствии с обработчиком маршрута. Эта копия таблицы маршрутизации позволяет каждому входному порту переключаться, не проходя через процессор маршрутизации единообразно. Это分散式
Этот метод позволяет избежать узких мест при пересылке, вызванных унифицированной обработкой маршрутизатора.
В маршрутизаторе с ограниченными возможностями обработки входного порта входной порт не будет выполнять функцию коммутации, но будет равномерно обрабатываться процессором маршрутизации, а затем искать и пересылать пакет данных на соответствующий выходной порт в соответствии с таблицей маршрутизации.
Как правило, этот тип маршрутизатора представляет собой не отдельный маршрутизатор, а маршрутизатор, в котором рабочая станция или сервер действуют как маршрутизатор.Внутри этого маршрутизатора процессор маршрутизации фактически
CPU
, в то время как входной порт на самом деле просто网卡
.
Входной порт найдет выходной порт согласно таблице переадресации, а затем пакет будет отправлен.Теперь вопрос, у каждого пакета есть своя ссылка? Если количество пакетов очень велико, достигая уровня 100 миллионов, будет ли 100 миллионов выходных путей к портам?
Явно не в нашем подсознании, давайте рассмотрим пример ниже.
Ниже приведен пример трех входных портов, соответствующих трем выходным ссылкам в таблице переадресации.
Видно, что для данного примера в таблице форвардинга маршрутизатора не так много ссылок, нужно всего четыре, что соответствует выходной ссылке 0 1 2 3 . Другими словами, 100 миллионов ссылок можно получить, используя 4 таблицы переадресации.
Как этого добиться?
Используя этот стиль таблицы переадресации, адрес пакета маршрутизатора前缀(prefix)
будут сопоставлены с записями в этой таблице.
Если есть совпадение, оно будет перенаправлено на соответствующую ссылку, что может быть трудно понять.Приведу пример.
Например, в это время приходит пакет 11000011 10010101 00010000 0001100. Поскольку этот пакет соответствует 11000011 10010101 00010000, маршрутизатор перенаправит его на 0-канальный интерфейс. Если префикс не соответствует ни одному из трех исходящих каналов, указанных выше, маршрутизатор переадресует на интерфейс канала 3.
следует сопоставление маршрутов最长前缀原则(longest prefix matching rule)
, самый длинный принцип сопоставления, как следует из названия, заключается в том, что если есть два совпадающих элемента, один длинный и один короткий, будет сопоставлен самый длинный совпадающий элемент.
Как только выходной порт пакета определяется функцией поиска, пакет поступает в коммутационную матрицу. При входе в коммутационную матрицу, если коммутационная фабрика используется, она блокирует входящие пакеты до тех пор, пока коммутационная матрица не запланирует новые пакеты.
переключать ткань
Коммутационная структура является основной функцией маршрутизатора, и пакет пересылается из входного порта в выходной порт через функцию коммутатора, которая является основной функцией коммутационной матрицы. Существует много форм коммутационных структур, в основном разделенных наПодкачка через память, подкачка через шину, подкачка через сеть, давайте обсудим это отдельно.
- После подкачки памяти: самые первые традиционные компьютеры использовали
内存交换
Да, между входным портом и выходным портом есть процессор. Порты ввода и вывода функционируют как устройства ввода-вывода в традиционных операционных системах. Когда пакет прибывает на входной порт, порт сначала начинается с中断
способ сигнализировать маршрутизатору о необходимости скопировать пакет из входного порта в память. Затем процессор маршрутизации извлекает адрес назначения из заголовка пакета, находит соответствующий порт вывода в таблице переадресации для пересылки и одновременно копирует пакет в буфер порта вывода.
Здесь следует отметить одну вещь: если пропускная способность памяти считывает или записывает B пакетов в секунду, то общая пропускная способность коммутатора (общая скорость передачи пакетов от входных портов к выходным портам) должна быть меньше B/2.
- Через коммутацию шины: в этом методе обработки шина напрямую передает пакет на выходной порт через входной порт без вмешательства промежуточного маршрутизатора. Рабочий процесс шины выглядит следующим образом: Входной порт назначает
标签
, а затем пакет отправляется на все выходные порты через шину. Каждый выходной порт будет судить, соответствует ли порт в метке своему собственному. Если он совпадает, то выходной порт удалит метку. Эта метка используется только внутри переключаться через автобус. Если оба多个
Когда пакет поступает на маршрутизатор, может быть обработан только один пакет, а остальные пакеты должны ожидать перед входом в коммутационную матрицу.
- Переключение через объединенную сеть. Одним из способов преодоления ограничений пропускной способности одной общей шины является использование более сложной объединенной сети. Как показано ниже
Каждая вертикальная шина пересекает каждую горизонтальную шину в точке пересечения, которую можно открывать и закрывать в любое время с помощью контроллера коммутационной матрицы. Когда пакет поступает на входной порт А, если его необходимо перенаправить на порт X, контроллер коммутатора закрывает точку пересечения сечения от A до X, и порт A пересылает пакет по шине. Эта взаимосвязанная коммутационная структура сети非阻塞的(non-blocking)
, то есть замыкание пересечения A -> X не повлияет на связь B -> Y. Если два пакета от двух разных входных портов предназначены для одного и того же выходного порта, в этом случае может быть обменян только один пакет, а другой должен ожидать.
обработка выходного порта
Как показано на рисунке ниже, обработка выходного порта извлекает пакеты, уже сохраненные в памяти выходного порта, и отправляет их по выходному каналу. Это включает в себя выбор и удаление пакетов из очереди для передачи, выполнение требуемых функций канального уровня и физического уровня.
Существует очередь, ожидающая входа в обмен на входном порту, и очередь, ожидающая переадресации на выходном порту.Нагрузка трафика, коммутационная тканьотносительная частота и линейная скорость.
Поскольку очередь продолжает увеличиваться, пространство кэша маршрутизатора будет исчерпано, так что не будет памяти для хранения переполненной очереди, что приведет к появлению пакетов.丢包(packet loss)
, это то, что мы подразумеваем под отбрасыванием пакетов в сети или отбрасыванием маршрутизаторами.
Когда появится очередь
Затем мы вводим возможные ситуации с очередями через очередь очереди входного порта и очередь очереди выходного порта.
входная очередь
Если скорость обработки коммутационной фабрики не так высока, как прибытие входной очереди, в этом случае входной порт будет поставлен в очередь, а пакеты, не достигшие коммутационной матрицы, будут добавлены в очередь входного порта, ожидая передаваться на выходной порт через коммутационную матрицу.
Для ясного описания входной очереди предположим следующую ситуацию:
- Использовать обменный метод сетевого взаимодействия;
- Предполагается, что все каналы имеют одинаковую скорость;
- Пакету требуется одинаковое количество времени для переключения с входного порта на выходной порт в канале, с любого входного порта на заданный выходной порт;
- Пакеты могут передаваться параллельно, если выходные порты отличаются по способу FCFS. Но если пакеты в любых двух входных портах предназначены для одного и того же пункта назначения, то один из пакетов будет заблокирован и должен ожидать во входной очереди, поскольку коммутационная матрица может передавать только один пакет на данный порт за раз.
Как показано ниже
В очереди A два пакета во входной очереди будут отправлены в один и тот же пункт назначения X, при условии, что коммутационная матрица собирается отправить пакет в A, в это время также есть пакет в очереди C, отправленный в X , в этом случае пакет, отправленный на X в C, будет ожидать, и не только он, но и пакет, отправленный на выходной порт Y в очереди C, также будет ожидать, даже если в Y нет конкуренции. Это явление называется线路前部阻塞(Head-Of-The-Line, HOL)
.
очередь вывода
Ниже мы обсудим ситуацию, когда в очереди вывода есть ожидание. Предположим, что скорость переключения намного выше, чем скорость передачи ввода/вывода, и имеется N входных пакетов, предназначенных для пересылки на один и тот же выходной порт. В этом случае в процессе отправки пакетов на исходящий канал на передающий порт будет поступать N новых пакетов. Поскольку выходной порт может передавать только один пакет в единицу времени, эти N пакетов будут ожидать. Однако при ожидании обработки N пакетов N пакетов поступают одновременно, поэтому на выходном порту может образоваться очередь пакетов. В этом случае количество групп со временем станет достаточно большим, поэтому耗尽
Доступная память для выходного порта.
Если не хватает памяти для кэширования пакетов, необходимо рассмотреть другие способы, есть два основных способа: один — терять пакеты, а другой — использовать弃尾(drop-tail)
метод; один состоит в том, чтобы удалить один или несколько пакетов, уже стоящих в очереди, чтобы освободить место для новых пакетов.
Политика сетевого уровня оказывает большое влияние на управление перегрузкой TCP — это политика отбрасывания пакетов маршрутизатора. В простейшем случае очередь маршрутизатора обычно обрабатывает входящие пакеты по правилам FCFS. Поскольку длина очереди всегда ограничена, когда очередь заполнена, все пакеты, которые прибывают позже (если они могут продолжать стоять в очереди, эти пакеты будут помещены в конец очереди) будут отброшены. Это называется стратегией отбрасывания хвоста.
Часто лучше отказаться от буфера до того, как он заполнится.
Как показано на рисунке выше, каждый входной порт ABC достиг пакета, и этот пакет отправляется в X, и одновременно может обрабатываться только один пакет, а затем еще два пакета отправляются из AB в X соответственно. Таким образом, в настоящее время в X ожидают 4 пакета.
После пересылки предыдущего пакета выходной порт выберет分组调度(packet scheduleer)
Выберите пакет для передачи, о передаче пакетов мы поговорим ниже.
пакетное планирование
Теперь давайте обсудим проблему порядка планирования пакетов, то есть того, как пакеты, поставленные в очередь, передаются по выходному каналу. В нашей жизни есть бесчисленное множество примеров очередей, но общий алгоритм очередей в нашей жизни таков:先来先服务(FCFS)
,Слишком先进先出(FIFO)
.
первым пришел-первым вышел
Принцип «первым пришел – первым обслужен» отображается в структуру данных.队列
, за исключением того, что теперь это модель очередей правила планирования ссылок.
Правила планирования FIFO выбирают пакеты в том же порядке, в котором они поступают в очередь выходных каналов, и пакеты, которые первыми поступают в очередь, будут пересылаться первыми. В этой абстрактной модели, если очередь заполнена, отброшенным пакетом будет пакет после конца очереди.
приоритетная очередь
Очередь с приоритетом — это улучшенная версия организации очереди по принципу «первым пришел — первым обслужен».
Обычно каждая группа с разным приоритетом имеет свой класс приоритета, и каждый класс приоритета имеет свою очередь Выбор обычно осуществляется по принципу FIFO.
Циклическая взвешенная справедливая организация очередей
существует循环加权公平规则(round robin queuing discipline)
Ниже пакеты сортируются как по приоритету. Однако строгого приоритета обслуживания между классами нет. Циклический планировщик переключается между этими классами для предоставления услуг. Как показано ниже
При круговой взвешенной справедливой организации очереди передаются пакеты класса 1, затем пакеты класса 2 и, наконец, пакеты класса 3, что представляет собой цикл, а затем он начинается снова, снова с 1 -> 2 -> 3. этот опрос по порядку. Каждая очередь также является очередью «первым пришел – первым вышел».
Это так называемый保持工作排队(work-conserving queuing)
Правило состоит в том, что если в процессе опроса будет обнаружена пустая очередь, выходной порт не будет ждать пакетов, а продолжит опрашивать следующие очереди.
IP-протокол
После того, как маршрутизатор перенаправит пакет, он передаст пакет в сеть, и в конечном итоге пакет будет передан клиенту или серверу, так как же пакет узнает, куда его отправить? Именно IP-протокол играет ключевую роль.
IP в основном делится на три части, а именноIP-адресация, маршрутизация и пакетирование. Ниже мы сосредоточимся в основном на этих трех пунктах.
айпи адрес
Поскольку пакет данных должен передаваться по сети, должно быть известно, куда отправляется пакет данных, то есть требуется информация о целевом адресе.IP-адрес — это адрес назначения, который соединяет все хосты в сети для связи., поэтому каждый хост в сети должен иметь свой собственный IP-адрес.
В ссылке, отправленной дейтаграммой IP, ссылка может быть очень длинной. Например, дейтаграмма, отправленная из Китая в Соединенные Штаты, может быть потеряна из-за некоторых непредвиденных факторов, таких как джиттер сети.В настоящее время мы находимся в этой цепочке. Будут некоторые на пути中转站
, с одной стороны, он может гарантировать, что дейтаграмма не потеряна, а с другой стороны, он может контролировать пересылку дейтаграммы.Эта транзитная станция является маршрутизатором, о котором мы говорили ранее.Процесс пересылки路由控制
.
路由控制(Routing)
Это относится к функции отправки пакетных данных на конечный адрес назначения.Даже если сеть сложная и изменчивая, она может достичь адреса назначения посредством управления маршрутизацией. Следовательно, может ли дейтаграмма достичь целевого хоста или нет, зависит от контроля маршрутизатора.
здесь есть существительное跳
, потому что в канале может быть много маршрутизаторов, а передача дейтаграмм между маршрутизаторами является скачком.Например, если вы общаетесь с Лао Ваном по соседству, вы можете пройти через маршрутизатор A -> маршрутизатор B -> маршрутизатор C посередине. .
Итак, какова дальность прыжка?
Переход — это интервал между MAC-адресом источника и MAC-адресом получателя для передачи кадра., здесь введен новый термин, что такое MAC-адрес?
MAC-адрес относится к物理地址(Physical Address)
, который является адресом, используемым для определения местоположения сетевого устройства. В сетевой модели OSI сетевой уровень отвечает за поиск IP-адресов, а канальный уровень отвечает за поиск MAC-адресов. MAC-адрес используется для уникальной идентификации сетевой карты в сети.Если устройство имеет одну или несколько сетевых карт, каждая сетевая карта должна иметь уникальный MAC-адрес, что означает, что MAC-адрес и сетевая карта тесно связаны. .
Каждый переход маршрутизатора должен спрашивать текущий транзитный маршрутизатор, куда должен перейти следующий переход, чтобы перейти к адресу назначения. Вместо того, чтобы после того, как дейтаграмма только начала отправляться, будут показаны все пути в сети.Такой вид множественных переходов также называется多跳路由
.
определение IP-адреса
На сегодняшний день существует две версии IP-адресов: IPv4 и IPv6.Давайте сначала обсудим IPv4-адреса, которые все еще широко используются сегодня, а затем рассмотрим IPv6.
IPv4 представлен 32-битным положительным целым числом, которое будет преобразовано в двоичный код для обработки внутри компьютера, но двоичный код не соответствует привычке человеческого чтения, поэтому мы основываемся на易读性
Принцип 32-битных IP-адресов разбит на 8-битные группы на четыре группы..
Разделите и преобразуйте каждую группу в десятичную. Как показано ниже
Затем указанный выше 32-битный IP-адрес будет преобразован в десятичный 156.197.1.1.
Кроме того, из рисунка мы также можем получить следующую информацию
Каждое такое 8-битное число естественно неотрицательно, и его диапазон значений составляет [0,255].
Общее количество IP-адресов равно степени 2^32, и это значение рассчитывается как4294967296
, что позволяет подключить к сети примерно 4,3 миллиарда устройств. Это правда?
На самом деле IP настраивается не по количеству хостов, а по количеству хостов на устройстве.网卡(NIC)
Для настройки каждой сетевой карте назначается один или несколько IP-адресов, и обычно маршрутизатор имеет как минимум две сетевые карты, поэтому можно установить более двух IP-адресов, поэтому количество хостов намного меньше 4,3 миллиарда.
Построение и классификация IP-адресов
IP-адрес по网络标识
и主机标识
Он состоит из двух частей: идентификатор сети представляет собой сетевой адрес, а идентификатор узла представляет собой адрес узла. Идентификатор сети настраивается с разными значениями на каждом сегменте канала передачи данных. Идентификатор сети должен гарантировать, что адреса каждого сегмента, соединенного друг с другом, не дублируются. Хосты, подключенные к одному сегменту, должны иметь одинаковый сетевой адрес. айпи адрес主机标识
Не допускается повторное появление в одном и том же сегменте сети.
Например: Например, я нахожусь в Шицзячжуане (кажется, мне не нужно быть похожим на Анга), определенное здание в моем сообществе эквивалентно сетевому идентификатору, а количество домохозяйств в определенном здании эквивалентно мой хост-ID, конечно.Если у вас есть целое здание, то примите это, как будто я этого не говорил. Вы можете найти мой сетевой идентификатор через здание xx, общину xx, дорогу xx, район xx, город xx, провинцию xx, а количество домохозяйств в этом здании эквивалентно моему сетевому идентификатору.
IP-адреса делятся на четыре категории, а именноКласс А, Класс Б, Класс С, Класс D, Класс Е, который классифицирует идентификаторы сети и идентификаторы узлов на основе битов с 1 по 4 в IP-адресе.
-
A 类
: (1.0.0.0 - 126.0.0.0) (маска подсети по умолчанию: 255.0.0.0 или 0xFF000000) Первый байт — это номер сети, а последние три байта — номер хоста. Первая часть этого типа IP-адреса равна 0, поэтому сетевой номер адреса находится в диапазоне от 1 до 126. Обычно используется для больших сетей. -
B 类
: (128.0.0.0 - 191.255.0.0) (маска подсети по умолчанию: 255.255.0.0 или 0xFFFF0000) Первые два байта — это номер сети, а последние два байта — это номер хоста. Первая часть этого типа IP-адреса равна 10, поэтому сетевой номер адреса находится в диапазоне от 128 до 191. Обычно используется для сетей среднего размера. -
C 类
: (192.0.0.0 - 223.255.255.0) (маска подсети: 255.255.255.0 или 0xFFFFFF00) Первые три байта — номер сети, а последний байт — номер хоста. Первая часть этого типа IP-адреса — 110, поэтому сетевой номер адреса находится в диапазоне от 192 до 223. Обычно используется для небольших сетей. -
D 类
: многоадресный адрес. Первая часть этого типа IP-адреса — 1110, поэтому сетевой номер адреса находится в диапазоне от 224 до 239. Обычно используется для многоадресных пользователей. -
E 类
: зарезервированный адрес. Первая часть этого типа IP-адреса — 1111, поэтому сетевой номер адреса находится в диапазоне от 240 до 255.
Для простоты понимания я нарисовал схему классификации IP-адресов, как показано ниже.
В соответствии с различными диапазонами IP-адресов существуют различные классификации общей земельной площади следующим образом.
маска подсети
子网掩码(subnet mask)
Также известный как сетевая маска, это метод, используемый для указания того, какие биты IP-адреса идентифицируют сеть, в которой находится хост. Маска подсети — это 32-битный адрес, используемый для маскировки части IP-адреса, чтобы различать сетевую идентификацию и идентификацию хоста.
Поскольку классификация IP-адреса определена, его сетевая идентификация и идентификация хоста также определяются, поэтому диапазон сетевой идентификации, представленный каждой классификацией, выглядит следующим образом.
использовать1
Диапазон битов, представляющий сетевой IP-адрес,0
Представляет диапазон IP-адресов узлов. Представляя их в десятичном виде, эти три категории представляются следующим образом
зарезервированный адрес
Из нескольких классов адресов в IPv4 есть несколько зарезервированных адресных пространств, которые нельзя использовать в Интернете. Эти адреса используются для специальных целей и не могут маршрутизироваться за пределы локальной сети.
Версия IP-протокола
В настоящее время в глобальной сети Интернет сосуществуют две версии IP:IP 版本 4(IPv4)
иIP 版本6(IPv6)
. IP-адреса состоят из двоичных значений, которые управляют маршрутизацией всех данных в Интернете. Адреса IPv4 имеют длину 32 бита, а адреса IPv6 — 128 бит.
IP-ресурсы в Интернете предоставляютсяInternet 分配号码机构(IANA)
Назначается региональному интернет-реестру (RIR), такому как APNIC, который отвечает за корневой DNS, IP-адресацию и другие ресурсы интернет-протокола.
Давайте рассмотрим две очень важные версии протокола IP, IPv4 и IPv6.
IPv4
Полное название IPv4Internet Protocol version 4
, является четвертой версией интернет-протокола. IPv4 - это протокол без установления соединения, этот протокол сделает все возможное для доставки пакетов, что означает, что он не может гарантировать, что какие-либо пакеты достигнут пункта назначения или что все пакеты достигнут узла назначения в правильном порядке. Оба эти протокола контролируются верхними уровнями. например протокол управления передачей. Тем не менее, только с точки зрения IP это ненадежный протокол.
Ранее мы говорили, что пакеты сетевого уровня называются
数据报
, поэтому наше следующее описание также будет вращаться вокруг дейтаграммы.
Формат дейтаграммы IPv4 выглядит следующим образом.
Ключевые слова в дейтаграммах IPv4 и их объяснение
-
版本字段(Version)
Оно занимает 4 бита, а версии, используемые обеими сторонами, должны быть одинаковыми.Для версии IPv4 значение поля равно 4. -
首部长度(Internet Header Length)
Занимает 4 бита, а длина заголовка указывает, сколько 32 бит (4 байта) содержится в заголовке. Поскольку заголовок IPv4 может содержать неопределенные параметры, это поле используется для определения смещения данных. Большинство IP-адресов не включают эту опцию, поэтому общая длина заголовка устанавливается равной 5, а дейтаграмма — 20 байт. -
服务类型(Differential Services Codepoint,DSCP)
Занимает 6 бит для использования различных дейтаграмм IP, таких как некоторые дейтаграммы с малой задержкой, высокой пропускной способностью и надежностью. Виды услуг представлены в таблице ниже
-
拥塞通告(Explicit Congestion Notification,ECN)
Занимая 2 бита, он позволяет уведомить другую сторону о возникновении перегрузки сети без отбрасывания пакетов. ECN — это необязательная функция, которая используется только в том случае, если обе стороны поддерживают ее и хотят ее использовать, а базовая сеть поддерживает ее. Сначала DSCP и ECN вместе назывались TOS, что означает дифференцированные услуги, но позже были преобразованы в DSCP и ECN. -
数据报长度(Total Length)
Занимает 16 бит, эти 16 бит и есть общая длина включая данные.Теоретически общая длина дейтаграммы равна 2 в 16 степени - 1, а максимальная длина 65535 байт, но на деле дейтаграмма редко превышает 1500 байт. Согласно IP, все хосты должны поддерживать пакеты размером не менее 576 байт, но большинство современных хостов поддерживают пакеты большего размера. базового протокола передачи данных最大传输单元(MTU)
Когда значение поля меньше длины IP-пакета, пакет необходимо фрагментировать. -
标识符(Identification)
Занимает 16 бит, это поле используется для идентификации всех фрагментов, потому что фрагменты могут приходить не по порядку, поэтому все фрагменты, достигшие целевого хоста, будут реорганизованы, каждый раз при генерации дейтаграммы счетчик увеличивается на 1, и присвоен этому полю. -
标志(Flags)
Занимает 3 бита, флаг используется для управления и идентификации осколков, эти 3 бита- 0 бит: зарезервировано, должно быть 0;
- 1 человек:
禁止分片(Don’t Fragment,DF)
, сегментирование разрешено только при DF = 0; - 2 цифры:
更多分片(More Fragment,MF)
, MF = 1 означает, что еще остались осколки, MF = 0 означает, что это последний осколок.
Если флаг DF установлен в 1, но маршрут требует фрагментации, то дейтаграмма отбрасывается.
-
分片偏移(Fragment Offset)
Занимая 13 бит, он указывает смещение каждого фрагмента относительно начала исходного сообщения в блоках по 8 байт. -
存活时间(Time To Live,TTL)
Занимает 8 бит, время жизни, чтобы избежать пакетов в Интернете迷失
, например попадание в петлю маршрутизации. Время жизни указывается в секундах, но время меньше одной секунды округляется до одной секунды. На самом деле это фактически становится счетчиком переходов: каждый маршрутизатор, через который проходит пакет, уменьшает это поле на 1, когда это поле равно 0, пакет больше не передается на следующий переход и отбрасывается, максимальное значение этого поля равно 255. -
协议(Protocol)
Занимая 8 бит, это поле определяет протокол, используемый в области данных сообщения. С содержанием договора можно ознакомиться вWoohoo.IANA.org/assignments…Получить его на официальном сайте. -
首部校验和(Header Checksum)
Занимает 16 бит, а контрольная сумма заголовка будет проверять поле на исправление ошибок.В каждом прыжке маршрутизатор будет пересчитывать контрольную сумму заголовка и сравнивать ее с этим полем.При несоответствии пакет будет отброшен. -
源地址(Source address)
Занимая 32 бита, это условие композиции адреса IPv4, а адрес источника относится к отправителю дейтаграммы. -
目的地址(Destination address)
Занимая 32 бита, это условие композиции адреса IPv4, а адрес назначения относится к получателю дейтаграммы. -
选项(Options)
Это дополнительное поле, поле option занимает от 1 до 40 байт и обычно следует за адресом получателя. Поле параметров следует учитывать, если длина заголовка > 5. -
数据
Не является частью заголовка и, следовательно, не включается в контрольную сумму заголовка.
В процессе IP-передачи размер каждой дейтаграммы различен, и пакеты сетевого уровня, которые может передавать каждый протокол канального уровня, также различны.Некоторые протоколы могут передавать большие дейтаграммы, в то время как другие могут передавать только небольшие дейтаграммы. различные уровни связи могут нести следующие.
Фрагментация IPv4
Максимальный объем данных, который может нести кадр канального уровня, называется最大传输单元(Maximum Transmission Unit, MTU)
, каждая дейтаграмма IP инкапсулируется в кадр канального уровня от одного маршрутизатора к другому. Поскольку максимальный MTU, поддерживаемый каждым канальным уровнем, отличается, когда размер дейтаграммы превышает MTU, она будет фрагментирована на канальном уровне, и каждая дейтаграмма будет индивидуально инкапсулирована на канальном уровне, а каждый меньший фрагмент называется片(fragement)
.
Каждый фрагмент будет повторно собран после достижения пункта назначения, а точнее перед транспортным уровнем.И TCP, и UDP будут хотеть отправлять полные, нефрагментированные пакеты.Из соображений производительности реорганизация фрагмента не в маршрутизаторе, а в целевом хосте.
Когда хост-получатель получает дейтаграммы от отправителя, ему необходимо определить, были ли фрагменты в этих дейтаграммах доставлены фрагментами исходных дейтаграмм, и если да, то когда фрагменты были получены посередине.最后一片
, и как кусочки соединяются вместе в дейтаграмму.
В ответ на эти потенциальные проблемы разработчики IPv4Логотипы, флаги и смещения слайсовв заголовке IP-датаграммы. При создании дейтаграммы хост-отправитель устанавливает исходный и конечный адреса для дейтаграммы и вставляет标识号
. Хост-отправитель обычно добавляет 1 к идентификатору каждой отправляемой дейтаграммы. Когда маршрутизатору необходимо фрагментировать дейтаграмму, каждая сформированная дейтаграмма имеетАдрес источника, адрес назначения и идентификационный номер. Когда пункт назначения получает серию дейтаграмм от одного и того же хоста-отправителя, он может проверить идентификационный номер дейтаграммы, чтобы определить, какие данные были отправлены исходной дейтаграммой. Так как IP является ненадежным сервисом, в сети могут быть потеряны фрагменты, в этом случае последний бит фрагмента обычно устанавливается в 0, остальные фрагменты в 1, и используется поле смещения Указывает, где должен быть фрагмент находиться в дейтаграмме.
IPv4-адресация
IPv4 поддерживает три различных типа режимов адресации, а именно:
- Режим одноадресной адресации: в этом режиме данные отправляются только на один узел назначения.
- Режим широковещательной адресации: в этом режиме пакеты будут адресоваться всем хостам в сегменте сети. Здесь клиент отправляет пакет, который принимается всеми серверами:
- Режим многоадресной адресации: этот режим представляет собой смесь первых двух режимов, т. е. передаются пакеты, которые не нацелены ни на один хост, ни на все хосты в сегменте.
IPv6
По мере того, как подключается все больше и больше оконечных систем, IPv4 больше не может удовлетворить распределение, поэтому появился IPv6.IPv6 — это интернет-протокол, стандартизированный для решения проблемы исчерпания адресов IPv4. Длина адреса IPv4 составляет 4 8 байт или 32 бита, а длина адреса IPv6 в четыре раза больше исходной, т. е. 128 бит, обычно записывается как 8 16-битных байтов.
Переход с IPv4 на IPv6 занимает много времени и требует установки IP-адресов всех хостов и маршрутизаторов в сети.Сегодня, при неизменной популярности Интернета, замена всех IP-адресов является рабочей нагрузкой и огромной задачей. Мы поговорим об этом позже.
Давайте посмотрим, как выглядит адрес IPv6.
-
版本
Как и в IPv4, номер версии состоит из 4 бит, а значение номера версии IPv6 равно 6. -
流量类型(Traffic Class)
Занимая 8 бит, он эквивалентен Type Of Service в IPv4. -
流标签(Flow Label)
Занимает 20 бит, эти 20 бит используются для идентификации потока дейтаграммы, что может дать приоритет определенным дейтаграммам в потоке или может использоваться для предоставления более высокого приоритета дейтаграммам из определенных приложений. Только когда метка потока, адрес источника и адрес назначения согласованы, будет ли он считаться потоком. -
有效载荷长度(Payload Length)
Занимая 16 бит, это 16-битное значение используется как целое число без знака, которое дает количество байтов, следующих за 40-байтовым заголовком дейтаграммы Dingchang в дейтаграмме IPv6. -
下一个首部(Next Header)
Занимая 8 бит, он используется для определения того, по какому протоколу должно быть доставлено содержимое дейтаграммы, будь то протокол TCP или протокол UDP. -
跳限制(Hop Limit)
Занимая 8 бит, это поле имеет то же значение, что и IPv4 TTL. Каждый раз, когда данные проходят через маршрут, они будут уменьшаться на 1, а если уменьшаться до 0, данные будут отбрасываться. -
源地址(Source Address)
Занимает 128 бит (8 16 бит), указывая IP-адрес отправителя. -
目标地址(Destination Address)
Занимает 128 бит (8 16 бит), указывая IP-адрес приемника.
Как видите, по сравнению с IPv4, IPv6 отменяет следующие поля:
- Идентификаторы, флаги и битовые смещения: IPv6 не допускает фрагментации и повторной сборки на промежуточных маршрутизаторах. Эта операция может быть выполнена только в конечной системе.IPv6 помещает эту функцию в конечную систему, что увеличивает скорость пересылки в сети.
- контрольная сумма заголовка: Поскольку проверка целостности сегмента выполняется на транспортном уровне и канале передачи данных, разработчики IP, вероятно, посчитали излишним иметь контрольную сумму заголовка на сетевом уровне, поэтому они удалили ее.IP больше ориентирован на быструю обработку пакетных данных.
- поле опций: Поле параметров больше не является частью стандартного заголовка IP, но оно не исчезло, но может появиться в заголовке расширения IPv6, который является следующим заголовком.
Заголовок расширения IPv6
Длина заголовка IPv6 фиксирована, и в него нельзя добавить поле option, вместо этого IPv6 использует扩展首部
Заголовок расширения обычно находится между заголовком IPv6 и заголовком TCP/UDP.Необязательная длина фиксирована и составляет 40 байтов в IPv4, а в IPv6 такого ограничения нет. Заголовки расширения IPv6 могут быть любой длины. Заголовок расширения также может содержать протокол заголовка расширения и следующее поле расширения.
В заголовке IPv6 нет полей идентификации и флага,При фрагментации IP нужно использовать заголовок расширения.
Конкретная таблица заголовков расширения выглядит следующим образом
Давайте посмотрим на характеристики IPv6.
Возможности IPv6
Характеристики IPv6 могут быть реализованы в IPv4, но даже если реализована операционная система IPv4, она может не реализовать все функции IPv4. Однако IPv6 популяризировал эти функции, а это означает, что эти функции были реализованы в IPv6.В основном эти функции включают:
-
Адресное пространство становится больше: это одна из важнейших особенностей IPv6, то есть поддержка большего адресного пространства.
-
Оптимизированная структура сообщений: IPv6 намного проще, чем IPv4.Длина сообщения IPv4 не фиксирована, и есть постоянно изменяющееся поле option, сегмент сообщения IPv6 фиксирован, а поле option и фрагментированное поле перемещаются в заголовок расширения IPv6. , что чрезвычайно. Структура пакета IPv6 значительно упрощена.
-
Реализована автоматическая настройка: IPv6 поддерживаетграждане и лица без гражданстваАвтоматический режим настройки. Таким образом, нет
DHCP 服务器
Не останавливает межсегментную коммуникацию. -
Иерархическая структура сети: IPv6 больше не делит адреса по классификации A, B, C и т. д. как IPv4, а присваивает их в порядке IANA -> RIR -> ISP. IANA — это Международное управление по присвоению номеров, RIR — это региональный интернет-реестр, а интернет-провайдеры — это некоторые операторы (например, Telecom, Mobile, Unicom).
-
IPSec: в заголовке расширения IPv6 есть заголовок проверки подлинности и инкапсулирующий заголовок полезных данных безопасности.Эти два заголовка определяются IPsec. С помощью этих двух заголовков сетевой уровень может обеспечить сквозную безопасность самостоятельно, без помощи других протоколов, таких как протокол IPv4.
-
Поддержка Anycast: IPv6 вводит новый режим адресации, называемый произвольной адресацией.
IPv6-адрес
Мы знаем, что длина IPv6-адреса составляет 128 бит, а диапазон, который он может представлять, равен степени 2 ^ 128. Это число очень велико и охватывает почти все хосты и маршрутизаторы, которые только можно себе представить, так как же следует представлять IPv6?
Как правило, мы делим 128-битные IP-адреса на группы по 16 бит и используем:
номер для разделения, если есть последовательные 0, вы также можете опустить 0 и использовать::
Разделенные двумя двоеточиями, помните, что IP-адрес может иметь только два последовательных двоеточия одновременно.
Вот несколько примеров адресов IPv6
- представление двоичных чисел
- выражается в шестнадцатеричном формате
- Когда появляются два двоеточия
Как показано выше, 0 в середине A120 и 4CD заменяется на :: .
Как перейти с IPv4 на IPv6
Мы говорили о формате пакета IPv4 и IPv6, каково значение пакета и каковы характеристики IPv4 и IPv6.Прочитав вышеизложенное, вы уже знаете, что IPv4 сейчас недостаточно, и с непрерывным развитием и ссылка на IPv6, хотя новый IPv6 может сделать向后兼容
, то есть IPv6 может отправлять и получать дейтаграммы IPv4, ноРазвернутые системы с поддержкой IPv4, которые не могут обрабатывать дейтаграммы IPv6.. Таким образом, IPv4 необходимо мигрировать на IPv6, и миграция не означает замену IPv4 на IPv6. Это просто означает, что включены как IPv6, так и IPv4.
Итак, теперь возникает вопрос, как IPv4 мигрирует на IPv6? Это является предметом нашего следующего обсуждения.
логотип
Самый простой способ сделать это — установить день флага, указав время и дату, когда все интернет-машины по всему миру отключатся и перейдут с IPv4 на IPv6. Последняя крупная технологическая миграция была 35 лет назад, но очевидно, что я не буду слишком много объяснять, это определенно так.不行的
. Не говоря уже о неизмеримом воздействии, как мы можем гарантировать, что люди во всем мире знают, как устанавливать свои собственные IPv6-адреса? Знаковый день, когда будут созданы миллиарды машин, теперь немыслим.
туннельная технология
Метод перехода с IPv4 на IPv6, который сегодня используется на практике, таков:隧道技术(tunneling)
.
Что такое туннельная технология?
Туннелирование — это способ использования инфраструктуры Интернета для передачи данных между сетями.Данные, передаваемые с использованием туннеля, могут быть фреймами данных или пакетами различных протоколов. Протокол, в котором используется технология туннелирования, называется隧道协议(tunneling protocol)
. Туннельные протоколы инкапсулируют кадры данных или пакеты этих протоколов в новые заголовки и отправляют их. Новые заголовки предоставляют информацию о маршрутизации, чтобы инкапсулированные данные полезной нагрузки могли передаваться через объединенную сеть.
Использование туннельной технологии обычно создает隧道
, основание для строительства тоннеля следующее:
Например, два узла IPv6 (B и E ниже) используют дейтаграммы IPv6 для связи, но они связаны между собой через два маршрутизатора IPv4. Затем нам нужно сформировать туннель между узлами IPv6 и маршрутизаторами IPv4, как показано на следующем рисунке.
С помощью туннелей узел IPv6 на передающем конце туннеля может поместить всю дейтаграмму IPv6 в одну дейтаграмму IPv4.数据(有效载荷)
поле, то адрес дейтаграммы IPv4 устанавливается так, чтобы он указывал на узел IPv6 на принимающей стороне туннеля, например, на узел E выше. Затем он отправляется на первый узел C в туннеле, как показано ниже.
IPv4 в середине туннеля обеспечивает маршрутизацию, и маршрутизатор не знает, что этот IPv4 содержит адрес, указывающий на IPv6 внутри. Когда узел IPv6 на приемном конце туннеля получает дейтаграмму IPv4, он определяет, что дейтаграмма IPv4 содержит дейтаграмму IPv6, о чем можно узнать, наблюдая за длиной и данными дейтаграммы. Затем дейтаграмма IPv6 извлекается и предоставляется маршрут IPv6, как если бы два узла были напрямую соединены для передачи дейтаграммы.
Суммировать
Эта статья является серийной статьей из серии компьютерных сетей.В этой статье мы в основном обсуждаем связанные знания о сетевом уровне, внутреннюю структуру маршрутизатора, как маршрутизатор реализует переадресацию и соответствующее содержание протокола IP: в том числе соответствующее содержимое IP-адреса, IPv4 и IPv6. Наконец, мы обсудили, как выполнить переход с IPv4 на IPv6.
Кроме того, добавьте мой WeChat becxuan, присоединяйтесь к группе ежедневных вопросов и делитесь одним вопросом для интервью каждый день.Для получения дополнительной информации, пожалуйста, обратитесь к моему Github,Будь лучшим лучшимJavaer
Я лично перелил шесть PDF-файлов. После того, как программист поиска WeChat cxuan обратил внимание на официальный аккаунт, он ответил cxuan в фоновом режиме и получил все PDF-файлы.Эти PDF-файлы следующие