задний план
Эта серия статей в основном подготовлена для инженеров вообще, непрофессиональных разработчиков (например, мобильных терминалов). Знания в основном основаны на наборе протоколов TCP/IP, а также будет краткое введение в прикладной уровень и уровень канала передачи данных.
Содержание статьи не будет сложным, и в ней не будет слишком много обсуждения различных алгоритмов, а цель — как можно быстрее достичь глубочайшего понимания. Содержание, безусловно, намного богаче, чем прямой поиск Baidu по запросу «протокол TCP/IP», а затем случайное прочтение статьи, но этого недостаточно для того, чтобы читатели были компетентны в развитии сети.
Это правда, что опросы в основном основаны на таких протоколах, как TCP/UDP/HTTP, а IP-протоколы редко используются, не говоря уже об уровне передачи данных. Но я хочу понять эти вопросы в принципе, а не зубрить, зазубривать какие-то ответы и забывать их после собеседования. Не готовьтесь к собеседованию ради интервью, готовьтесь к идеальному набору знаний. Если вы чувствуете, что это именно то, что вам нужно, давайте начнем!
Семиуровневая модель и протокол OSI
В этом разделе мы не будем говорить о конкретных ролях этих уровней и протоколов.В настоящее время нам нужно только знать, что в модели OSI сеть разделена на семь уровней, от нижнего уровня до верхнего уровня: физический уровень, уровень канала передачи данных, сетевой уровень, уровень уровня передачи, уровень сеанса, уровень представления и прикладной уровень.
Протокол — это громкое слово, которое встречается очень часто. На самом деле это легко понять, это спецификация, которую соблюдают обе стороны коммуникации. Например, мне нужно передать пол и возраст другому хосту, затем я могу определить «протокол А», протокол предусматривает, что первые 4 байта данных представляют пол, а последние 4 байта представляют возраст. Таким образом, когда другой хост получает его, он знает, что первые 4 байта — это пол, и не примет их за возраст.
Весь мир Интернета может работать исключительно благодаря строгому соблюдению существующих протоколов различными производителями программного и аппаратного обеспечения. Возьмем в качестве примера IP-протокол, вы можете модифицировать его небрежно, а затем сами придумать протокол IP2, но никто не признает и не соблюдает этот протокол, поэтому он бесполезен.
физический слой
Физический уровень находится в нижней части семиуровневой модели OSI, и его основной задачей является преобразование потока битов в электронные сигналы.
В компьютерном мире все состоит из нулей и единиц. Артикул, который вы видите, естественным образом существует в виде нулей и единиц в процессе передачи на ваш компьютер по сети. Однако очевидно, что в среде сетевой передачи (такой как оптическое волокно, витая пара, радиоволна и т. д.) нет 0 и 1. Например, в свете данные передаются в виде света. 0 и 1 представлены включением и выключением света, а преобразование выполняется на физическом уровне.
Без физического уровня битовый поток 0 и 1 не может распространяться через физическую среду.
канальный уровень
Уровень канала передачи данных — это второй уровень семиуровневой модели OSI, который определяет спецификацию передачи данных между устройствами, подключенными друг к другу через среду связи.
На канальном уровне данные больше не существуют в виде последовательности 0 и 1, они разбиваются на «кадры» один за другим, а затем передаются.
На канальном уровне есть две важные концепции: MAC-адрес и коммутация пакетов.
MAC-адрес
MAC-адрес — это строка чисел, прошитая в ПЗУ сетевой карты, длиной 48 бит, которая является уникальной в мире (независимо от пользовательского MAC-адреса виртуальной машины). Благодаря уникальности MAC-адреса его можно использовать для различения разных узлов.После указания MAC-адреса невозможно не знать, на какое устройство передавать данные.
коммутация пакетов
Под коммутацией пакетов понимается разделение больших данных на несколько меньших и их последовательная отправка. Причина использования коммутации пакетов заключается в том, что разные каналы передачи данных имеют свои собственные максимальные единицы передачи (MTU: Maximum Transmission Unit). Разные каналы передачи данных — это как разные транспортные каналы, а грузовик (соответствующий среде связи) имеет грузоподъемность 5 тонн. Тогда для перевозки 20 тонн товара на грузовике потребуется разделить товар на четыре части, каждая из которых весит 5 тонн. Если грузоподъемность транспортного самолета 30 тонн, то эти грузы не нужно делить, и их можно увезти непосредственно транспортным самолетом.
Возьмем в качестве примера Ethernet (канал передачи данных), его MTU составляет 1500 байт, то есть данные, передаваемые через Ethernet, должны быть разбиты на несколько фреймов, а длина данных каждого фрейма не превышает 1500 байт. Если данные, отправленные верхним уровнем, превышают эту длину, канальный уровень необходимо разделить, а затем отправить.
Кадр Ethernet
Давайте возьмем Ethernet в качестве примера, чтобы представить формат кадров Ethernet.
Начало фрейма Ethernet — это «преамбула» длиной 8 байт. Этот раздел бесполезен. Основное внимание уделяется телу фрейма Ethernet.
Онтология состоит из трех частей: заголовка, данных и FCS:
Часть типа хранит номер протокола верхнего уровня.Например, если верхний уровень является протоколом IP, номер равен 0800.
FCS расшифровывается как Frame Check Sequence, которая используется для определения того, поврежден ли кадр во время передачи (например, из-за электронных шумовых помех). FCS сохраняет остаток от деления переданного кадра на некоторый полином, таким же образом вычисляется и полученный кадр, если полученное значение совпадает с FCS, значит, ошибки нет.
выключатель
Коммутатор — это сетевое устройство, работающее на канальном уровне, имеющее несколько портов и способное подключать различные устройства. Коммутатор решает, на какой порт отправлять данные, в соответствии с MAC-адресом назначения в каждом кадре, в это время ему необходимо обратиться к «таблице пересылки».
Таблица переадресации не задается вручную, а запоминается коммутатором автоматически. Когда устройство отправляет кадр коммутатору, коммутатор связывает исходный MAC-адрес кадра с интерфейсом и добавляет его в таблицу пересылки в качестве записи.
На следующем рисунке показан принцип процесса самообучения коммутатора.
Наиболее важным моментом уровня канала передачи данных является его определение: «спецификация передачи данных между устройствами, соединенными друг с другом через среду связи». Это показывает, что протокол уровня канала передачи данных подходит дляУзлы на обоих концах одного и того же канала передачи данных. Если вы этого не понимаете, вы не можете понять сетевой уровень и IP-протокол.
Значение канального уровня заключается в том, что при отсутствии канального уровня данные могут существовать только в среде связи в виде потока, и неизвестно, куда их отправить, а длинный поток данных может быть невозможен. передается в среде связи.