Точно так же длина этой статьи относительно велика, поэтому давайте сначала возьмем ментальную карту, чтобы провести вас через нее.
Во-первых, многоуровневая архитектура компьютерной сети
Нетрудно заметить, что TCP/IP и OSI немного различаются многоуровневыми модулями. Эталонная модель OSI фокусируется на том, «каковы необходимые функции протокола связи», в то время как TCP / IP уделяет больше внимания тому, «какая программа должна быть разработана для реализации протокола на компьютере».
2. Основы TCP/IP
1. Конкретное значение TCP/IP
В буквальном смысле можно подумать, что TCP/IP относится как к протоколам TCP, так и к протоколам IP. В реальной жизни это иногда относится к этим двум соглашениям. Однако во многих случаях это просто общий термин для группы протоколов, который необходимо использовать при использовании IP для связи. В частности, IP или ICMP, TCP или UDP, TELNET или FTP и HTTP — все это протоколы TCP/IP. Они тесно связаны с TCP или IP и являются неотъемлемой частью Интернета. Термин TCP/IP относится к этим протоколам в целом, поэтому TCP/IP иногда называют группой интернет-протокола.
При обмене данными через Интернет требуются соответствующие сетевые протоколы. TCP/IP изначально был семейством протоколов, разработанным для использования в Интернете. Следовательно, протокол Интернета — это TCP/IP, а TCP/IP — это протокол Интернета.
2. Пакеты
Пакет, Кадр, Пакет, Сегмент, Сообщение
Вышеуказанные пять терминов используются для описания единицы данных, которая примерно делится следующим образом:
- Пакет можно назвать всемогущим термином;
- Кадр используется для представления единицы пакета на канальном уровне;
- Пакет данных — это блок пакетов на уровнях выше сетевого уровня, таких как IP и UDP;
- Сегмент представляет информацию в потоке данных TCP;
- Сообщение — это единица данных в протоколе приложения.
На каждом уровне к отправляемым данным присоединяется заголовок, и этот заголовок содержит необходимую информацию об уровне, такую как отправленный адрес получателя и информацию, относящуюся к протоколу. Обычно информация, предоставляемая протоколу, представляет собой заголовок пакета, а отправляемое содержимое — данные. С точки зрения следующего уровня все пакеты, полученные от предыдущего уровня, считаются данными этого уровня.
Пакет данных, передаваемый в сети, состоит из двух частей: одна часть представляет собой заголовок, используемый протоколом, а другая часть представляет собой данные, передаваемые с верхнего уровня. Структура заголовка подробно определяется конкретной спецификацией протокола. В заголовке пакета данных четко указано, как протокол должен считывать данные. И наоборот, если вы видите заголовок, вы можете понять необходимую информацию протокола и данные для обработки.Заголовок пакета похож на лицо протокола.
3. Процесс обработки данных
На следующем рисунке в качестве примера пользователь a отправляет электронное письмо пользователю b:
- ① Обработка заявки
Во-первых, приложение будет выполнять обработку кодирования, что эквивалентно функции уровня представления OSI;
После преобразования кодировки почта не обязательно отправляется немедленно.Эта функция управления, когда устанавливать коммуникационное соединение и когда отправлять данные, эквивалентна функции уровня сеанса OSI. - ② Обработка модуля TCP
TCP отвечает за установление соединений, отправку данных и отключение в соответствии с указаниями приложения. TCP обеспечивает надежную передачу для бесперебойной отправки данных с прикладного уровня на противоположный конец. Для реализации этой функции необходимо добавить заголовок TCP к внешнему интерфейсу данных прикладного уровня. - ③ Работа с IP-модулями
IP объединяет заголовок TCP и данные TCP, отправленные TCP, как собственные данные, и добавляет свой собственный заголовок IP в начало заголовка TCP. После создания IP-пакета обратитесь к таблице управления маршрутизацией, чтобы определить маршрут или хост, который принимает IP-пакет. - ④ Обработка сетевого интерфейса (драйвер Ethernet)
IP-пакеты из IP являются данными в Ethernet. Заголовок Ethernet прикрепляется к этим данным и отправляется на обработку, а сгенерированный пакет данных Ethernet будет передаваться на принимающую сторону через физический уровень. - ⑤ Обработка сетевого интерфейса (драйвер Ethernet)
После того, как хост получает пакет Ethernet, он сначала находит MAC-адрес из заголовка пакета Ethernet, чтобы определить, является ли это пакетом, отправленным самому себе, и, если нет, отбрасывает данные.
Если это пакет, отправленный самому себе, тип данных определяется по типу в заголовке пакета Ethernet, а затем передается соответствующему модулю, например IP, ARP и т. д. Примером здесь является ИП. - ⑥ Работа с IP-модулями
Модуль IP также выполняет аналогичную обработку после получения данных. Определите, соответствует ли IP-адрес вашему собственному IP-адресу из заголовка пакета, и, если он совпадает, отправьте данные в соответствующий модуль в соответствии с типом протокола заголовка, например, TCP, UDP. Примером здесь является TCP.
Кроме того, в случае маршрутизатора адрес принимающей стороны часто не является его собственным адресом.В это время необходимо использовать таблицу управления маршрутизацией для исследования хоста или маршрутизатора, на который следует отправить сообщение, прежде данные. - ⑦ Обработка модуля TCP
В модуле TCP сначала вычисляется контрольная сумма, чтобы определить, повреждены ли данные. Затем проверьте, принимаются ли данные в соответствии с порядковым номером. Наконец, проверьте номер порта, чтобы определить конкретное приложение. После получения данных в полном объеме они передаются приложению, идентифицируемому по номеру порта. - ⑧ Обработка заявки
Приложение-получатель будет напрямую получать данные, отправленные отправителем. При разборе данных отображается соответствующий контент.
3. TCP и UDP на транспортном уровне
В TCP/IP есть два репрезентативных протокола транспортного уровня, а именно TCP и UDP.
- TCP — это надежный протокол потоковой передачи, ориентированный на соединение. Поток относится к непрерывной структуре данных.Когда приложение использует TCP для отправки сообщений, хотя порядок отправки может быть гарантирован, это по-прежнему похоже на поток данных без какого-либо интервала, отправляемого получателю. Чтобы обеспечить надежную передачу, TCP реализует механизм «управления последовательностью» или «управления повторной передачей». Кроме того, он также имеет множество функций, таких как «управление потоком (управление потоком)», «управление перегрузкой» и улучшение использования сети.
- UDP — ненадежный протокол дейтаграмм. Он будет передан приложению верхнего уровня для завершения тонкой обработки. В случае UDP размер отправляемого сообщения гарантирован, но нет никакой гарантии, что сообщение будет доставлено. Поэтому приложения иногда выполняют повторную передачу в соответствии со своими потребностями.
- Преимущества и недостатки TCP и UDP нельзя просто и абсолютно сравнивать: TCP используется в ситуациях, когда на транспортном уровне необходима надежная передача; с одной стороны, UDP в основном используется для тех, у кого высокие требования к скорости передачи и связь в режиме реального времени или широковещательная связь. TCP и UDP следует использовать по мере необходимости в зависимости от цели приложения.
1. Номер порта
Адреса в канале передачи данных и IP относятся к MAC-адресу и IP-адресу соответственно. Первый используется для идентификации разных компьютеров на одном и том же канале, а второй используется для идентификации взаимосвязанных хостов и маршрутизаторов в сети TCP/IP. Существует также концепция, аналогичная адресу на транспортном уровне, которая представляет собой номер порта. Номера портов используются для идентификации различных приложений, обменивающихся данными на одном компьютере. Поэтому его еще называют программным адресом.
1.1 Идентификация приложений по номерам портов
Несколько программ могут работать на одном компьютере одновременно. Протокол транспортного уровня использует эти номера портов для идентификации прикладной программы, которая взаимодействует с машиной, и для точной передачи данных.
1.2 Идентификация связи по IP-адресу, номеру порта и номеру протокола
- Недостаточно идентифицировать сообщение только по номеру порта назначения.
- Связь ① и ② осуществляется на двух компьютерах. У них одинаковый номер порта назначения, 80. Здесь можно отличить по номеру исходного порта.
- Номера портов назначения и номера исходных портов ③ и ① точно такие же, но их соответствующие исходные IP-адреса различаются.
- Кроме того, когда IP-адрес и номер порта совпадают, мы также можем различать их по номеру протокола (TCP и UDP).
1.3 Определение номера порта
- Стандартный установленный номер порта: этот метод также называется статическим методом. Это означает, что каждому приложению назначен свой номер порта. Но это не означает, что вы можете использовать любой номер порта по желанию. Например, номера портов, используемые в широко используемых прикладных протоколах, таких как HTTP, FTP и TELNET, являются фиксированными. Эти номера портов называются общеизвестными номерами портов и распределяются между 0 и 1023; помимо общеизвестных номеров портов официально зарегистрированы некоторые номера портов, и они распределяются между 1024 и 49151, но эти номера портов можно использовать для любых целей связи.
- Метод распределения времени: сервер должен определить номер порта прослушивания, но клиент, получающий услугу, не должен определять номер порта. В этом методе клиентское приложение может полностью назначить номер порта операционной системе, не устанавливая номер порта самостоятельно. Динамически распределяемые номера портов находятся в диапазоне от 49152 до 65535.
1.4 Номер порта и протокол
- Номер порта определяется используемым протоколом транспортного уровня. Поэтому разные протоколы транспортного уровня могут использовать один и тот же номер порта.
- Кроме того, эти общеизвестные номера портов не имеют ничего общего с протоколами транспортного уровня. Пока порты согласованы, для обработки будет выделено одно и то же приложение.
2. UDP
- UDP не предоставляет сложных механизмов управления и использует IP для предоставления услуг связи без установления соединения.
- И это механизм для отправки данных, отправленных приложением в сеть, в том виде, в котором они были получены. Даже в случае перегрузки сети UDP не может выполнять управление потоком и другие действия, чтобы избежать перегрузки сети.
- Кроме того, при передаче происходит потеря пакетов, а UDP не несет ответственности за повторную передачу.
- Нет функции для исправления, даже если пакеты приходят не по порядку.
- Если требуется описанный выше подробный контроль, он должен выполняться приложением, использующим UDP.
- UDP часто используется в следующих аспектах: 1. Связь с небольшим количеством пакетов (DNS, SNMP и т. д.) 2. Мультимедийная связь (мгновенная связь), такая как видео и аудио, 3. Связь приложений, ограниченная определенными сетями, такими как как ЛВС 4. Широковещательная связь (широковещательная, многоадресная).
3. TCP
- Разница между TCP и UDP довольно велика. Он полностью реализует различные функции контроля при передаче данных, может выполнять контроль повторной передачи при потере пакетов, а также может выполнять контроль последовательности на подпакетах, вышедших из строя. И ни один из них не доступен в UDP.
- Кроме того, как протокол, ориентированный на соединение, TCP будет отправлять данные только тогда, когда будет подтверждено, что одноранговый узел связи существует, чтобы можно было контролировать потери коммуникационного трафика.
- Согласно этим механизмам TCP, высоконадежная связь также может быть достигнута в сети без установления соединения, такой как IP (в основном с помощью таких механизмов, как контрольная сумма, порядковый номер, ответ подтверждения, управление повторной передачей, управление соединением и управление окном).
3.1 Трехстороннее рукопожатие (выделено)
- TCP обеспечивает коммуникационный транспорт, ориентированный на соединение. Ориентированность на соединение означает, что перед началом передачи данных между двумя сторонами производится подготовка.
- Так называемое трехстороннее рукопожатие означает, что при установлении TCP-соединения клиент и сервер должны отправить в общей сложности три пакета для подтверждения установления соединения. В программировании сокетов этот процесс запускается клиентом, выполняющим соединение.
Давайте посмотрим на блок-схему трехэтапного рукопожатия:
- Первое рукопожатие: клиент устанавливает флаг SYN в 1, случайным образом генерирует значение seq=J и отправляет пакет данных на сервер.Клиент входит в состояние SYN_SENT и ждет подтверждения от сервера.
- Второе рукопожатие: после того, как сервер получает пакет данных, флаг SYN=1 знает, что клиент запрашивает установление соединения, и сервер устанавливает флаги SYN и ACK в 1, ack=J+1 и случайным образом генерирует значение seq= K и отправляет пакет данных клиенту для подтверждения запроса на соединение, а сервер переходит в состояние SYN_RCVD.
- Третье рукопожатие: после того, как клиент получил подтверждение, он проверяет, соответствует ли подтверждение J+1 и равно ли ACK 1. Если все верно, бит флага ACK устанавливается в 1, подтверждение=K+1 и отправляется на сервер Сторона сервера проверяет, соответствует ли ACK K+1 и ACK равно 1. Если это правильно, соединение устанавливается успешно.Клиент и сервер переходят в состояние ESTABLISHED, завершают трехэтапное рукопожатие, и тогда клиент и сервер могут начать передавать данные.
3.2 Четыре раза помахать рукой (выделение)
- Четыре взмаха рук завершают TCP-соединение, что означает, что при разрыве TCP-соединения клиент и сервер должны отправить в общей сложности 4 пакета для подтверждения разрыва соединения. В программировании сокетов этот процесс запускается либо клиентом, либо сервером, выполняющим close.
- Так как TCP-соединение полнодуплексное, каждое направление должно быть закрыто отдельно.Принцип заключается в том, что когда одна сторона завершает задачу по передаче данных, она отправляет FIN для завершения соединения в этом направлении.Получение FIN означает только то, что нет поток данных в этом направлении, то есть данные больше не будут приниматься, но данные все еще могут быть отправлены по этому TCP-соединению до тех пор, пока FIN также не будет отправлен в этом направлении. Сторона, которая выключится первой, выполнит активное выключение, а другая сторона выполнит пассивное выключение.
Давайте посмотрим на блок-схему четырех волн:
- Отсоединенный конец может быть клиентом или сервером.
- Первая волна: клиент отправляет FIN=M, чтобы закрыть передачу данных от клиента к серверу, и клиент переходит в состояние FIN_WAIT_1. Это означает «у моего клиента нет данных для отправки вам», но если у вас на сервере остались данные, которые не были отправлены, не нужно торопиться закрывать соединение, вы можете продолжать отправлять данные.
- Вторая волна: после того, как сервер получает FIN, он сначала отправляет ack=M+1, чтобы сообщить клиенту, что я получил ваш запрос, но я не готов, пожалуйста, продолжайте ждать моего сообщения. В это время клиент переходит в состояние FIN_WAIT_2 и продолжает ждать сообщения FIN от сервера.
- Третья волна: когда сервер определяет, что данные были отправлены, он отправляет клиенту сообщение FIN=N, сообщая клиенту: «ОК, я закончил отправку данных здесь и готов закрыть соединение». Серверная часть переходит в состояние LAST_ACK.
- Четвертая волна: после того, как клиент получил сообщение FIN=N, он знает, что соединение может быть закрыто, но он все еще не доверяет сети, опасаясь, что сервер не знает, что нужно закрыть, поэтому он переходит в состояние TIME_WAIT через отправка ack = N + 1. Если сервер не получает ACK, он может повторить передачу. После того, как сервер получает ACK, он знает, что соединение может быть разорвано. Если клиент не получил ответа после ожидания 2MSL, это доказывает, что сервер был выключен нормально Ну, мой клиент также может закрыть соединение. Наконец, четыре рукопожатия были завершены.
Выше описана ситуация, когда одна сторона активно отключается, а другая пассивно отключается.
Конкретный процесс выглядит следующим образом:
3.3 Повышение надежности за счет серийного номера и подтверждения
- В TCP, когда данные от отправителя поступают на хост-получатель, хост-получатель возвращает уведомление о том, что сообщение получено. Это сообщение называется подтверждением подтверждения (ACK). Когда отправитель отправляет данные, он будет ждать подтверждения от партнера. Если есть ответ подтверждения, это означает, что данные успешно достигли однорангового конца.Напротив, существует высокая вероятность потери данных..
- При отсутствии подтверждающего ответа в течение определенного периода времени отправитель может считать, что данные утеряны, и повторить передачу. В результате даже в случае потери пакетов данные все равно могут быть гарантированно достигнут противоположного конца, что обеспечивает надежную передачу.
- Неполучение подтверждения не означает, что данные должны быть потеряны. Также возможно, что данные были получены другой стороной, но возвращенный ответ подтверждения потерян по пути. Эта ситуация также приведет к тому, что отправитель ошибочно подумает, что данные не достигли места назначения, и отправит данные повторно.
- Кроме того, по некоторым другим причинам также возможна задержка получения ответа подтверждения, и нередко он приходит после того, как хост-источник повторно отправляет данные. На этом этапе хосту-источнику нужно только повторно отправить данные в соответствии с механизмом.
- Целевому хосту не рекомендуется повторно получать одни и те же данные. Для обеспечения надежной передачи приложениям верхнего уровня целевой хост должен отбрасывать повторяющиеся пакеты. Для этого мы ввели серийные номера.
- Серийный номер — это серийный номер, который присваивает номер каждому байту (8-битному байту) последовательно передаваемых данных. Принимающая сторона запрашивает серийный номер и длину данных в заголовке TCP полученных данных и возвращает серийный номер, который он должен получить на следующем шаге, в качестве ответа подтверждения. По серийному номеру и номеру подтверждения TCP может определить, были ли данные получены и нужно ли их получать, чтобы обеспечить надежную передачу.
3.4 Определение времени ожидания повторной передачи
- Тайм-аут повторной передачи относится к определенному интервалу времени, в течение которого ожидается получение подтверждения перед повторной передачей данных.Если подтверждение не получено по истечении этого времени, отправитель повторит передачу данных. В идеале найдите минимальное время, гарантирующее, что «подтверждение должно быть возвращено в течение этого времени».
- TCP требует высокопроизводительной связи независимо от сетевой среды и должен поддерживать эту характеристику независимо от изменений в перегрузке сети. Для этого он вычисляет время приема-передачи и его смещение каждый раз, когда отправляет пакет. Добавьте это время приема-передачи и время смещения, и время ожидания повторной передачи будет значением, немного превышающим эту сумму.
- В системах BSD Unix и Windows время ожидания регулируется в единицах 0,5 секунды, поэтому время ожидания повторной передачи является целым числом, кратным 0,5 секунды. Однако значение по умолчанию времени ожидания повторной передачи обычно изначально установлено примерно на 6 секунд.
- После повторной отправки данных, если подтверждение все еще не получено, оно будет отправлено повторно. В этом случае время ожидания ответа подтверждения будет увеличено по экспоненциальной функции в 2 или 4 раза.
- также,Данные также не передаются бесконечно и многократно. После достижения определенного количества повторных передач, если по-прежнему не возвращается ответ с подтверждением, будет решено, что в сети или на одноранговом хосте произошла аномалия, и соединение будет принудительно закрыто. И уведомить приложение о том, что связь ненормальна и принудительно прекращена.
3.5 Отправка данных сегментами
- При установлении TCP-соединения также можно определить единицу, в которой отправляется пакет, которую мы также можем назвать «Максимальная длина сообщения» (MSS). В идеале максимальная длина сообщения точно равна максимальной длине данных в IP, которые не будут фрагментированы.
- Когда TCP передает большой объем данных, он разделяет и отправляет данные в размере MSS. Блок MSS также используется для повторной передачи.
- MSS рассчитывается между двумя хостами во время трехэтапного рукопожатия. Когда хосты на обоих концах посылают запрос на установление соединения, они записывают параметр MSS в заголовок TCP, чтобы сообщить друг другу размер MSS, который могут поддерживать их интерфейсы. Затем используется меньшее значение между ними.
3.6 Использование оконных элементов управления для увеличения скорости
- TCP использует 1 сегмент как единицу и выполняет подтверждение для каждого отправленного сегмента. Недостатком этого метода передачи является то, что чем больше время прохождения пакета туда и обратно, тем ниже производительность связи.
-
Чтобы решить эту проблему, TCP вводит понятие окна. Подтверждение больше не для каждого сегмента, а для более крупных единиц, и время пересылки будет значительно сокращено. То есть хост-отправитель не должен ждать ответа подтверждения после отправки сегмента, а продолжает отправлять. Как показано ниже:
-
Размер окна — это максимальное значение, при котором можно продолжать отправлять данные, не дожидаясь подтверждения. Размер окна на приведенном выше рисунке составляет 4 сегмента. Этот механизм реализует функцию использования большого количества буферов за счет одновременного подтверждения нескольких сегментов.
3.7 Управление скользящим окном
- Данные в окне на приведенном выше рисунке могут быть отправлены, даже если подтверждение не получено. Однако до прихода подтверждения всего окна, если часть данных потеряна, отправитель по-прежнему несет ответственность за повторную передачу. Для этого хост-отправитель должен настроить кэш для хранения данных для повторной передачи до тех пор, пока он не получит их подтверждение.
- Часть вне скользящего окна включает неотправленные данные и данные, получение которых было подтверждено партнером. После отправки данных, если ответ с подтверждением получен, как и ожидалось, нет необходимости в повторной отправке, и в это время данные могут быть удалены из кэша.
- Когда подтверждение получено, сдвиньте окно на позицию серийного номера в подтверждении. Это позволяет одновременно посылать несколько сегментов в определенной последовательности для повышения производительности связи. Этот механизм также известен как управление скользящим окном.
3.8 Управление ретрансляцией в окне управления
При использовании управления окном потеря пакетов обычно делится на две ситуации:
- ① Проверьте, не возвращается ли ответ. В этом случае данные уже поступили на противоположный конец и не нуждаются в повторной передаче, как показано на следующем рисунке:
- ② Определенный сегмент потерян. Если хост-получатель получает данные, отличные от серийного номера, который он должен получить, он вернет ответ подтверждения для полученных данных. Как показано на рисунке ниже, при потере сегмента отправитель всегда будет получать подтверждение с порядковым номером 1001. Поэтому, когда окно относительно велико и сегмент потерян, подтверждается тот же порядковый номер. возвращаться неоднократно. Если хост-отправитель получает одно и то же подтверждение три раза подряд, он повторно отправит соответствующие данные. Этот механизм более эффективен, чем ранее упомянутое управление тайм-аутом, поэтому он также известен как управление высокоскоростной повторной передачей.
В-четвертых, протокол IP на сетевом уровне
- IP (IPv4, IPv6) эквивалентен уровню 3 в эталонной модели OSI — сетевому уровню. Основная роль сетевого уровня заключается в «осуществлении связи между конечными узлами». Эта связь между конечными узлами также называется «точка-точка».
- Основная функция следующего уровня сети, уровня канала передачи данных, заключается в передаче пакетов между узлами, соединяющими один и тот же канал передачи данных. При пересечении нескольких каналов передачи данных требуется сетевой уровень. Сетевой уровень может охватывать различные каналы передачи данных, и передача пакетов данных между узлами на обоих концах может осуществляться даже по разным каналам передачи данных.
- IP грубо делится на три функциональных модуля: IP-адресация, маршрутизация (пересылка к конечному узлу) и IP-пакетирование и группировка.
1. IP-адрес
1.1 Обзор IP-адресов
- В компьютерной связи для идентификации партнера по связи должен быть идентификационный код, аналогичный адресу для идентификации. MAC-адрес в канале передачи данных — это идентификационный код, используемый для идентификации разных компьютеров в одном канале.
- В качестве IP сетевого уровня существует также такая адресная информация, которая обычно называется IP-адресом. IP-адрес используется для «идентификации адреса назначения для связи между всеми хостами, подключенными к сети». Следовательно, все хосты или маршрутизаторы должны устанавливать свои собственные IP-адреса в TCP/IP-соединении.
- Независимо от того, к какому каналу передачи данных подключен хост, форма его IP-адреса остается неизменной.
- IP-адрес (IPv4-адрес) представлен 32-битным положительным целым числом. IP-адреса обрабатываются в двоичном формате внутри компьютера. Однако, поскольку мы не привыкли использовать двоичный код, мы делим 32-битный IP-адрес на 4 группы по 8 бит в каждой, и каждая группа отделяется знаком «.», а затем преобразуем каждую группу в десятичное число. следующим образом:
28 | 28 | 28 | 28 | |
---|---|---|---|---|
10101100 | 00010100 | 00000001 | 00000001 | (двоичный) |
10101100. | 00010100. | 00000001. | 00000001 | (двоичный) |
172. | 20. | 1. | 1 | (10 шестн.) |
1.2 IP-адрес состоит из двух частей: сети и хоста.
- Как показано на рисунке ниже, сетевой идентификатор настраивается с разными значениями в каждом сегменте канала передачи данных. Идентификация сети должна гарантировать, что адреса каждого сегмента, соединенного друг с другом, не дублируются. Хосты, подключенные к одному сегменту, должны иметь одинаковый сетевой адрес. «Идентификатор хоста» IP-адреса не может повторяться в одном и том же сегменте сети. Следовательно, задав сетевой адрес и адрес хоста, можно гарантировать, что IP-адреса каждого хоста не будут перекрывать друг друга во всей сети, подключенной друг к другу. То есть IP-адрес уникален.
- Как показано на рисунке ниже, когда IP-пакет пересылается на маршрутизатор по пути, он маршрутизируется с использованием сетевого идентификатора IP-адреса назначения. Потому что даже не глядя на идентификатор хоста, пока вы видите идентификатор сети, вы можете определить, является ли это хостом в сегменте сети.
1.3 Классификация IP-адресов
- IP-адреса делятся на четыре класса, а именно: класс A, класс B, класс C и класс D. Он различает свой идентификатор сети и идентификатор хоста в соответствии с битовым столбцом от бита 1 до бита 4 в IP-адресе.
- IP-адрес класса А — это адрес, начинающийся с «0».Биты с 1 по 8 являются его идентификатором сети. В десятичном виде 0.0.0.0~127.0.0.0 — это сетевой адрес класса A. Последние 24 бита адреса класса А соответствуют идентификатору хоста. Таким образом, максимальное количество адресов узлов, которое может быть размещено в сегменте сети, составляет 16 777 214.
- IP-адрес класса B — это адрес с первыми двумя цифрами «10».Биты с 1 по 16 — это идентификатор сети. В десятичном виде 128.0.0.0~191.255.0.0 — это сетевые адреса класса B. Последние 16 бит адреса класса B соответствуют идентификатору хоста. Таким образом, максимальное количество адресов узлов, которое может быть размещено в сегменте сети, равно 65 534.
- IP-адрес класса C — это адрес с первыми тремя цифрами «110».Биты с 1 по 24 — это идентификатор сети. В десятичном виде 192.0.0.0~223.255.255.0 — это сетевой адрес класса C. Последние 8 бит адреса класса C соответствуют идентификатору хоста. Таким образом, максимальное количество адресов узлов, которое может быть размещено в сегменте сети, равно 254.
- IP-адрес класса D — это адрес с первыми четырьмя цифрами «1110».Биты с 1 по 32 являются его идентификатором сети. В десятичном виде 224.0.0.0~239.255.255.255 — это сетевой адрес класса D. Адреса класса D не имеют идентификатора хоста и часто используются для многоадресной рассылки.
- Существует одно предостережение относительно идентификации хоста при назначении IP-адресов. То есть при использовании битов для представления адреса хоста он не может быть равен либо 0, либо 1. Потому что все 0 используются только тогда, когда соответствующий сетевой адрес или IP-адрес неизвестен. Хост со всеми единицами обычно используется в качестве широковещательного адреса. Следовательно, в процессе распределения эти два случая должны быть удалены. Вот почему адреса класса C могут иметь максимум 254 ( 28- 2 = 254) адресов узлов.
1.4 Широковещательный адрес
- Широковещательные адреса используются для отправки пакетов между хостами, подключенными друг к другу по одному и тому же каналу. Часть адреса хоста IP-адреса устанавливается на 1, и она становится широковещательным адресом.
- Существует два типа вещания: местное вещание и прямое вещание. Трансляции внутри этой сети называются локальными трансляциями, а трансляции между разными сетями — прямыми трансляциями.
1.5 IP-многоадресная рассылка
- Многоадресная рассылка используется для отправки пакетов всем хостам в определенной группе. Поскольку он использует IP-адрес напрямую, надежная передача также невозможна.
- По сравнению с широковещательной рассылкой, мультикаст может не только проникать через маршрутизаторы, но и отправлять пакеты только тем нужным группам. Пожалуйста, посмотрите на изображение ниже:
- Многоадресная рассылка использует адреса класса D. Следовательно, если биты с первого по четвертый равны «1110», это можно рассматривать как групповой адрес. Остальные 28 бит могут стать номером группы многоадресной рассылки.
- Кроме того, для многоадресной рассылки все хосты (хосты, кроме маршрутизаторов и конечных хостов) должны принадлежать к группе 224.0.0.1, а все маршрутизаторы должны принадлежать к группе 224.0.0.2.
1.6 Маска подсети
- Теперь сетевая идентификация и идентификация хоста IP-адреса больше не ограничиваются категорией адреса, а подразделяются идентификационным кодом, называемым «маской подсети», через сетевой адрес подсети.Маломасштабные сети класса C. Этот метод фактически представляет собой механизм разделения исходной сети на несколько физических сетей с использованием части адреса хоста исходного класса A, B, C и т. д. в качестве адреса подсети.
- Маска подсети также представляет собой 32-битное число, если оно выражено в двоичном виде. Все биты, соответствующие части IP-адреса, идентифицирующей сеть, равны «1», а все биты, соответствующие части IP-адреса, идентифицирующей хост, равны «0». В результате IP-адрес больше не может быть ограничен своим собственным классом, но может свободно определять длину своей собственной сетевой идентификации с такой маской подсети. Конечно, маска подсети должна быть непрерывной «1», начиная с первой цифры IP-адреса.
- Для маски подсети в настоящее время существует два представления. Первый заключается в представлении IP-адреса и адреса маски подсети в двух отдельных строках. Возьмем в качестве примера случай, когда первые 26 бит 172.20.100.52 являются сетевым адресом:
айпи адрес | 172. | 20. | 100. | 52 |
---|---|---|---|---|
маска подсети | 255. | 255. | 255. | 192 |
адрес веб-сайта | 172. | 20. | 100. | 0 |
маска подсети | 255. | 255. | 255. | 192 |
широковещательный адрес | 172. | 20. | 100. | 63 |
маска подсети | 255. | 255. | 255. | 192 |
- Второй способ выражения заключается в добавлении числа битов сетевого адреса после каждого IP-адреса, разделенного символом «/», следующим образом:
айпи адрес | 172. | 20. | 100. | 52 | / 26 |
---|---|---|---|---|---|
адрес веб-сайта | 172. | 20. | 100. | 0 | / 26 |
широковещательный адрес | 172. | 20. | 100. | 63 | / 26 |
- Кроме того, следующий «0» может быть опущен при описании сетевого адреса во втором способе. Например: 172.20.0.0/26 и 172.20/26 на самом деле означают одно и то же.
2. Маршрутизация
- Адрес, используемый при отправке пакета данных, является адресом сетевого уровня, то есть IP-адресом. Однако для отправки пакетов данных на адрес назначения противоположного конца недостаточно только наличия IP-адреса. адрес назначения. Эта информация хранится в таблице управления маршрутизацией.
- Таблица управления маршрутизацией формируется двумя способами: один задается администратором вручную, а другой автоматически обновляется, когда маршрутизатор обменивается информацией с другими маршрутизаторами. Первое также называется управлением статической маршрутизацией, а второе называется управлением динамической маршрутизацией.
- Протокол IP всегда предполагает, что таблица маршрутизации верна. Затем IP сам по себе не определяет протокол для создания таблиц управления маршрутизацией. То есть в IP нет механизма составления таблицы управления маршрутизацией. Это представление осуществляется протоколом, называемым «протоколом маршрутизации».
2.1 IP-адрес и управление маршрутизацией
- Часть сетевого адреса IP-адреса используется для управления маршрутизацией.
- Таблица управления маршрутизацией записывает сетевой адрес и адрес, который должен быть отправлен маршрутизатору следующим.
- При отправке IP-пакета сначала определите адрес назначения в заголовке IP-пакета, а затем найдите запись с таким же сетевым адресом в таблице управления маршрутизацией и перенаправьте IP-пакет соответствующему следующему маршрутизатору в соответствии с записью. Если в таблице управления маршрутизацией имеется несколько записей с одним и тем же сетевым адресом, выберите ту, которая соответствует больше всего.
3. Субподряд и группировка ИС
- Каждый канал передачи данных имеет разную максимальную единицу передачи (MTU), поскольку каждый тип канала передачи данных используется для разных целей. В зависимости от цели использования, MTU, который можно переносить, также различается.
- Любому хосту необходимо соответствующим образом обрабатывать IP-фрагменты. Фрагментация часто обрабатывается только тогда, когда большие пакеты не могут быть отправлены сразу по сети.
- При повторной сборке фрагментированных IP-датаграмм они могут выполняться только целевым хостом. Хоть роутер и делает фрагментацию, но не собирает заново.
3.1 Обнаружение MTU пути
- Механизм шардинга также имеет свои недостатки. Например, увеличивается вычислительная нагрузка маршрутизатора. Следовательно, фрагментация IP-пакетов маршрутизаторами нежелательна, если она разрешена.
- Чтобы справиться с недостаточностью механизма фрагментации, появилась технология «обнаружения MTU пути». MTU пути относится к размеру максимального MTU, который не требует фрагментации от хоста-отправителя к хосту-получателю. То есть наименьшее значение MTU среди всех каналов передачи данных, присутствующих на пути.
- Выполняя обнаружение MTU пути, вы можете избежать фрагментации на маршрутизаторах в середине, а также можете отправлять пакеты большего размера в TCP.
4. IPv6
- IPv6 (IP версии 6) — это интернет-протокол, стандартизированный для фундаментального решения проблемы исчерпания адресов IPv4. Длина адреса IPv4 составляет 4 октета или 32 бита. Длина адреса IPv6 в 4 раза превышает исходную длину, то есть 128 бит, обычно записывается как 8 16-битных байтов.
4.1 Особенности IPv6
- Расширение IP-адресов и объединение таблиц управления маршрутизацией.
- Улучшения производительности. Длина заголовка пакета принимает фиксированное значение (40 байтов), а код проверки заголовка больше не используется. Упростите структуру заголовка и уменьшите нагрузку на маршрутизатор. Маршрутизатор больше не выполняет фрагментацию.
- Поддержка функции plug and play. Автоматическое назначение IP-адреса возможно даже без DHCP-сервера.
- Используйте функции аутентификации и шифрования. Функции сетевой безопасности от поддельных IP-адресов и защиты от прослушки.
- Многоадресная рассылка, мобильный IP становятся расширенными функциями.
4.2 Метод маркировки IP-адреса в IPv6
- Как правило, 128-битные IP-адреса группируются в группы по 16 бит, и каждая группа помечается двоеточием (":").
- И если есть последовательные 0, эти 0 могут быть опущены и разделены двумя двоеточиями ("::"). Однако в IP-адресе разрешено использовать только два последовательных двоеточия.
4.3 Структура адресов IPv6
- Подобно IPv4, IPv6 также идентифицирует тип IP-адреса по первым нескольким цифрам IP-адреса.
- В интернет-коммуникациях используется глобальный индивидуальный адрес. Это уникальный адрес в Интернете, и ему не нужно официально назначать IP-адрес.
неопределенный | 0000...0000 (128 бит) | ::/128 |
---|---|---|
петлевой адрес | 0000...0001 (128 бит) | :: 1/128 |
уникальный локальный адрес | 1111 110 | FC00: /7 |
link-local адрес индивидуальной рассылки | 1111 1110 10 | Fe80::/10 |
многоадресный адрес | 1111 1111 | FF00::/8 |
глобальный индивидуальный адрес | (разное) |
4.4 Глобальный индивидуальный адрес
- Глобальный индивидуальный адрес — это уникальный адрес в мире. Это один из наиболее часто используемых IPv6-адресов для интернет-коммуникаций и внутридоменных коммуникаций.
- Формат показан на рисунке ниже Формат, используемый в сети IPv6, n = 48, m = 16 и 128 - n - m = 64. То есть первые 64 бита — это идентификатор сети, а последние 64 бита — идентификатор хоста.
4.5 Индивидуальные адреса для локальных каналов
- Адрес одноадресной рассылки, локальный для канала, — это адрес, уникальный в пределах одного и того же канала передачи данных. Он используется для связи по тому же каналу без прохождения через маршрутизатор. Обычно идентификатор интерфейса содержит 64-битную версию MAC-адреса.
4.6 Уникальный локальный адрес
- Уникальные локальные адреса — это адреса, которые используются, когда интернет-связь не осуществляется.
- Уникальный локальный адрес, хотя и не подключенный к Интернету, также генерирует уникальный глобальный идентификатор как можно более случайным образом.
- L обычно устанавливается равным 1
- Значение глобального идентификатора определяется случайным образом
- Идентификатор подсети относится к адресу подсети домена.
- Идентификатор интерфейса — это идентификатор интерфейса.
4.7 Обработка фрагментации IPv6
- Обработка фрагментации IPv6 выполняется только на хосте-отправителе в качестве отправной точки, и маршрутизаторы не участвуют в фрагментации.
- Минимальный MTU в IPv6 составляет 1280 байт, поэтому во встроенных системах для устройств с определенными ограничениями системных ресурсов нет необходимости выполнять «обнаружение MTU пути», а напрямую использовать 1280 байт при отправке IP-пакетов. .
4.8 IP-заголовок (пока)
5. Технологии, связанные с IP-протоколом
- Протокол IP предназначен для того, чтобы хост-получатель мог получать пакеты, но сам по себе протокол IP не может взаимодействовать в этом процессе. Также должна быть возможность разрешения имен хостов и MAC-адресов, а также возможность обработки исключений во время отправки пакетов.
5.1 DNS
- Обычно мы не используем IP-адрес при посещении веб-сайта, а вместо этого используем строку латинских символов и точку. А обычные пользователи не используют IP-адреса при общении по протоколу TCP/IP. Это возможно благодаря поддержке функции DNS (система доменных имен). DNS может автоматически преобразовать эту строку в определенный IP-адрес.
- Этот вид DNS работает не только с IPv4, но и с IPv6.
5.2 ARP
- Как только IP-адрес определен, IP-датаграммы могут быть отправлены на этот адрес назначения. Однако на базовом канальном уровне необходимо знать MAC-адрес, соответствующий каждому IP-адресу, для реальной связи.
- ARP — это протокол, решающий проблему адресации. Используя целевой IP-адрес в качестве подсказки, он используется для определения MAC-адреса, соответствующего следующему сетевому устройству, которое должно получать пакеты данных. Однако ARP работает только с IPv4, а не с IPv6. В IPv6 можно использовать ICMPv6 вместо ARP для отправки сообщений об обнаружении соседей.
- RARP — это протокол, который реверсирует ARP и находит IP-адрес по MAC-адресу.
5.3 ICMP
- Основные функции ICMP включают в себя подтверждение того, что IP-пакет успешно доставлен на адрес назначения, уведомление о конкретной причине, по которой IP-пакет был отброшен в процессе отправки, а также улучшение сетевых настроек.
- ICMP в IPv4 поддерживает IPv4 только в качестве вторичной роли. То есть в эпоху IPv4 даже без ICMP IP-коммуникация все еще возможна. Однако в IPv6 роль ICMP расширена, и без ICMPv6 IPv6 не может нормально взаимодействовать.
5.4 DHCP
- Было бы очень утомительно устанавливать IP-адреса для каждого хоста один за другим. Особенно при использовании мобильных устройств, таких как ноутбуки, терминалы и планшеты, IP-адрес необходимо сбрасывать каждый раз, когда они перемещаются на новое место.
- Таким образом, для автоматической установки IP-адреса, унифицированного управления распределением IP-адресов создается протокол DHCP (протокол динамической конфигурации хоста). С DHCP, пока компьютер подключен к сети, это может быть TCP / IP-связь. Другими словами, DHCP делает возможным подключение по принципу plug and play.
- DHCP можно использовать не только в IPv4, но и в IPv6.
5.5 NAT
- NAT (преобразователь сетевых адресов) — это технология, используемая для использования частных адресов в локальной сети и переключения на глобальные IP-адреса при подключении к Интернету.
- В дополнение к преобразованию IP-адресов также появилась технология NAPT (транслятор портов сетевых адресов), которая может преобразовывать номера портов TCP и UDP, так что глобальный IP-адрес можно использовать для связи с несколькими хостами.
- NAT (NAPT) на самом деле является технологией, разработанной для IPv4, которая сталкивается с исчерпанием адресов. Однако NAT также используется в IPv6 для повышения безопасности сети, а NAT-PT часто используется для взаимной связи между IPv4 и IPv6.
5.6 IP-туннелирование
- В сетевой среде, показанной на рисунке выше, нет прямой связи между сетью A и сетью B. Чтобы обеспечить нормальную связь между ними, в это время необходимо использовать функцию IP-туннеля.
- IP-туннель может объединять пакеты IPv6, отправленные из сети A, в одни данные, а затем добавлять к ним заголовок IPv4 и пересылать их в сеть C.
- Обычно за заголовком IP следует заголовок TCP или UDP. Однако в современных приложениях возникает все больше и больше ситуаций, таких как «заголовок IP следует за заголовком IP» или «за заголовком IP следует заголовок IPv6». Этот метод связи, в котором заголовок сетевого уровня добавляется к заголовку сетевого уровня, называется «IP-туннелирование».
следовать за
серия статей
Предыдущая статья:В статье вы подробно объясните протокол HTTP (Интернет-протокол, часть 1).
учебные материалы
- "Подробное объяснение TCP/IP"
- "Иллюстрированный TCP/IP"