1. Каковы структуры и функции каждого уровня OSI и TCP/IP?
Семиуровневая архитектура OSI имеет четкую концепцию и законченную теорию, но она более сложна и непрактична. Вот краткое упоминание о причинах провала OSI, которую ранее поддерживали некоторые крупные компании и даже некоторые национальные правительства:
- Экспертам OSI не хватает практического опыта и коммерческого стремления завершить стандарт OSI.
- Протокол OSI слишком сложен для реализации и работает неэффективно.
- Цикл нормотворчества OSI слишком долог, чтобы оборудование, произведенное по стандарту OSI, не могло вовремя выйти на рынок (в начале 1990-х годов, хотя весь набор международных стандартов OSI был сформулирован, Интернет на базе TCP/ ИП уже заняла лидирующие позиции на мировом рынке.Большой ассортимент сработал успешно)
- Разделение по уровням OSI нецелесообразно, и некоторые функции повторяются на нескольких уровнях.
Архитектура пятиуровневого протокола
При изучении компьютерных сетей мы обычно используем компромиссный метод, то есть нейтрализуем преимущества OSI и TCP/IP и принимаем архитектуру только с пятиуровневыми протоколами, которая является одновременно краткой и понятной.
В сочетании с ситуацией в Интернете, сверху вниз, очень краткое введение в роль каждого слоя.
1 прикладной уровень
Задача прикладного уровня состоит в том, чтобы завершить конкретное сетевое приложение посредством взаимодействия между прикладными процессами.Протокол прикладного уровня определяет правила связи и взаимодействия между прикладными процессами (процессами: программами, работающими на хосте). Для разных сетевых приложений требуются разные протоколы прикладного уровня. В Интернете существует множество протоколов прикладного уровня, таких какСистема доменных имен DNS, который поддерживает приложения World Wide WebHTTP-протокол, который поддерживает электронную почтуSMTP-протоколи Т. Д. Мы называем блок данных, с которым взаимодействует прикладной уровень, сообщением.
Система доменных имен (Domain Name System аббревиатура DNS, доменное имя переводится как доменное имя)
Система доменных имен является основной службой Интернета.В качестве распределенной базы данных, которая может сопоставлять доменные имена и IP-адреса друг с другом, она может упростить доступ людей в Интернет без необходимости запоминать строки IP, которые могут быть непосредственно прочитаны пользователем. машины. . (Энциклопедия Baidu) Например: веб-сайт компании может рассматриваться как ее онлайн-портал, а доменное имя эквивалентно ее домашнему адресу.Обычно в доменном имени используется название компании или аббревиатура. Например, упомянутое выше доменное имя корпорации Microsoft аналогично: доменное имя IBM — www.ibm.com, доменное имя Oracle — www.oracle.com, доменное имя Cisco — www.cisco.com и так далее.
HTTP-протокол
Протокол передачи гипертекста (HTTP) является наиболее широко используемым сетевым протоколом в Интернете. Все документы WWW должны соответствовать этому стандарту. Первоначально HTTP был разработан для обеспечения возможности публикации и получения HTML-страниц. (Энциклопедия Байду)
2 транспортный уровень
Основная задача транспортного уровня — предоставить общий сервис передачи данных для связи между двумя хост-процессами.. Прикладной процесс использует эту службу для передачи пакетов прикладного уровня. «Универсальный» означает, что он не нацелен на конкретное сетевое приложение, но несколько приложений могут использовать одну и ту же службу транспортного уровня. Поскольку хост может запускать несколько потоков одновременно, транспортный уровень имеет функцию мультиплексирования и демультиплексирования. Так называемое мультиплексирование означает, что несколько процессов прикладного уровня могут одновременно использовать услуги нижнего транспортного уровня.В отличие от демультиплексирования и мультиплексирования, транспортный уровень доставляет полученную информацию соответствующим процессам на прикладном уровне выше.
Транспортный уровень в основном использует следующие два протокола:
- Протокол управления передачей TCP(Протокол управления передачей) -- предоставляетсяориентированный на соединениеиз,надежныйСервис передачи данных.
- Протокол пользовательских данных UDP(Протокол пользовательских дейтаграмм) -- Предоставляетсянет соединения, служба передачи данных с максимальной эффективностью (Надежность передачи данных не гарантируется).
Основные возможности UDP:
- UDP не требует установления соединения;
- UDP использует доставку с наилучшими усилиями, т.е. надежная доставка не гарантируется, поэтому хосту не нужно поддерживать сложное состояние канала (в нем много параметров);
- UDP ориентирован на сообщения;
- UDP не контролирует перегрузку, поэтому перегрузка сети не снизит скорость отправки хоста-источника (полезно для приложений реального времени, таких как IP-телефония, видеоконференции в реальном времени и т. д.);
- UDP поддерживает интерактивную связь «один к одному», «один ко многим», «многие к одному» и «многие ко многим»;
- Заголовок UDP невелик, всего 8 байтов, что меньше 20-байтового заголовка TCP.
Основные возможности TCP:
- TCP ориентирован на соединение. (Так же, как и при звонке, вам нужно набрать номер, чтобы установить соединение, прежде чем звонить, и повесить трубку, чтобы разорвать соединение после завершения звонка);
- Каждое соединение TCP может иметь только две конечные точки, и каждое соединение TCP может быть только двухточечным (один к одному);
- TCP обеспечивает надежную доставку услуг. Данные, передаваемые по TCP-соединению, безошибочны, не теряются, не дублируются и поступают последовательно;
- TCP обеспечивает полнодуплексную связь. TCP позволяет приложениям на обеих сторонах связи отправлять данные в любое время. Оба конца соединения TCP оснащены буфером отправки и буфером приема, которые используются для временного хранения данных, передаваемых между двумя сторонами;
- Ориентирован на байтовые потоки. «Поток» в TCP относится к последовательности байтов, поступающих в процесс или исходящих из него. Значение «ориентированного на поток байтов» заключается в том, что, хотя взаимодействие между приложением и TCP представляет собой один блок данных за раз (разного размера), TCP рассматривает только данные, переданные приложением, как серию неструктурированных потоков байтов.
3 сетевой уровень
Сетевой уровень отвечает за предоставление коммуникационных услуг для различных узлов в сети с коммутацией пакетов.При отправке данных сетевой уровень инкапсулирует сегменты или пользовательские дейтаграммы, сгенерированные транспортным уровнем, в пакеты и пакеты для передачи. В архитектуре TCP/IP, поскольку сетевой уровень используетIP-протокол, поэтому группировку также называютIP-датаграмма, именуемыйДейтаграмма.
Обратите внимание:Не путайте «пользовательскую дейтаграмму UDP» на транспортном уровне с «IP-дейтаграммой» на сетевом уровне.. Кроме того, независимо от того, какой уровень единицы данных, он обычно может быть представлен как «пакет».
Другой задачей сетевого уровня является выбор подходящего маршрута, чтобы пакеты, передаваемые с транспортного уровня узла-источника, могли найти узел-получатель через маршрутизаторы на сетевом уровне.
Здесь подчеркивается, что слово «сеть» в сетевом уровне больше не является той конкретной сетью, о которой мы обычно говорим, а относится к названию третьего уровня в модели архитектуры компьютерной сети.
Интернет состоит из большого количества разнородных сетей, соединенных между собой маршрутизаторами. Протокол сетевого уровня, используемый в Интернете, представляет собой Интернет-протокол без установления соединения (Intert Prococol) и множество протоколов маршрутизации, поэтому сетевой уровень Интернета также называетсяИнтернет-уровеньилиIP-уровень.
4 канальный уровень (канальный уровень)
Канальный уровень часто называют просто канальным уровнем. Передача данных между двумя хостами всегда осуществляется по сегментному каналу, что требует использования специального протокола канального уровня.При передаче данных между двумя соседними узламиКадр сборки IP-датаграммы, который канальный уровень передает от сетевого уровня., передает кадры по каналу между двумя соседними узлами. Каждый кадр включает в себя данные и необходимую управляющую информацию (такую как информация о синхронизации, адресная информация, контроль ошибок и т. д.).
При приеме данных управляющая информация позволяет приемнику узнать, с какого бита кадр начинается и где он заканчивается. Таким образом, после получения кадра канальный уровень может извлечь из него часть данных и передать ее сетевому уровню. Управляющая информация также позволяет приемнику обнаруживать ошибки в принятом кадре. Если обнаружена ошибка, канальный уровень просто отбрасывает ошибочный кадр, чтобы не тратить ресурсы сети впустую, продолжая передачу по сети. Если необходимо исправить ошибки при передаче данных на канальном уровне (то есть канальный уровень должен не только обнаруживать, но и исправлять ошибки), то для исправления ошибок используется надежный протокол передачи. Такой подход усложняет протокол на канальном уровне.
5 физический уровень
Единицей данных, передаваемых на физическом уровне, является бит. ** Роль физического уровня заключается в реализации прозрачной передачи битовых потоков между соседними компьютерными узлами и максимально возможном устранении различий между конкретными средами передачи и физическими устройствами. ** Избавляет вышестоящий уровень канала передачи данных от необходимости учитывать конкретную среду передачи данных в сети. «Прозрачная передача потока битов» означает, что поток битов, передаваемый реальной схемой, не изменился, и цепь кажется невидимой для передаваемого потока битов.
Среди различных протоколов, используемых в Интернете, наиболее важными и наиболее известными являются протоколы TCP/IP. Термин TCP/IP, который сейчас часто упоминают, не обязательно относится к двум конкретным протоколам TCP и IP, но часто относится ко всему семейству протоколов TCP/IP, используемых в Интернете.
Выше у нас есть предварительное представление о пятиуровневой архитектуре компьютерных сетей, а схема семиуровневой архитектуры прилагается ниже для обобщения. Источник изображения: https://blog.csdn.net/yaopeng_2005/article/details/7064869
Два TCP, трехстороннее рукопожатие и четыре волны (обычное собеседование)
Для точной доставки данных в пункт назначения протокол TCP использует стратегию трехэтапного рукопожатия.
Комическая иллюстрация:
Источник изображения: "Иллюстрированный HTTP"
Простая схема:
- Клиент — отправить пакет с флагом SYN — одно рукопожатие — сервер
- Сервер - Отправка пакета с флагом SYN/ACK - Двустороннее рукопожатие - Клиент
- Клиент — отправить пакет с флагом ACK — трехстороннее рукопожатие — сервер
Зачем возвращать SYN (инициировать новую ссылку)?
Получатель отправляет обратно SYN, отправленный отправителем, чтобы сообщить отправителю, что полученная мной информация действительно является отправленным вами сигналом.
Почему после передачи SYN вам все еще нужно передавать ACK (чтобы подтвердить, что серийный номер действителен)?
Правильная связь между двумя сторонами должна заключаться в том, что информация, отправляемая друг другу обеими сторонами, верна. SYN передается, что доказывает, что с каналом от отправителя к получателю проблем нет, но канал от получателя к отправителю также нуждается в сигнале ACK для проверки.
Для отключения TCP-соединения требуются «четыре волны»:
- Клиент — отправляет FIN, чтобы закрыть передачу данных между клиентом и сервером.
- Сервер — получает этот FIN, отправляет обратно ACK, подтверждающий, что порядковый номер равен полученному порядковому номеру плюс 1. Как и SYN, FIN будет занимать порядковый номер
- Сервер - закрывает соединение с клиентом, отправляет клиенту FIN
- Клиент - отправьте обратно подтверждение сообщения ACK и установите порядковый номер подтверждения равным полученному порядковому номеру плюс 1.
Вышеизложенное носит более общий характер, и рекомендуется более подробная статья:blog.CSDN.net/where overspeed/art IC…
Три различия между протоколами TCP и UDP
UDP не нужно устанавливать соединение перед передачей данных, а удаленному хосту не нужно давать никаких подтверждений после получения UDP-пакета. Хотя UDP не обеспечивает надежной доставки, в некоторых случаях UDP действительно является наиболее эффективным способом работы (обычно используется для обмена мгновенными сообщениями), например: QQ voice QQ video, прямая трансляция и т. д.
TCP предоставляет услуги, ориентированные на соединение. Соединение должно быть установлено перед передачей данных, а соединение должно быть разорвано после завершения передачи данных. TCP не предоставляет услуги широковещательной или многоадресной рассылки. Поскольку TCP должен предоставлять надежные, ориентированные на соединение транспортные услуги (надежность TCP отражается в том факте, что TCP имеет три рукопожатия для установления соединения перед передачей данных, а также механизмы подтверждения, окна, повторной передачи и управления перегрузкой во время передачи данных). После передачи данных соединение будет разорвано для экономии системных ресурсов), что неизбежно добавляет много накладных расходов, таких как подтверждение, управление потоком, таймеры и управление соединением. Это не только делает заголовок блока данных протокола намного больше, но и отнимает много ресурсов процессора. TCP обычно используется в таких сценариях, как передача файлов, отправка и получение почты и удаленный вход в систему.
Четыре Введите URL-адрес в браузере -> процесс отображения главной страницы (интервью регуляров)
Baidu, кажется, любит этот вопрос больше всего.
Откройте веб-страницу, какие протоколы будут использоваться на протяжении всего процесса
Источник изображения: "Иллюстрированный HTTP"
Пять кодов состояния
Связь между различными протоколами и протоколом HTTP
Как правило, интервьюеры будут использовать такие вопросы, чтобы проверить ваше понимание системы знаний о компьютерных сетях.
Источник изображения: "Иллюстрированный HTTP"
Длинное соединение Seven HTTP, короткое соединение
Короткие соединения используются по умолчанию в HTTP/1.0. То есть каждый раз, когда клиент и сервер выполняют HTTP-операцию, устанавливается соединение, которое разрывается при завершении задачи. Когда веб-страница определенного HTML или другого типа, к которой обращается клиентский браузер, содержит другие веб-ресурсы (такие как файлы JavaScript, файлы изображений, файлы CSS и т. д.), каждый раз, когда встречается такой веб-ресурс, браузер будет заново создавать сеанс HTTP.
Начиная с HTTP/1.1, постоянные соединения используются по умолчанию для поддержания характеристик соединения. Используя протокол HTTP с длинным подключением, эта строка кода будет добавлена в заголовок ответа:
Connection:keep-alive
В случае использования длительного соединения при открытии веб-страницы TCP-соединение, используемое для передачи HTTP-данных между клиентом и сервером, не будет закрыто, при повторном обращении клиента к серверу он продолжит использовать установленное связь. . Keep-Alive не сохраняет соединение вечно, у него есть время сохранения, которое можно установить в другом серверном ПО (например, в Apache). Реализация постоянного соединения требует, чтобы и клиент, и сервер поддерживали постоянные соединения.
Длинное соединение и короткое соединение протокола HTTP по существу представляют собой длинное соединение и короткое соединение протокола TCP.
——«Что такое длинные соединения HTTP и короткие соединения? 》
напиши в конце
Порекомендуйте свою собственную внутреннюю документацию с открытым исходным кодом
Java-Guide: Java-интервью Таможенное руководство (Руководство по изучению Java).
👉Адрес на гитхабе:GitHub.com/snail Climb/…
👊Позиционирование документа: документ с открытым исходным кодом, специально подготовленный для внутренних инженеров Java. Я считаю, что вы можете извлечь что-то из этого документа, независимо от того, являетесь ли вы новичком в Java или уже стали инженером Java.
Вы можете проверить базовые знания о компьютерных сетях (первые базовые знания, вторая частичная сводка, все очень хорошо):
- «Сводка знаний о компьютерных сетях».
- Интервью уносит вас в полет: это исчерпывающее изложение основ компьютерных сетей.
Обзор часто задаваемых вопросов о компьютерных сетях
Наиболее распространенными проблемами в компьютерных сетях, я думаю, должны быть следующие 5:
- ① Трехстороннее рукопожатие TCP и четырехсторонняя волна,
- ②Введите URL-адрес в браузере -> процесс отображения домашней страницы
- ③Разница между HTTP и HTTPS
- ④Разница между протоколами TCP и UDP
- ⑤ Общие коды состояния.
предположение
Я настоятельно рекомендую всем прочитать книгу "Иллюстрированный HTTP". В этой книге немного страниц, но содержание очень существенное. Используется ли она для систематического овладения некоторыми знаниями в области сетей или просто для того, чтобы справиться с интервью, она очень полезна. . Некоторые из приведенных ниже статей предназначены только для справки. Когда я изучал этот курс на втором курсе, мы использовали учебник «Компьютерные сети, седьмое издание» (под редакцией Се Сижэня).
Если вы хотите получать больше моих оригинальных статей и высококачественных учебных ресурсов, подпишитесь на мою общедоступную учетную запись WeChat: "Руководство по прохождению собеседования на Java". Здесь нет рутины, я надеюсь добиться прогресса вместе с вами и учиться друг у друга.