Подробное объяснение четырехуровневой, пятиуровневой, семиуровневой модели компьютерной сети.

Java

1. Архитектура

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

1.1 Семиуровневая сетевая модель

Модель взаимодействия открытых систем (сокращенно модель OSI) представляет собой концептуальную модель, предложенную Международной организацией по стандартизации, и пытается стать стандартной структурой для соединения компьютеров по всему миру в виде сети.Она имеет семиуровневую сетевую структуру.

1.2 Четырехуровневая сетевая модель

Набор протоколов Интернета (IPS) представляет собой набор нескольких протоколов сетевой передачи, который обеспечивает архитектурную поддержку базовой связи в Интернете. Поскольку двумя основными протоколами в этом наборе протоколов являются TCP (протокол управления передачей) и IP (протокол Интернета), он также называется набором протоколов TCP/IP (набор протоколов TCP/IP или протоколы TCP/IP). IP, он имеет четырехуровневую сетевую структуру.

1.3 Модель пятиуровневой сети

Семислойная сетевая модель OSI, разработанная Международной организацией по стандартизации, которая является международным стандартом в православном смысле. Но его реализация слишком сложна, и цикл развития слишком длинный, до того, как запуск набора стандартных, модель TCP / IP широко использовался по всему миру, поэтому модель TCP / IP - это Международный стандарт De Facto. Модель TCP / IP определяет слой приложений, транспортный слой, интернет-слой, сетевой структуру слоя сетевого интерфейса из четырех слоев, но не дает подробностей слоя сетевого интерфейса, таким образом, изучение и разработок, как правило, заменяет слой сетевого интерфейса в OSI Модель Single Link Layer и физический уровень, который следует понимать, что это пятислойная сетевая модель:

  1. прикладной уровень: Предоставляет услуги непосредственно процессу приложения. Протокол прикладного уровня определяет правила связи и взаимодействия между прикладными процессами.Различные приложения имеют разные протоколы прикладного уровня, такие как протокол HTTP (сервис World Wide Web), протокол FTP (передача файлов), протокол SMTP (электронная почта), DNS (доменное имя). ) запрос) и т.д.
  2. транспортный уровень: иногда также переводится как транспортный уровень, отвечающий за предоставление коммуникационных услуг для процессов на двух хостах. На этом уровне есть два основных протокола:
    • Протокол управления передачей (TCP): обеспечивает ориентированные на соединение и надежные услуги передачи данных.Основной единицей передачи данных является сегмент;
    • Протокол пользовательских дейтаграмм (UDP): Предоставляет услугу передачи данных без установления соединения с максимальной эффективностью, но не гарантирует надежность передачи данных.Основной единицей передачи данных является пользовательская дейтаграмма.
  3. интернет-уровень: иногда также переводится как уровень Интернета, который отвечает за предоставление услуг связи для двух хостов и доставку данных на целевой хост путем выбора соответствующего маршрута.
  4. канальный уровень: Отвечает за инкапсуляцию IP-датаграмм, передаваемых с сетевого уровня, в кадры и передачу кадров между двумя соседними узлами канала. Каждый кадр содержит данные и необходимую управляющую информацию (например, информацию о синхронизации, адресную информацию, ожидание контроля ошибок).
  5. физический слой: Убедитесь, что данные могут быть переданы на различных физических носителях, обеспечивая надежную среду для передачи данных.

Во-вторых, физический уровень

Физический уровень рассматривает, как передавать данные на различных носителях, что определяет функции интерфейса, связанные с транспортными носителями, такие как:

  • Механические свойства: Укажите форму и размер разъема, используемого в интерфейсе, количество и расположение выводов, фиксирующее и фиксирующее устройство и т. д.
  • Электрические характеристики: Указывает диапазон напряжений, отображаемых на каждой линии интерфейсного кабеля.
  • Функции: Указывает значение уровня напряжения полосовой линии, которая возникает.
  • Характеристики процедуры: Указывает порядок возникновения различных возможных событий для различных функций.

2.1 Среда передачи

Физический уровень не относится к конкретной среде передачи, напротив, физический уровень надеется максимально скрыть различия между различными средами. Эти средства передачи можно разделить на следующие две категории:

  • управляемая среда передачи: Сигнал направляется для распространения по твердой среде, такой как витая пара, коаксиальный кабель, оптоволоконный кабель.
  • Неуправляемая среда передачи: Сигналы распространяются в свободном пространстве, например, при коротковолновой и микроволновой связи.

2.2 Классификация каналов

Канал относится к основному каналу для передачи информации, который можно разделить на следующие три категории:

  • Симплексный канал: Только есть только одно направление связи без встречного направления;
  • половинный дуплекс канал: Обе стороны в общении могут отправлять информацию, но обе стороны не могут отправлять или получать информацию одновременно.
  • полнодуплексный канал: Обе стороны связи могут отправлять и получать информацию одновременно.

2.3 Мультиплексирование каналов

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

1. Мультиплексирование с частотным разделением

Мультиплексирование с частотным разделением (FDM, FREQUENCY DIVISION MULTIPLEXING) — это передача общей полосы пропускания канала на несколько поддиапазонов (или известных подканалов), при этом каждый подканал передает на всем протяжении:

2. Мультиплексирование с временным разделением

Мультиплексирование с временным разделением (TDM, мультиплексирование с временным разделением) относится к использованию разных периодов одного и того же физического соединения для передачи разных сигналов:

Как показано на рисунке выше, в кадре TDM периодически появляются сигналы разных пользователей.Если пользователь находится в состоянии ожидания, соответствующий кадр также будет отображаться в состоянии ожидания:

Чтобы решить этот недостаток мультиплексирования с временным разделением, производится статистическое мультиплексирование с временным разделением.

3. Статистическое мультиплексирование с временным разделением

В статистическом режиме TDM каждый пользователь отправляет данные во входной буфер концентратора, которые затем последовательно сканируются концентратором и помещаются в кадры STDM:

4. Мультиплексирование с разделением по длине волны

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

5. Мультиплексирование с кодовым разделением

Мультиплексирование с кодовым разделением (CDM, мультиплексирование с кодовым разделением) — это метод мультиплексирования, который различает различные исходные сигналы по разным кодам.

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

3.1 Основные функции

1. Инкапсуляция в каркас

Сетевой слой слоя канала передачи данных будет передан, данные разделены на несколько сегментов, каждая часть данных и добавляют до и после заголовка и прицепа, соответственно, для формирования полного кадра, кадр данных является основным уровнем передачи. Отказ Характер управления заголовками рамкиSOHУказывает, что в конце кадра используется управляющий символ.EOTВыражать:

2. Прозрачная передача

Прозрачная передача означает, что независимо от того, какие данные должны безопасно передаваться по каналу. Поскольку мы используем управляющие символы для инкапсуляции кадра, появление управляющих символов в передаваемых данных приведет к невозможности правильно различить заголовок кадра и конец кадра, в этом случае необходимо использовать символ переноса .ESCСбежать:

3. Обнаружение ошибок

Поскольку каналы связи в реальной среде не идеальны, при передаче битов могут возникать ошибки: 1 может стать 0, а 0 может стать 1, что называется битовой ошибкой. Отношение переданных ошибочных битов к общему количеству переданных битов за период времени называется коэффициентом битовых ошибок. Чтобы решить эту проблему, канальный уровень делит данные, которые должны быть отправлены, на несколько групп и использует технологию проверки циклическим избыточным кодом (CRC, Cyclic Redundancy Check) для генерации кода проверки избыточным кодом для каждой группы данных. проверьте код, он формирует кадр, а затем отправляет его.

3.2 Протокол PPP

Протокол точка-точка (PPP, протокол точки-точка) в настоящее время является наиболее широко используемым протоколом уровня канала передачи данных, в основном используемым для установления соединений точка-точка для передачи блоков данных. Он состоит из следующих трех частей:

  • метод инкапсуляции дейтаграмм IP в последовательный канал;
  • Протокол управления каналом (LCP): расширенный протокол управления каналом, используемый для установления, настройки, тестирования и управления подключениями канала передачи данных.
  • Протокол сетевого контроля (NCP): Введите переговорный формат пакета, передаваемый по ссылке, установление, настроить различные протоколы сетевого уровня.

3.3 Mac-адрес

MAC-адрес (адрес управления доступом к среде), буквально переводится как адрес управления доступом к среде, также известный как адрес локальной сети (адрес LAN) или физический адрес (физический адрес). MAC-адрес используется для уникальной идентификации сетевой карты в сети.Если устройство имеет несколько сетевых карт, каждая сетевая карта будет иметь уникальный MAC-адрес. Канальный уровень использует адрес Mac для определения узла назначения, которому необходимо отправить данные.

MAC-адрес состоит из 48 бит (6 байтов), обычно выражается в виде 12 шестнадцатеричных чисел, разделенных двоеточиями между каждыми двумя шестнадцатеричными числами, например08:00:20:0A:8C:6D, первые 3 байта — это уникальный идентификатор организации (OUI, Organizationally Unique Identifier), который единообразно присваивается производителям оборудования реестром IEEE для обеспечения глобальной уникальности; последние 3 байта выделяются самими производителями.

3.4 ЛВС

LAN, ЛОКАЛЬНАЯ СЕТЬ — это сеть, подключенная к жилому дому, школе, лаборатории, университетскому городку или офисному зданию. В соответствии со стандартом IEEE 802 архитектура локальной сети делится на три уровня, а именно физический уровень, уровень управления медиаканалом (MAC) и уровень управления логическим каналом (LLC). Фактически, два уровня, стандарт разделяет уровень канала передачи данных на более конкретный уровень управления медиаканалом и уровень управления логическим каналом.

3.5 Ethernet

Ethernet является наиболее широко используемой локальной сетью в настоящее время.В качестве примера возьмем широко используемый стандарт Ethernet v2, его формат кадра выглядит следующим образом:

Заголовок Mac соответственно записывает Mac-адрес получателя и Mac-адрес источника.

В-четвертых, сетевой уровень

4.1 IP-адрес интернет-протокола

Интернет-протокол (Интернет-протокол) является наиболее важным протоколом на сетевом уровне и одним из двух основных протоколов TCP/IP.Все компьютерные сети, которые должны быть соединены между собой, должны следовать этому протоколу, чтобы различные сети могли быть подключены по всему миру. Основной блок данных, передаваемый на этом уровне, представляет собой дейтаграмму IP, которая имеет следующий формат:

Значение каждого поля следующее:

  • Версия: занимает 4 бита и относится к версии IP-протокола (IPv4 или IPv6).
  • длина заголовка: занимает 4 цифры, максимальное десятичное число, которое может быть представлено, равно 15.
  • Дифференцированные услуги: это поле полезно только при использовании дифференцированных услуг и обычно не используется.
  • Общая длина: относится к сумме длины заголовка и длины данных в байтах. Это поле имеет размер 16 бит, поэтому максимальная длина дейтаграммы составляет 65 535 байтов.Поскольку уровень канала передачи данных указывает максимальную длину MTU (максимальная единица передачи) поля данных в кадре, на примере Ethernet это значение равно 1500, поэтому, когда длина дейтаграммы превышает MTU, данные необходимо фрагментировать.
  • логотип: Занимает 16 бит и поддерживается внутренним счетчиком программного обеспечения IP.Каждый раз, когда дейтаграмма генерируется, счетчик увеличивается на 1. Когда происходит фрагментация, фрагменты, идентифицированные одной и той же дейтаграммой, повторно собираются в исходную дейтаграмму.
  • логотип: Занимает 3 бита, в настоящее время имеют значение только два:
    • Самый низкий MF (More Fragment): Когда он равен 1, это означает, что за ним еще есть фрагменты, а когда он равен 0, это означает, что фрагмент дейтаграммы является последним;
    • Средний бит DF (не фрагмент): означает, что фрагментация невозможна, только тогда, когда он установлен на 1, фрагментация допускается.
  • смещение среза: Занимает 13 бит, определяя позицию смещения среза в исходной дейтаграмме.
  • время выживания: TTL, его значение будет уменьшаться на 1 каждый раз, когда оно проходит через маршрутизатор, когда значение равно 0, дейтаграмма будет отброшена. Это делается для того, чтобы избежать того, что, когда адрес назначения дейтаграммы не существует, дейтаграмма может быть перенаправлена ​​в сети без ограничений.
  • протокол: 8 бит, указывающие протокол Datagram, используемый для передачи данных.
  • контрольная сумма заголовка: занимает 16 бит, проверяет только заголовок дейтаграммы, исключая часть данных.
  • адрес источника: занимает 32 бита, IP-адрес источника данных;
  • Адрес назначения: 32 бита, IP-адрес получателя.

4.2 ARP-протокол

Адрес источника и адрес назначения в IP-датаграмме являются IP-адресами, в то время как адрес источника и адрес назначения в кадре канального уровня являются адресами Mac, так как же получить адрес Mac на основе IP-адреса? Это требует использования протокола ARP. Каждый хост в Интернете имеет кэш-таблицу ARP, в которой хранятся отношения сопоставления между IP-адресами и Mac-адресами каждого хоста и маршрутизатора в локальной сети.Примеры следующие:

имя хоста айпи адрес MAC-адрес
A 192.168.38.10 00-AA-00-62-D2-02
B 192.168.38.11 00-BB-00-62-C2-02
C 192.168.38.12 00-CC-00-62-C2-02
D 192.168.38.13 00-DD-00-62-C2-02
E 192.168.38.14 00-EE-00-62-C2-02

вы также можете использоватьarp -aдля просмотра локальной таблицы кэша ARP.

После того, как таблица ARP заполнена, процесс передачи кадра канального уровня выглядит следующим образом:

  • Прежде чем хост А отправит данные, он сначала проверит, есть ли в его ARP-таблице Mac-адрес, соответствующий целевому IP, и если да, то он будет инкапсулирован во фрейм, а затем отправлен;
  • Если он не будет найден, хост А отправит запрос на получение IP-адреса всем хостам в том же сегменте сети;
  • После получения этого сообщения хост, соответствующий IP-адресу, отвечает хосту A с соответствующим Mac-адресом в одноадресной рассылке.

4.3 Классификация IP-адресов

IP-адреса назначаются ICANN (Интернет-корпорацией по присвоению имен и номеров). Это уникальный 32-битный идентификатор в мире. Первые IP-адреса использовали двухуровневую классификацию. Зависит от网络号 + 主机号Он делится на следующие пять категорий:

Три типа A, B и C являются наиболее часто используемыми типами, а биты их категорий равны 0, 10 и 110 соответственно. Следует отметить, что не все IP-адреса доступны для присвоения, ограничения следующие:

лимит номера сети:

  • IP-адреса, все сетевые номера которых равны 0, являются зарезервированными адресами, представляющими «эту сеть» (номера сетей адресов B и C начинаются с 1, поэтому все 0 не используются);
  • Сетевой номер 127 (т.е. 01111111) также является зарезервированным адресом, который используется в качестве проверки обратной связи (как и выше, это не относится к двум типам адресов B и C);
  • Адрес класса B 128.0.0.0 (номер сети 10000000 00000000) не может использоваться для назначения;
  • Адрес класса C 192.0.0.0 (номер сети 11000000 00000000) не может использоваться для назначения;

лимит количества хостов:

  • Все номера узлов 0 означают, что IP-адрес представляет собой единый сетевой адрес, к которому подключен узел.Например, сетевой адрес узла, IP-адрес которого 5.6.7.8, равен 5.0.0.0, и этот адрес нельзя использовать для распределения ;
  • Номер хоста "все единицы" представляет все хосты в сети и, следовательно, также не может быть назначен.

Таким образом, IP-адреса, которые могут быть назначены для каждого типа сети, следующие:

Категория сети Максимальное количество сетей, которое может быть выделено Первому может быть присвоен номер сети последний назначенный номер сети Максимальное количество хостов в сети
A 126 (27-2) 1 126 16 777 215 (224-2)
B 16 383 (214-1) 128.1 191.255 65534 (216-2)
C 2 097 151 (221-1) 192.0.1 223.255.255 254 (28-2)

Из этой таблицы мы видим, что двухуровневый IP-адрес имеет недостаточную гибкость и низкий коэффициент использования.Предположим, ваша текущая компания имеет 4 компьютерных зала (по 20 хостов в каждом компьютерном зале).В целях информационной безопасности каждый компьютерный зал сеть должна быть изолирована друг от друга.В соответствии с двухуровневой архитектурой IP вы можете подать заявку только на 4 адреса класса C. В настоящее время количество IP-адресов, которые вы теряете, составляет(254-20)*4, чтобы решить проблему недостаточной гибкости двухуровневых IP-адресов, генерируются трехуровневые IP-адреса, то есть подсети. На данный момент вам нужно только подать заявку на адрес класса C, а затем разделить его на 4 подсети.

4.4 Подсети

Схема подсетей родилась в 1985 году. Она заимствует несколько битов из номера хоста в качестве номера подсети, тем самым разделяя IP-адрес на три уровня: номер сети + номер подсети + номер хоста. Предполагая, что сетевой адрес 192.168.10.0, используйте маску подсети 255.255.255.224, чтобы разделить его на подсети.На данный момент его можно разделить на четыре подсети:

Поскольку подсеть невидима для внешнего мира, для облегчения маршрутизации необходимо использовать маску подсети.Предполагая, что IP-адрес назначения равен 192.168.10.198, для правильного достижения этого адреса сначала должен быть правильно достигнут сетевой адрес 192.168.10.192. Связь между сетевым адресом, маской подсети и IP-адресом хоста следующая:

IP 地址:192.168.10.198             二进制IP地址:11000000.10101000.00001010.11000110
子网掩码:255.255.255.224           二进制掩码:11111111.11111111.11111111.11100000
网络地址:192.168.10.192            按位逻辑与运算结果为:11000000.10101000.00001010.11000000

Современные интернет-стандарты предусматривают, что все сети должны использовать маску подсети, а таблица маршрутизации маршрутизатора также должна включать маску подсети. Поскольку таблица маршрутизации содержит IP-адрес и маску подсети, сетевой адрес можно быстро вычислить путем манипуляций с битами.

Наконец, если сеть не разделяет маску подсети, ее маска подсети принимает значение по умолчанию.Маски по умолчанию для различных IP-адресов следующие:

категория Двоичное значение маски подсети десятичное значение маски подсети
A 11111111 00000000 00000000 00000000 255.0.0.0
B 11111111 11111111 00000000 00000000 255.255.0.0
C 11111111 11111111 11111111 00000000 255.255.255.0

4.5 Формирование суперсети

Бесклассовая междоменная маршрутизация (CIDR) — это метод классификации адресов для назначения IP-адресов пользователям и эффективной маршрутизации IP-датаграмм в Интернете. Он устраняет традиционную концепцию адресов классов A, B и C и подсетей и использует двухуровневую адресацию без классификации:

IP地址 ::= {<网络前缀>,<主机号>}

И используйте косую черту для представления:

128.14.35.7 / 20 = 10000000 00001110 00100011 00000111 На данный момент это означает, что все первые 20 бит являются сетевыми префиксами, а минимальный и максимальный адреса в адресном блоке, где находится адрес, таковы:
десятичный бинарный
минимальный адрес 128.14.32.0 10000000 00001110 00100000 00000000
максимальный адрес 128.14.47.255 10000000 00001110 00101111 11111111

Каждый адресный блок может быть указан с использованием минимального адреса в адресном блоке и количества битов сетевого префикса.Например, адресный блок выше может обозначаться как 128.14.32.0/20 или просто называться/20地址块. Для более удобной маршрутизации CIDR использует 32-битную маску адреса, а число после косой черты также представляет собой количество единиц в маске адреса, например/20地址块Маска адреса 11111111 11111111 11110000 00000000 .

Поскольку блок адресов CIDR может содержать несколько адресов, таблица маршрутизации использует блок адресов CIDR для поиска целевой сети.Эта агрегация адресов часто называется агрегацией маршрутизации, также известной как агрегация маршрутизации.составляют суперсеть. Благодаря агрегации маршрутов количество записей в таблице маршрутизации может быть значительно уменьшено, что повышает общую производительность сети.

4.6 ICMP и IGMP

На сетевом уровне, помимо описанных выше протоколов IP и ARP, чаще всего используются следующие два протокола:

  • Протокол управляющих сообщений Интернета (ICMP): Чтобы улучшить скорость доставки IP Datagrams, ICMP позволяет хостам или маршрутизаторам сообщать об условиях ошибок и предоставлять отчеты об исключениях отправителю, чтобы отправитель мог выполнять компенсационные действия.
  • Протокол управления группами Интернета (IGMP): протокол связи, используемый для управления членами многоадресной группы сетевого протокола. IP-хосты и соседние маршрутизаторы могут использовать IGMP для установления членства в группах многоадресной рассылки.

4.7 Частные адреса

В RFC 1918 указаны некоторые частные адреса (Private Address), эти адреса могут использоваться только для внутренней связи организации, но не для связи с хостами в Интернете. Все маршрутизаторы в Интернете никогда не будут пересылать дейтаграммы, адрес назначения которых является частным адресом. Вот три выделенных адресных блока:

  • 10.0.0.0 -- 10.255.255.255 (или 10.0.0.0/8 , также известный как 24-битные блоки);
  • 172.16.0.0 -- 172.31.255.255 (или 172.16.0.0/12 , также известный как 20-битные блоки);
  • 192.168.0.0 - 192.168.255.255 (или 192.168.0.0/16, также известный как 16-битный блок).

Поскольку разные учреждения могут использовать один и тот же частный адрес, его также называют повторно используемым адресом.

4.8 VPN

Если в организации используется частная сеть, состоящая из частных адресов, но отделы организации распределены в разных и удаленных географических точках, общедоступный Интернет может использоваться в качестве соединения между частными сетями в организации. такая частная сеть называется виртуальной частной сетью (Virtual Private Network). В настоящее время данные, проходящие через общедоступный Интернет, могут быть зашифрованы с использованием протокола IPSec (IP Security) для обеспечения безопасности.

4.8 NAT

Когда адрес, полученный хостом, является частным адресом, он не может обмениваться данными с внешним Интернетом.Если вы хотите общаться с внешним Интернетом, вы можете использовать для этого технологию NAT (преобразование сетевых адресов). Этот метод требует установки программного обеспечения NAT на маршрутизаторе, подключенном к Интернету из частной сети.Маршрутизатору NAT необходим хотя бы один действительный глобальный IP-адрес.Когда узел, использующий частный адрес, связывается с внешним миром, маршрутизатор NAT преобразует его на глобальный IP-адрес.

Из приведенного выше принципа также видно, что маршрутизатор с n глобальными IP-адресами позволяет не более чем n хостам одновременно получать доступ к Интернету. Чтобы решить эту проблему, обычно используемая таблица трансляции NAT также будет использовать номер порта транспортного уровня.

4.9 IPv6

Выше мы упоминали, что IPv4 имеет длину 32 бита, поэтому все назначаемые IP-адреса составляют около 4,2 миллиарда, и к февралю 2011 года все назначаемые адреса были исчерпаны, в результате чего IPv6 имеет длину адреса 128 бит в шестнадцатеричном формате.

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

Транспортный уровень отвечает за процесс, в котором два хоста предоставляют службу связи, которая использует номер порта 16 для идентификации порта, когда два компьютера для связи процесса, помимо того, что знают IP-адрес друг друга, но также должны знать порт друг друга. Этот уровень имеет следующие два протокола: протокол пользовательских дейтаграмм (UDP, протокол пользовательских дейтаграмм) и протокол управления передачей (TCP, протокол управления передачей):

5.1 UDP

Протокол набора пользовательских данных UDP имеет следующие особенности:

  • UDP не требует установления соединения;

  • UDP обеспечивает доставку с максимальной эффективностью, но не гарантирует надежность доставки;

  • UDP ориентирован на сообщения;

  • UDP не контролирует перегрузку, поэтому перегрузка сети не снизит скорость отправки хоста-источника;

  • UDP поддерживает интерактивную связь «один к одному», «один ко многим», «многие к одному» и «многие ко многим»;

  • Первые служебные данные UDP невелики, всего 8 байтов, что намного меньше, чем 20 байтов TCP. Первая часть состоит из четырех полей, каждое поле состоит из двух байтов:

    • Номер порта источника: он выбран, когда другая сторона должна отвечать, и она может быть представлена ​​всеми 0, когда она не требуется;
    • номер порта назначения;
    • Длина: общая длина пользовательской дейтаграммы UDP;
    • Контрольная сумма: проверьте, есть ли ошибки при передаче пользовательской дейтаграммы UDP, и отбросьте ее, если есть ошибки.

5.2 Введение в TCP

Протокол управления передачей TCP имеет следующие характеристики:

  • TCP ориентирован на соединение;

  • TCP обеспечивает надежную доставку;

  • TCP обеспечивает полнодуплексную связь, и на обоих концах есть буферы для временного хранения данных связи;

  • Ориентирован на потоки байтов, где поток относится к последовательности байтов, поступающих в процесс или исходящих из него;

  • Каждое TCP-соединение однозначно идентифицируется двумя конечными точками на обоих концах соединения, а именно:

    TCP 连接 ::= {socket1,socket2} = {(IP1,port1),(IP2,port2)}
    

5.3 Заголовок сообщения TCP

Хотя протокол TCP ориентирован на байты, основной единицей данных при его передаче является сегмент. Сегмент TCP делится на две части: заголовок и данные. Первые 20 байтов заголовка TCP являются фиксированными, за ними следуют 4n байтов, которые можно добавлять по мере необходимости (n — целое число). Конкретный формат выглядит следующим образом:

Значение каждого поля следующее:

  1. исходный порт и порт назначения: 2 байта каждый.

  2. серийный номер: занимает 4 байта, диапазон серийных номеров [ 0 , 232- 1 ] порядковый номер увеличивается до 232--1 затем вернется к 0. В TCP-соединении передаваемый поток байтов в каждом байте должен быть последовательно пронумерован.

  3. Номер подтверждения: занимает 4 байта, указывая порядковый номер первого байта данных, ожидаемого для получения следующего сегмента другой стороны. Например, когда B получает сообщение от A, порядковый номер 501 и длина данных 200 байт (порядковые номера 501 ~ 700), в это время это означает, что B правильно получил порядковый номер 700 и все данные перед ним, поэтому B отправляет данные в A. Номер подтверждения в сегменте подтверждения имеет значение 701.

  4. смещение данных: занимает 4 цифры, максимальное число, которое он может выразить, равно 15. Смещение данных представляет собой начальную позицию данных в дейтаграмме.Поскольку дейтаграмма состоит из заголовка и данных, оно фактически относится к длине заголовка сегмента. Единицей смещения данных являются 32-битные слова (т.е. единица имеет длину 4 байта), поэтому максимальная длина смещения данных составляет 60 (15*4) байтов, то есть длина заголовка Сегмент TCP не может превышать 60 байт, длина соответствующей опции не может превышать 40 байт.

  5. резерв: 6 бит, зарезервированных для использования в будущем, в настоящее время должны быть установлены на 0.

  6. шесть битов управления: Его функции следующие:

    • Аварийная УРГ (URGent): Когда значение равно 1, это указывает на то, что поле указателя срочности допустимо, что означает, что в этом сообщении есть срочные данные, которые должны быть переданы как можно скорее без необходимости передачи в исходном порядке очереди.
    • Подтверждение ACK (ACKnowledgment): если значение равно 1, номер подтверждения действителен, если значение равно 0, номер подтверждения недействителен. TCP предусматривает, что все передаваемые сегменты должны иметь ACK, установленный в 1 после установления соединения.
    • Пуш ПШ (Push): Когда значение равно 1, это означает, что получатель должен немедленно доставить данные в процесс приложения, вместо того, чтобы ждать заполнения кеша перед доставкой вверх.
    • Сброс RST (Сброс): Когда значение равно 1, это указывает на наличие серьезной ошибки в TCP-соединении, которую необходимо немедленно устранить, а затем повторно установить соединение; его также можно использовать для отклонения недопустимого сегмента или отказа в открытии соединения. .
    • Синхронизация SYN (СИНхронизация): Используется для синхронизации порядкового номера при установлении соединения. Когда SYN = 1 и ACK = 0, это указывает на то, что это сегмент запроса на соединение; если другая сторона соглашается установить соединение, она должна установить SYN = 1 и ACK = 1 в ответном сегменте.
    • Прекратить FIN (FINis): Когда значение равно 1, это указывает на то, что данные отправителя этого сегмента были отправлены, и соединение необходимо разорвать.
  7. окно: Занимает 2 байта, диапазон значений [ 0 , 216- целое число от 1]. Поле окна остается динамическим и используется для указания объема данных, который получатель позволяет отправить отправителю.

  8. контрольная сумма: Занимает 2 байта, а диапазон проверки полей включает заголовок и данные.

  9. Аварийный указатель: Занимает 2 байта. Имеет смысл только при URG = 1. Используется для указания конечной позиции срочных данных. Обычные данные располагаются после конечной позиции.

  10. опции: Переменная длина, до 40 байт. Доступные параметры: максимальная длина сегмента, параметры увеличения окна, параметры метки времени и т. д.

5.4 Трехстороннее рукопожатие

Процесс установления соединения в TCP называется рукопожатием, которое требует обмена тремя сегментами TCP между клиентом и сервером, а именно:

  1. Серверный процесс B сначала создает модуль управления передачей TCB, а затем входит в состояние LISTEN (прослушивание), готовый принять запрос клиента на соединение;

  2. Первый клиентский процесс для создания модуля управления передачей TCB, а затем отправки сегмента сообщения запроса на соединение с битом синхронизации.SYN = 1и выберите начальный порядковый номерseq = x, а затем войдите в состояние SYN-SENT;

  3. После того, как B получает сегмент запроса на соединение, если он соглашается установить соединение, он отправляет сегмент подтверждения.В это время как SYN, так и ACK устанавливаются в 1, а номер подтвержденияack = x + 1, и выберите себе начальный порядковый номерseq =y, а затем войдите в состояние SYN-RCVD (синхронный прием);

  4. После того, как A получает подтверждение от B, он отправляет окончательное подтверждение о том, что ACK сегмента подтверждения равен 1, а номер подтвержденияack = y + 1, серийный номерseq = x + 1. Стандарт TCP предусматривает, что сегмент ACK может передавать данные или нет.Если нет, порядковый номер не будет использоваться, а порядковый номер следующего сегмента данных по-прежнему сохраняется.seq = x + 1. Затем A переходит в состояние ESTABLISHED (подключено);

  5. Когда B получает подтверждение от A, он также переходит в состояние ESTABLISHED.

5.5 Четыре волны

После завершения передачи данных обе стороны связи могут разорвать соединение. Конкретный процесс выглядит следующим образом:

  1. Предполагая, что прикладной процесс A активно закрывает соединение первым, ему необходимо отправить сегмент освобождения соединения: бит управления завершением заголовка FIN равен 1, а порядковый номерseq = u, где u равна порядкому номеру последнего байта ранее переданных данных плюс 1. Тогда А входит в FIN-ждать-1 (прекращение ожидания 1);

  2. Процесс приложения B. Получает раздел «Отпуск соединения» для выдачи подтверждения, номер подтвержденияack = u + 1, серийный номерseq = v, где v равно порядковому номеру последнего байта ранее переданных данных плюс 1 . После этого B переходит в состояние CLOSE-WAIT (ожидание закрытия) и информирует высокоуровневый процесс приложения. В это время TCP-соединение находится в полузакрытом состоянии, то есть у A нет данных для отправки, но если B отправляет данные, A все равно должен их получить;

  3. После того, как A получает подтверждение от B, он переходит в состояние FIN-WAIT-2 (ожидание завершения 2), ожидая, пока B отправит сегмент освобождения соединения;

  4. Если процесс приложения высокого уровня не имеет данных для отправки, уведомите B, чтобы разорвать TCP-соединение. В это время B отправляет сегмент соединения освобождения: бит управления завершением заголовка FIN равен 1, а серийный номерseq = w(B мог отправить некоторые данные в полузакрытом состоянии), а также необходимо повторить номер подтверждения, который был отправлен в последний разack = u + 1. Затем B переходит в состояние LAST-ACK (последнее подтверждение);

  5. После того, как A получает сегмент освобождения соединения от B, он отправляет окончательное подтверждение: ACK равен 1, номер подтвержденияack = w + 1, серийный номерseq = u + 1, а затем войдите в состояние TIME-WAIT (ожидание с ограничением по времени);

  6. B переходит в состояние CLOSED после получения окончательного подтверждения от A;

  7. A переходит в состояние CLOSED после двукратного превышения MSL (максимального времени жизни сегмента).

RFC 793 рекомендует устанавливать MSL равным 2 минутам.Теперь, когда сетевая среда качественно улучшилась, это значение можно при необходимости сократить. Причина, по которой A приходится ждать в два раза больше времени MSL, прежде чем войти в состояние CLOSED, в основном основана на следующих двух причинах:

  • Чтобы гарантировать, что последний отправленный сегмент сообщения ACK может достичь B. Если b не получает окончательного подтверждения, выполняется повторная отправка сегмента сообщения FIN + ACK по тайм-ауту, и A отвечает на сегмент сообщения в течение времени ожидания 2MSL и окончательного подтверждения;
  • Убедитесь, что все сегменты, сгенерированные в этом подключении, исчезли из сети, чтобы гарантировать, что старый сегмент запроса на подключение не появится в следующем новом подключении.

5.6 Принцип надежной передачи

1. Хватит ждать протокол

Для достижения надежной передачи в самом простом случае можно использовать протокол «стоп-ожидание»: прекращать отправку каждого блока данных после отправки и ждать подтверждения другой стороны.

На данный момент есть две проблемы:

  • Если в процессе отправки данных от А к Б произошла потеря, в это время Б не может получить данные и, естественно, не вернет подтверждение, тогда программа будет продолжать ждать;
  • Если B отправляет подтверждение A, теряется или требуется много времени, чтобы достичь A, тогда программа будет продолжать ждать.

Для первой проблемы решение состоит в повторной передаче с тайм-аутом, если в течение заданного времени не получено подтверждения:

Для второй проблемы решение по-прежнему заключается в повторной передаче сверхурочно, что подразделяется на следующие два случая:

  • Если B получает M1, но возвращенное подтверждение теряется, при повторной передаче с течением времени B необходимо отбросить повторно полученный M1;

  • Если подтверждение возврата B не потеряно, а поступает в A после превышения времени повторной передачи, то A может получить два подтверждения, одно является подтверждением повторной передачи, а другое является исходным подтверждением задержанного прибытия, A необходимо отбросить Подтверждение задержки прибытия без какой-либо обработки:

В базовом протоколе с остановкой и ожиданием за раз отправляется только один блок данных, а использование канала очень низкое.Чтобы решить эту проблему, можно использовать конвейерную передачу для одновременной отправки нескольких блоков данных:

Когда используется конвейерная передача, протокол непрерывного ARQ и протокол скользящего окна должны использоваться вместе для обеспечения надежности.

2. Непрерывный протокол ARQ

Протокол Continuous ARQ (Automatic Repeat reQuest) означает, что отправитель поддерживает окно отправки определенного размера, и все пакеты в пределах окна отправки могут быть отправлены непрерывно, не дожидаясь подтверждения другой стороны.Просто сдвиньте окно отправки вперед на один групповая позиция:

Обычно получатель обычно использует способ накопительного подтверждения. В это время получатель не должен отправлять подтверждения на полученные пакеты один за другим, а отправляет подтверждение на последний пакет, который приходит последовательно после получения нескольких пакетов, что означает, что этот пакет и все предыдущие пакеты пришли правильно. . . .

5.7 Надежная передача TCP

Скользящее окно TCP указывается в байтах, и для расчета времени повторной передачи RTO (Retransmission Time Out) используется следующий метод:

RTO = RTT_S + 4 × RTT_D

где РТТSпредставляет собой средневзвешенное время приема-передачи, рассчитанное следующим образом:

新的 RTT_S = (1-α) × 旧的 RTT_S +  α × 新的 RTT 值
  • RTT (время приема-передачи) представляет собой время приема-передачи сегмента, которое записывает продолжительность времени с момента отправки сегмента до получения подтверждения;
  • При первом измерении RTTSЗначение равно значению RTT, после RTTSЗатем используйте приведенную выше формулу для расчета;
  • Если 0 ≤ α

RTTDсредневзвешенное значение отклонений RTT, рассчитанное как:

新的 RTT_D = (1-β) × 旧的 RTT_D +  β × |RTT_S - 新的 RTT 值|
  • При первом измерении RTTDравно половине значения RTT, после чего RTTDЗатем используйте приведенную выше формулу для расчета;
  • Значение бета — это коэффициент меньше 1, и RFC 6298 рекомендует значение 0,25.

5.8 Управление потоком

Управление потоком относится к управлению скоростью отправки отправителя, чтобы у получателя было время для приема. Предполагая, что A отправляет данные B, когда соединение установлено, B сообщит A размер своего окна приема (rwnd, окно получателя), и A должен убедиться, что размер окна отправки не может превышать размер окна B. окно получения. Реализует управление потоком на отправителе.

5.9 Контроль перегрузки

Перегрузка сети относится к ситуации, когда объем передаваемых данных превышает пропускную способность узла, а пропускная способность снижается. Контроль перегрузки предназначен для предотвращения перегрузки маршрутизаторов и каналов связи из-за чрезмерного ввода данных в сеть. TCP использует четыре алгоритма для управления перегрузкой: медленный старт, предотвращение перегрузки, быстрая повторная передача и быстрое восстановление:

1. медленное начало

И медленный старт, и предотвращение перегрузки являются управлением перегрузкой на основе окна: отправитель поддерживает переменную состояния, называемую окном перегрузки cwnd (окно перегрузки), значение которой зависит от степени перегрузки сети и изменяется динамически. к окну заторов.

Идея медленного старта заключается в следующем: Так как грузоподъемность сети неизвестна, то лучший вариант - обнаруживать постепенно, то есть умножать окно отправки от малого к большому, то есть умножать загруженность от от малого к большому значение окна.

2. Предотвращение заторов

Идея алгоритма предотвращения перегрузки заключается в медленном увеличении окна перегрузки cwnd: окно перегрузки cwnd отправителя увеличивается на 1 каждый раз, когда истекает время RTT туда-обратно, а не удваивается, как в фазе медленного старта. Медленный старт и предотвращение перегрузки обычно используются вместе для обеспечения скорости запуска.В начале медленный старт используется для умножения, а когда достигается определенный порог ssthresh, предотвращение перегрузки используется для устойчивых попыток:

3. Быстрая ретрансляция и быстрое восстановление

Алгоритм быстрой повторной передачи требует, чтобы получатель не ждал, пока данные будут отправлены сами по себе, прежде чем совмещать подтверждение, а немедленно отправил подтверждение. Пример выглядит следующим образом:

Как показано на рисунке выше, когда M3В случае потери отправьте М позже4, М5, М6Все получено за М2, отправитель может знать M3было потеряно и должно быть немедленно передано повторно. Поскольку в это время теряются только отдельные пакеты, а не перегрузка сети, выполнитебыстрое восстановление: Отправитель настраивает ssthresh=cwnd/2 и устанавливает cwnd=ssthresh=8 (точка 5 на рисунке), и начинает выполнение алгоритма предотвращения перегрузки.

В-шестых, прикладной уровень

6.1 Система доменных имен DNS

В настоящее время мы все используем простые для понимания доменные имена для доступа к Интернет-приложениям, но транспортному уровню нужны IP-адреса, поэтому нам необходимо использовать систему доменных имен (DNS, система доменных имен) для преобразования между доменными именами и IP-адресами.

Доменное имя — это логическое понятие, разделенное на многоуровневые доменные имена, самым основным из которых является корневое доменное имя, за которым следует доменное имя верхнего уровня, доменное имя верхнего уровня делится на четыре категории:

  • Национальный домен верхнего уровня nTLD: Например, cn означает Китай, а us означает США;
  • рДВУ: Например, com представляет компанию, org представляет некоммерческую организацию, а net представляет организацию сетевого обслуживания;
  • доменное имя инфраструктуры: Также известное как обратное доменное имя, используемое для обратного разрешения имени домена, доменное имя верхнего уровня имеет только один arpa;
  • Новый домен верхнего уровня Новый рДВУ: Корпорация ICANN утвердила новые TLD 20 июня 2011 г., что позволяет подавать заявки любой компании или учреждению, которые соответствуют критериям.

6.2 Протокол передачи файлов FTP

Протокол передачи файлов (FTP, File Transfer Protocol) — это набор стандартных протоколов для передачи файлов по сети, позволяющий клиентам указать тип и формат файла и получить разрешение на хранение файла. Процесс FTP-сервера состоит из двух частей:

  • основной процесс: Ответственный за получение новых запросов;
  • несколько подчиненных процессов: отвечает за обработку одного запроса.

Таким образом, один процесс FTP-сервера может одновременно обслуживать несколько клиентских процессов.

6.3 Удаленный терминальный протокол Telnet

Протокол Telnet — это стандартный протокол и основной метод службы удаленного входа в Интернет, который предоставляет пользователям возможность доступа к удаленным узлам на локальном компьютере. Telnet может передавать нажатия клавиш пользователя на удаленный хост, а также может возвращать вывод удаленного хоста на экран пользователя через TCP-соединение.Эта услуга прозрачна, и пользователь чувствует, что клавиатура и дисплей напрямую подключены к удаленному Поэтому Telnet также называют протоколом эмуляции терминала.

6.4 Всемирная паутина

Всемирная паутина — это распределенная гипермедиасистема, являющаяся расширением гипертекстовой системы. Он содержит следующие важные понятия:

1. Единый URL-адрес указателя ресурса

Метод, используемый для поиска ресурсов в Интернете и доступа к этим ресурсам в следующем формате:

<协议>://<主机>:<端口>/<路径>

2. Протокол передачи гипертекста HTTP

Протокол HTTP определяет, как браузеры запрашивают документы из всемирной сети и о том, как серверы доставляют документы в браузеры.

3. Язык гипертекстовой разметки HTML

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

6.5 Протокол динамической конфигурации хоста DHCP

Обычно программное обеспечение протокола компьютера, подключенного к Интернету, требует настройки нескольких элементов, таких как IP-адрес, маска подсети, IP-адрес маршрутизатора по умолчанию и IP-адрес сервера доменных имен и т. д. конфигурации, в настоящее время широко используется Интернет.DHCP (протокол динамической конфигурации хоста) обеспечивает сетевой механизм plug-and-play. На этом этапе вам нужно только использовать конфигурацию по умолчанию, а именно:

В это время хост, который должен быть подключен к Интернету, будет транслировать сообщение об обнаружении (DHCP DISCOVER) при запуске, а его адрес назначения — 255.255.255.255 (то есть ограниченный широковещательный адрес). все хосты в локальной сети могут получить это широковещательное сообщение, но только DHCP-сервер ответит на это широковещательное сообщение предложением (DHCP OFFER). DHCP-сервер сначала ищет информацию о конфигурации компьютера в своей базе данных, и если она найдена, он возвращается напрямую; если он не найден, он берет адрес из пула IP-адресов сервера и назначает его компьютеру.

Обычно не в каждой сети есть сервер DHCP, но в каждой сети есть по крайней мере один агент ретрансляции DHCP (обычно маршрутизатор), настроенный с использованием информации об IP-адресе сервера DHCP. Когда агент ретрансляции DHCP получает сообщение об обнаружении от хоста А, он пересылает его на DHCP-сервер в одноадресной рассылке; после ожидания ответа он пересылает его обратно на хост А.

IP-адрес, назначенный клиенту DHCP, является временным, который можно использовать только в течение определенного периода времени, который называется периодом аренды, который устанавливается сервером DHCP.

использованная литература

  1. Се Сижэнь, Компьютерные сети (Седьмое издание), Electronic Industry Press, 2017-01.
  2. Джеймс Ф. Куросе / Кит В. Росс, Компьютерные сети — нисходящий подход (седьмое издание), Mechanical Industry Press, 2018–06.
  3. Подробное объяснение создания подсетей и подробный анализ примеров создания подсетей
  4. Основа сети -- дейтаграмма IP, стратегия фрагментации, таблица маршрутизации
  5. Полностью понимать протокол ICMP

Дополнительные статьи см. в [Full Stack Engineer Manual], адрес GitHub:GitHub.com/Black and WhiteShould/…