«Вопрос для интервью» Ввод URL-адреса для комплексного рендеринга — сетевое общение

внешний интерфейс опрос
«Вопрос для интервью» Ввод URL-адреса для комплексного рендеринга — сетевое общение

написать впереди

Эта статья является вопросом интервью, а не просто вопросом интервью

ввод отURLЧто случилось с рендерингом страницы? Например, набрав в браузереwww.qq.comКак пост-браузер отрисовывает конечную страницу? Это очень классический вопрос для интервью. Будь то большая компания или маленькая компания, или даже фронтенд или бэкэнд интервью, процент попаданий чрезвычайно высок, потому что точки знаний, задействованные и доступные для раскопок. Есть много мест, и почти каждый шаг в середине можно оптимизировать.

Теперь, когда вы прочитали этот пост, я надеюсь, что вы потратите некоторое время, чтобы терпеливо прочитать его, и вы не будете разочарованы.Эта статья будет понимать URL-адрес от ввода до рендеринга страницы из подробного анализа пятиуровневой сетевой модели и механизм рендеринга страницы браузера. Весь процесс, содержание по-прежнему очень существенно

Я нашел, что это немного длинно, так как я написал это, поэтому я разделил его на три статьи 😄

Первые две статьи призваны помочь вам понять весь процесс, поэтому здесь нет прямого ответа, а нужно разобраться и объяснить некоторые релевантные тривиальные знания.Цель не в том, чтобы ответить на вопрос, а в том, чтобы полностью понять процесс здесь.Вы можете ответьте на этот вопрос с гордостью, дайте себе ответ в своем сердце, а затем посмотрите на последний ответ, который я лично резюмировал через это знание (если ваше резюме более существенное/подробное, пожалуйста, поделитесь им в области комментариев, и мы будем работать вместе Проверяйте на пропуски и заполняйте вакансии), сначала посмотрите, а потом подумайте, а потом подведите итоги и обсудите друг с другом, эффект наилучший

Весь процесс URL от ввода до рендеринга страницы можно разделить на网络通信а также页面渲染С точки зрения двух аспектов, обычные программисты серверной части могут ответить на этот вопрос, сосредоточив внимание на сетевой связи, но также необходимо понимать рендеринг страницы внешнего интерфейса.Короче говоря, чем более подробный ответ, тем выше оценка.

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

Происхождение сетевого уровня

Не знаю знаете ли вы сетевые слои.На самом деле в сети много слоев.Между слоями много протоколов,и есть всякие пакеты данных.Это штука сухая и скучная.Беда,почему их так много слои? Почему не в один слой?

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

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

Позже было обнаружено, что связь между компьютерами может передавать только сигналы 0/1, а другой компьютер не знает, что представляют собой столько 0/1, например010101010101111000111011010Вы знаете, что означает этот ряд? Компьютеры тоже не знают. Очень хлопотно соединять компьютеры разных производителей для связи. Давайте просто определим набор правил. Независимо от марки компьютера, он должен соблюдаться этот набор правил. Этот набор правил - это то, что мы часто говорим网络协议

о, о, это говорит网络分层, не говоря网络协议, продолжаем дальше, а то наша тема выше, наступает проблема, хотя проблема передачи сигналов 0/1 между компьютерами через соединение оговаривает правила связи, но кроме бессмысленных сигналов типа 0/1, в сети есть различные другие проблемы

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

Если всевозможные проблемы записываются в виде набора протоколов для указания правил связи между двумя сторонами, но в случае каких правил возникают проблемы при связи и влияют на другие правила, наиболее распространенным является пакет данных. содержит различные соглашения, да, да

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

Может вы не слишком понимаете, ничего страшного, посмотрим

Пятиуровневая модель TCP/IP

Поскольку он должен быть многослойным, на сколько слоев он должен быть разделен?

Текущий сетевой уровень можно разделить на四层因特网协议栈а также七层因特网协议栈, по сути, сетевое расслоение — это сначала стандартные семь слоев, которые мы называемOSI 七层模型, эталонная модель - Международная организация по стандартизацииISOСтандартная система, разработанная для взаимодействия между компьютерами или системами связи, обычно называемаяOSI参考模型или七层模型

Студенты, которые могут иметь некоторое представление о сети, знают, что существуютTCP/IP 四层模型а такжеTCP/IP 五层模型, как это получилось?

На самом деле так называемаяTCP/IP 四层模型а такжеTCP/IP 五层模型даOSI 七层Оптимизировано, некоторые слои объединены, а суть осталась та же,OSI七层模型Он слишком детализирован и имеет определенное эталонное значение, но более сложен в реализации.TCP/IP模型Он относительно прост и имеет большое практическое значение.

Давайте посмотрим на изображение модели (вторжение и удаление сетевой карты)

image-20200407141628775

TCP/IPКомпьютерная сеть разделена на четыре уровня, которые объединены в общие материалы или учебные пособия.OSI7层模型а такжеTCP/IP4层模型, в соответствии с 5-уровневой моделью компьютерной сети, 5-уровневая модель предназначена только для облегчения внедрения принципов компьютерной сети, но в практических приложениях она по-прежнемуTCP/IP四层模型, это должен понимать каждый

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

PS:Мы все занимаемся разработкой программного обеспечения, будь то интерфейс или сервер, поэтому мы можем сосредоточиться на сетевом уровне.Физический уровень и уровень канала передачи данных связаны с аппаратным обеспечением, поэтому эти два уровня не будут подробно описаны ниже. ., вы можете понять

физический слой

Физический уровень, как следует из названия, соединяет устройства вместе физическими средствами (сетевой кабель, оптическое волокно, беспроводная связь) и передает электрические сигналы 0/1 (также называемые битовыми потоками), точно так же, как физическое соединение между компьютерами, о котором мы упоминали выше.

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

канальный уровень

Как сказано выше,010101010101111000111011010, как и эта строка данных, компьютер не знает, что это значит

Физический уровень нижнего уровня не может указать, что представляют собой сигналы различных комбинаций 0/1, поэтому на канальном уровне определяется набор протоколов для группировки сигналов 0/1 и определения того, что представляют разные группы, чтобы Оба компьютера могут идентифицировать, это соглашение, что мы часто говорим以太网协议

Протокол Ethernet

Протокол Ethernet определяет, что группа электрических сигналов формирует пакет данных, который мы называем пакетом данных., каждый кадр состоит из标头а также数据две части

Размер рамы обычно64 - 1518Большие данные необходимо разделить на несколько кадров

ЗаголовокHead, состоящий из 18 байт, заголовок содержит этоКто его отправил и кому он отправлен, поэтому заголовок в основном представляет собой некоторые описательные данные, такие как отправитель/получатель и другую информацию.

данныеData, 46-1500 байт, это в основном то, что отправитель хочет передать получателю

Когда данные одного компьютера отправляются на другой компьютер через физический уровень и канальный уровень, как идентифицировать другой компьютер и как узнать адрес другого компьютера? уникальный идентификаторMAC地址Появился

MAC-адрес

Каждый компьютер, входящий в сеть, будет иметь интерфейс сетевой карты, и каждая сетевая карта будет иметь уникальный адрес, который называетсяMAC地址, это уникальный идентификатор каждого компьютерного устройства в сети, который представляет собой строку шестнадцатеричных чисел, состоящую из байтов 48. Каждый компьютер идентифицируется, когда он произведен производителем, поэтому мы используемMAC地址идентифицировать друг друга

Посмотрим на другую картинку (вторжение и удаление сетевой карты)

image-20200407141654052

Как показано на рисунке выше, если компьютер A знает MAC-адрес компьютера B, а затем компьютер A хочет передать данные компьютеру B, хотя компьютер A знает MAC-адрес компьютера B, как A передает данные компьютеру B?

Компьютер A подключен не только к компьютеру B, но компьютер A также подключен к компьютерам C и D. Хотя компьютер A знает MAC-адрес компьютера B, он не знает, какой путь B включен, поэтому для решения этой проблемы ,广播Появилась концепция

транслировать

В одной и той же подсети, которую мы часто называем локальной сетью, компьютеры взаимодействуют посредством широковещательной рассылки, то есть отправляют пакеты данных всем компьютерам в той же подсети и другим компьютерам в соответствии с информацией получателя в пакетах данных.MAC地址определить, принимать ли пакеты

С точки зрения непрофессионала, A отправит пакет данных B/C/D одновременно, и этот пакет данных будет содержать данные получателя.MAC地址информации, когда B/C/D получает пакет данных, он извлекает данные из пакета данных.MAC地址со своимMAC地址Напротив, если это то же самое, пакет данных получен, в противном случае пакет данных отбрасывается (потеря пакета).Этот метод называется广播

Типа, ты и твоя девушка отделяетесь в толпе, вы кричите ее имя, и человек, который это слышит, будет соответствовать ему, а он проигнорирует, если вы не в себе, вы будете дураком и проигнорируете вас

Итак, теперь мы знаем знаки и то, как общаться между компьютерами, но остается проблема, как узнать друг другаMAC地址Шерстяная ткань? Это выявляетARP协议,пройти черезARP协议узнать другогоMAC地址, этот протокол является протоколом сетевого уровня, поэтому давайте пока отложим его и посмотрим вниз.

Сетевой уровень

Глядя на функции физического уровня и уровня канала передачи данных, вы можете почувствовать, что нормальная связь может быть завершена, так что же делает сетевой уровень?

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

Тогда снова возникает вопрос, как отличитьMac地址Они в одной подсети? Если это та же подсеть, мы отправим данные другой стороне в виде широковещательной рассылки, если это не та же подсеть, мы отправим данные на шлюз и позволим шлюзу переслать их.

Как определить, находятся ли два компьютера в одной подсети? Этим занимается сетевой уровень. Для решения этой проблемы существуетIP协议Концепция чего-либо

IP протокол

IP协议Определенный адрес - это то, что мы часто говоримIP地址,IP协议Есть две версии,ipv4 / ipv6, в настоящее время наиболее часто используется ipv4, этот адрес состоит из 32-битных двоичных чисел, мы обычно делим его на 4-сегментное десятичное представление, диапазон адресов находится в0.0.0.0 ~ 255.255.255.255, это должно быть общим для всех нас

Каждый компьютер, который хочет подключиться к сети, будет иметь одинIP地址,этоIP地址Разделенный на две части, первая часть представляет сеть, а вторая часть представляет хост, но второстепенные цифры, занимаемые частью сети и частью хоста, не фиксированы.

Если сетевые части двух компьютеров абсолютно одинаковы, мы говорим, что два компьютера принадлежат к одной и той же подсети (локальной сети), например192.168.17.1а также192.168.17.2, если дваIP地址составляет 24 бита для сетевой части и 8 бит для хостовой части, то обе их сетевые части192.168.17, поэтому мы говорим, что два компьютера находятся в одной подсети

Проблема приходит снова, дайте нам дваIP地址, призрак знает сколько мест в сетевой части и сколько в хостовой части?

Это подводит нас к другому ключевому слову子网掩码

маска подсети

子网掩码а такжеIP地址Это также 32-битное двоичное число, но его сетевая часть указывается как все 1, а хостовая часть указывается как все 0, то есть, если сетевая часть двух вышеуказанных IP-адресов составляет 24 бита, и часть хоста 8 бит, затем они Маска подсети

11111111.11111111.11111111.00000000, то есть,255.255.255.0

По маске подсети как судитьIP地址Они в одной подсети?

Очевидно, что знание маски подсети эквивалентно знанию количества битов в сетевой части и количества битов в хостовой части, нам нужно только положитьIP地址Выполните операцию ( и ) с его маской подсети, а затем сравните соответствующие результаты. Если результаты сравнения одинаковы, это представляет одну и ту же подсеть, в противном случае это не одна и та же подсеть.

То есть есть два компьютера.IP地址а также子网掩码, мы можем судить, находятся ли они в одной подсети

Предполагая, что они находятся в одной подсети, когда компьютер A хочет отправить данные компьютеру B, мы передаемARP协议получить компьютерMAC地址

ARP-протокол

ARP协议Это также в форме широковещательной рассылки, отправляя пакет данных на каждый компьютер в той же подсети, этот пакет данных будет содержатьIP地址, после того как другая сторона получит эти данные, она достанетIP地址Противопоставленный себе, тот же поставит своеMAC地址Ответить другой стороне, иначе пакет будет отброшен, так что компьютер А знаетMAC地址охватывать

Вы можете спросить, вы знаетеMAC地址После этого отправляемые данные отправляются в виде широковещательной рассылки, запрашивая у другой стороныMAC地址Он также отправляется в виде широковещательной рассылки, поэтому как другие компьютеры узнают, хотите ли вы передать данные или запроситьMAC地址Шерстяная ткань?

на самом деле спрашиваяMAC地址в пакете данных другой стороныMAC地址Здесь заполняется спец.MAC地址, другие компьютеры видят это специальноеMAC地址После этого вы знаете, что трансляция просит

Если IP-адреса двух компьютеров не находятся в одной подсети, мы отправим пакет на шлюз в это время, а затем позволим шлюзу перенаправить его для нас.

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

пройти через物理层 / 数据链路层так же как网络层Мы успешно передали данные с компьютера A на компьютер B, но на компьютере B есть различные приложения. Как компьютер узнает, в какое приложение отправляются данные?

В настоящее время,端口Он находится в поле. Когда компьютер A передает компьютеру B, он должен указать порт для конкретного приложения, которое будет получать и обрабатывать. Как программисты, мы больше знакомы с портами. Диапазон портов:0~65535, из которых первые 1023 порта заняты системой

Другими словами, функция транспортного уровня заключается в установлении связи между портами, а функция сетевого уровня — в установлении связи между узлами.

имеютIPа также端口, мы можем точно общаться. Некоторые из введенных нами IP-адресов не указывают номер порта. На самом деле, некоторые протоколы передачи устанавливают некоторые порты по умолчанию, такие какHTTPПо умолчанию 80,HTTPSПо умолчанию 443, эта информация о порте также будет включена в пакет.

Два наиболее распространенных протокола на транспортном уровне:TCP协议а такжеUDP协议

UDP-протокол

UDP协议Полное название — User Datagram Protocol, протокол без установления соединения, который используется для обработки пакетов данных, таких как протокол TCP.

разделение пакетов UDP标头(8 байт) и数据(маркирующий заголовок не превышает 65535 байт), а данные UDP помещаются в IP-пакет.数据, заголовок в основном включает порт отправки и порт получения

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

Возможности протокола UDP

  • без соединения

    • UDP может начать отправку данных, когда он хочет отправить данные, подключение не требуется, это просто портер пакетов данных, и он не будет выполнять какие-либо операции разделения и объединения пакетов данных.
    • На стороне отправителя прикладной уровень передает данные протоколу UDP транспортного уровня. UDP только добавит заголовок UDP к данным для идентификации протокола UDP, а затем передаст его на сетевой уровень.
    • На принимающей стороне сетевой уровень передает данные на транспортный уровень, а UDP только удаляет заголовок IP и передает его на прикладной уровень без какой-либо операции сплайсинга.
  • Есть одноадресные, многоадресные, широковещательные

    • UDP не только поддерживает режим передачи «один к одному», но также поддерживает режимы «один ко многим», «многие ко многим» и «многие к одному», то есть UDP обеспечивает функции одноадресной, многоадресной и широковещательной передачи.
  • ориентированный на сообщения

    • UDP отправителя отправляет сообщение приложению и доставляет его на уровень IP после добавления заголовка.
    • UDP не объединяет и не разделяет пакеты, доставленные прикладным уровнем, а сохраняет границы этих пакетов
    • Поэтому приложение должно выбрать подходящий размер сообщения
  • ненадежный

    • Ненадежность в первую очередь проявляется в отсутствии соединения.Связь не требует установления соединения, и вы можете отправить его, когда захотите.Эта ситуация определенно ненадежна.
    • Полученные данные будут переданы, и данные не будут резервироваться.При отправке данных не будет заботиться о том, правильно ли другая сторона получила данные.
    • Сетевое окружение бывает хорошим и плохим, но UDP не контролирует перегрузку и всегда будет отправлять данные с постоянной скоростью.Даже если сетевые условия плохие, скорость отправки не будет корректироваться. в случае плохих условий в сети Это может привести к потере пакетов, но преимущества также очевидны.В некоторых сценариях с высокими требованиями к реальному времени (например, телеконференциях) необходимо использовать UDP вместо TCP
  • Заголовок невелик, а передача пакетов данных эффективна.

    • Заголовок UDP содержит следующие данные
      • Два шестнадцати номера порта, соответственно, для выдачи и получения портов и
      • Длина всей дейтаграммы
      • Контрольная сумма всей дейтаграммы (необязательное поле IPv4), используемая для обнаружения ошибок в информации заголовка и данных.
    • Таким образом, заголовок UDP невелик, всего 8 байт, что намного меньше, чем по крайней мере 20 байт TCP, и это очень эффективно при передаче пакетов данных.

TCP-протокол

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

  • Например, когда вы хотите просмотреть веб-страницу или проверить электронную почту, вы хотите просмотреть веб-страницу целиком и последовательно без потери содержимого.

  • Другой пример: когда вы загружаете файл, вы хотите получить полный файл, а не только его часть.

Если данные отсутствуют или не в порядке, это не тот результат, который вы хотите, поэтому он используетсяTCP

TCP协议Полное название — Transmission Control Protocol, который является ориентированным на соединение, надежным протоколом связи транспортного уровня на основе потока байтов.TCPОриентированный на подключение, надежный протокол потоковой передачи, что такое поток? Поток — это непрерывная структура данных, думайте о нем как о потоке воды в канализацию.

Трехстороннее рукопожатие TCP устанавливает соединение, а четырехсторонняя волна для отключения — это отдельная тема, далее мы кратко поговорим о ней.

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

Трёхстороннее рукопожатие для установления связи, для удобства понимания имитировать силовой самолёт

  • Сяо Ли (клиент): Здравствуйте, вы интервьюер xx?

  • Интервьюер (сервер): Хм, да, это вы, Сяо Ли, отправили вчера свое резюме?

  • Сяо Ли (клиент): Хм, да, я

Затем Сяо Ли и интервьюер начали радостно болтать о горах.

В соответствии с приведенным выше содержанием, давайте посмотрим на следующую картинку (вторжение и удаление сетевой карты)

tcpip3

В соответствии с обычным процессом трехстороннее рукопожатие для установления соединения выглядит следующим образом.

  • первое рукопожатиеКлиент отправляет серверу сегмент запроса на соединение, и этот сегмент содержит свой собственный начальный порядковый номер передачи данных.После отправки запроса клиент входит вSYN-SENTусловие
  • второе рукопожатиеПосле того, как сервер получит сегмент запроса на соединение, если он согласен на соединение, он отправит ответ, и ответ также будет содержать свой собственный начальный порядковый номер передачи данных.SYN-RECEIVEDусловие
  • третье рукопожатиеКогда клиент получает ответ об одобрении соединения, он также отправляет на сервер подтверждающее сообщение.После того, как клиент отправит этот сегмент, он войдет вESTABLISHEDсостояние, сервер также входит после получения этого ответаESTABLISHEDСостояние, на этот раз соединение установлено

Вам может быть интересно, почему TCP требует трех рукопожатий вместо двух, чтобы установить соединение?

На самом деле это делается для предотвращения получения сервером недопустимого сегмента запроса на подключение, что приводит к ошибке

ПТС махнул четыре раза

Помашите четыре раза, чтобы отключить связь, затем имитируйте электрическую поверхность 😄

  • Интервьюер (активная сторона): Ну, я понимаю вашу ситуацию здесь, ждите уведомления (хочу положить трубку)

  • Сяо Ли (пассивная сторона): Хм, хорошо (я хочу повесить трубку? Я еще недостаточно наговорился)

  • Сяо Ли (пассивная сторона): Надеюсь, у меня будет возможность поработать с вами (до свидания)

  • Интервьюер (активная партия): 嘀 ... 嘀 ... 嘀 ... 嘀

Давайте посмотрим на серьезную карту процесса (вторжение и удаление сетевой карты)

tcpip4

TCP является двунаправленным, поэтому при отключении оба конца должны отправлять FIN и ACK.

  • первая волнаЕсли клиент А считает, что передача данных завершена, ему необходимо отправить запрос на разъединение на сервер Б.

  • вторая волнаПосле того, как B получит запрос на освобождение соединения, он сообщит прикладному уровню о необходимости освободить TCP-соединение, а затем отправитACKпакет и введитеCLOSE_WAITСтатус, в настоящее время он указывает, что соединение от A к B было разорвано и больше не получает данные от A, но поскольку TCP-соединение является двунаправленным, B все еще может отправлять данные в A

  • Третья волнаB продолжит отправку, если в это время еще есть незавершенные данные, и отправит запрос на освобождение соединения после завершения, а затем B войдетLAST-ACKусловие

  • четвертая волнаПосле того, как A получает запрос на освобождение, он отправляет ответ с подтверждением B, и A входит в TIME-WAITСостояние, состояние будет продолжаться 2MSL (максимальное время жизни сегмента, относится к сегменту времени, чтобы выжить в сети, тайм-аут будет отменен) время, если период времени не требует повторной передачи B, то он входитCLOSEDсостоянии, когда B получает ответ подтверждения, он также входитCLOSEDусловие

Почему клиент в конце ждет 2MSL?

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

Ограничения параллелизма для TCP/IP

На самом деле браузеры имеют ограничения на одновременные TCP-подключения под одним и тем же доменным именем (от 2 до 10).

И вHTTP1.0Часто загрузка ресурса должна соответствовать запросу TCP/IP.

Особенности протокола TCP

  • ориентированный на соединение

    • Ориентированное на соединение означает, что соединение должно быть установлено на обоих концах перед отправкой данных.三次握手, который может установить надежное соединение и заложить основу для надежной передачи данных
  • Поддерживает только одноадресную передачу

    • Каждое соединение передачи TCP может иметь только две конечные точки, только передачу данных «точка-точка» и не поддерживает методы многоадресной и широковещательной передачи.
  • байтовый поток

    • В отличие от UDP, TCP не передает сообщения независимо одно за другим, а передает их потоком байтов без сохранения границ сообщений.
  • надежная передача

    • Для надежной передачи оценка потери пакетов и кода ошибки зависит от номера сегмента TCP и номера подтверждения.Чтобы обеспечить надежность передачи пакетов, TCP присваивает каждому пакету порядковый номер, а порядковый номер также гарантирует, что пакеты, отправленные на принимающий конечный объект прием по порядку
    • Затем объект-получатель отправляет обратно соответствующее подтверждение (ACK) для успешно полученных байтов.
  • Обеспечить контроль заторов

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

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

Разница между протоколом UDP и протоколом TCP

К настоящему времени каждый должен иметь некоторое представление об UDP и TCP, мы непосредственно сравним их функции, а затем подведем итоги.

В сравнении UDP TCP
подключаться ли Нет соединения ориентированный на соединение
Это надежно Ненадежная передача, не используются управление потоком и контроль перегрузки Надежная передача с использованием управления потоком и контролем перегрузки
количество подключений Поддерживает связь «один к одному», «один ко многим», «многие к одному» и «многие ко многим». Общение только один на один
способ передачи ориентированный на сообщения байтовый поток
накладные расходы заголовка Заголовок небольшой, всего 8 байт. Заголовок минимум 20 байт, максимум 60 байт
Применимая сцена Идеально подходит для приложений реального времени (IP-телефония, видеоконференции, прямые трансляции и т. д.) Идеально подходит для приложений, требующих надежной передачи, таких как передача файлов
  • TCP предоставляет надежные услуги, ориентированные на установление соединения, для верхних уровней, а UDP предоставляет ненадежные службы без установления соединения для верхних уровней.
  • Хотя UDP не так точен, как TCP, он также может иметь значение во многих местах с высокими требованиями к реальному времени.
  • Для высоких требований к точности данных скорость может быть относительно низкой, вы можете выбрать TCP

Здесь мы просто поговорим о TCP, а затем рассмотрим прикладной уровень.

прикладной уровень

Прикладной уровень - это тот, который больше всего контактирует с пользователем.Верхние уровни получают данные, полученные транспортным уровнем.Протокол TCP/UDP может передавать пакеты данных различных программ, таких как почтовые ящики/веб-страницы/FTP и т. д., поэтому требуются разные протоколы.Чтобы указать формат данных, он может отображаться и интерпретироваться только после его получения.Прикладной уровень состоит из этих протоколов, а его пакеты данных помещаются в пакет UDP/TCP.数据середина

Протокол HTTP, протокол FTP для передачи файлов, SMTP для отправки электронной почты, протокол DNS для разрешения имени домена, протокол Telnet для удаленного входа в систему и т. д., которые часто используются при работе в Интернете, относятся к прикладному уровню.

Существует также Socket, уровень абстракции между прикладным и транспортным уровнями, который инкапсулирует сложные операции уровня TCP/IP в несколько простых интерфейсов для вызова прикладным уровнем, чтобы реализовать взаимодействие процессов в сеть.

Выше мы в основном поняли некоторые коммуникационные основы компьютеров.Можно сказать, что мы знали все, от IP до конца связи до сих пор, но введенное нами доменное имя не является IP, так как же это стать IP-коммуникацией? Это будет подробноDNSохватывать

что такое DNS

Domain Name SystemстенографияDNS, что означает систему доменных имен, которая представляет собой систему именования компьютеров и сетевых служб, организованную в иерархию доменов дляTCP/IPСеть как распределенная база данных, которая сопоставляет доменные имена и IP-адреса друг с другом, предоставляемые ею услуги используются для сопоставления主机名а также域名Перевести вIP地址работай

Проще говоря,IP地址Как и в случае с номером дома, когда мы вводим доменное имя для доступа к веб-сайту, сервер данных не знает вашего доменного имени, он знает только IP-адрес, и ваше доменное имя будет проходить через него.DNS服务器Разберите его в значение IP, найдите данные вашего веб-сайта с сервера данных по этому номеру дома (значение IP) и верните их в браузер для вас.

Зачем нужен ДНС

Как мы сказали выше, большая часть сетевого взаимодействия основана на TCP/IP, а TCP/IP основано на IP-адресе, поэтому, когда компьютер взаимодействует в сети, он может идентифицировать только такие252.94.131.12такие как IP-адреса, но не доменное имя

Мы не можем запомнить сайты с более чем 10 IP-адресами (если у вас хорошая память, то я послушно заткнусь 😄 ), вообще когда мы заходим на сайт, мы обычно вводим доменное имя в адресной строке браузера, а затем мы можем увидеть нужную страницу, это потому, что естьDNS服务器Компьютер автоматически наш домен翻译стать соответствующим IP-адресом, а затем передатьIP地址Вернуться на соответствующую веб-страницу

Структура доменного имени

Во-первых, давайте кратко представим структуру доменного имени. Некоторые студенты, изучающие интерфейс, могут не знать о ней многого.InternetМетод, используемый для разрешения приведенного выше IP-адреса, полное доменное имя состоит из 2 или более частей, с английскими точками между каждой частью..разделять

братьwww.qq.com.Ибо, подождите, это еще один пункт, конечно, не больше, этот последний.Представляет имя корневого домена. По умолчанию последней цифрой всех URL является., но для удобства пользователей его обычно опускают.DNS解析будут автоматически добавлены, когдаcom домен верхнего уровня,qqДоменное имя второго уровня,wwwявляется доменным именем третьего уровня, еслиwwwРаньше нет, потом четвертый уровень и так далее

Тогда наш порядок разбора такой

.  -> .com -> qq.com -> www.qq.com

Процесс получения DNS

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

  • DNS-клиент работает на пользовательском хосте, то есть на нашем ПК или клиенте мобильного телефона работает DNS-клиент.

  • Браузер извлекает поле доменного имени из полученного URL-адреса, который, например, является именем хоста посещения.http://www.qq.com

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

  • Клиент DNS в конечном итоге получит ответное сообщение, содержащее IP-адрес, соответствующий имени хоста.

  • Как только браузер получает IP-адрес от DNS, он может инициировать TCP-соединение с HTTP-сервером, расположенным по этому IP-адресу.

Процесс разрешения DNS

если бы мы посетилиwww.qq.com, то что испытывать, сначала посмотреть на картинку (сетевая карта вторжения и удаления)

image-20200407141726887

Просто взгляните сначала на эту картинку, неважно, если вы ее не понимаете, просто посмотрите на нее с текстом

Фигура разделена на три части

  • DNS-клиент — это DNS-клиент, работающий на нашем хосте, как на ПК, так и на мобильном клиенте.
  • Клиент к серверу, этот сервер можно просто понимать как маршрутизатор нашей текущей сетевой среды.
  • сервер к серверу, последний сервер относится к互联网服务提供商服务器/根域名服务器/顶级域名服务器/主域名服务器

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

  • кеш браузера

    • Когда пользователь заходит через браузерwww.qq.com, браузер сначала просматривает собственный кэш, чтобы увидеть, существует ли IP-адрес, соответствующий доменному имени.
    • Если доменное имя посещалось ранее и оно существует без очистки кеша, если оно не существует, переходите к следующему шагу
  • системный кеш

    • Когда в кеше браузера нет IP-адреса, соответствующего доменному имени, он автоматически проверяет компьютерную систему пользователя.HostsИмеет ли файловый кеш DNS IP-адрес, соответствующий доменному имени
  • кеш маршрутизатора

    • Если в браузере и системном кеше нет IP-адреса, соответствующего доменному имени, войдите в кеш маршрутизатора для проверки.Вышеуказанные три шага — это все кеши DNS на стороне клиента.
  • Кэш DNS поставщика услуг Интернета (ISP)

    • Когда IP-адрес, соответствующий доменному имени, не может быть найден на стороне обслуживания клиентов, он войдет в кеш DNS поставщика услуг Интернета (ISP) для запроса.
    • Например, если вы используете телекоммуникационную сеть, для поиска вы войдете в DNS-кэш-сервер телекоммуникаций.
  • корневой сервер имен

    • Если ничего из вышеперечисленного не выполнено, введите корневой сервер для запроса
    • После того, как корневой сервер имен получит запрос, он проверит запись файла зоны и, если ее нет, доменное имя верхнего уровня в пределах его юрисдикции (.com) IP-адрес сервера сообщает локальному DNS-серверу
  • сервер доменных имен верхнего уровня

    • После получения запроса сервер доменных имен верхнего уровня проверяет запись файла зоны, а если нет, то основное доменное имя в пределах своей юрисдикции (qq.com) IP-адрес сервера сообщает локальному DNS-серверу
  • первичный сервер имен

    • После получения запроса первичный сервер доменных имен запрашивает собственный кеш, а если нет, то попадает на сервер доменных имен следующего уровня (www.qq.com) для поиска и повторяйте этот шаг, пока не будет найдена правильная запись
  • сохранить результаты в кэш

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

DNS-клиенты могут отвечать на запросы на месте, используя кешированную информацию, полученную из предыдущих запросов, DNS-серверы могут отвечать на запросы, используя свой собственный кэш информации о записи ресурсов, или они могут запрашивать или связываться с другими DNS-серверами от имени запрашивающего клиента для полного разрешения запроса. имя, а затем вернуть ответ клиенту, процесс, называемый递归查询

Клиент сам пытается связаться с другими DNS-серверами для разрешения имени. Если клиент делает это, он использует отдельные и дополнительные запросы на основе ответа сервера.Этот процесс называется итерацией, то есть интерактивный запрос между DNS-серверами迭代查询

Это весь процесс DNS. Это первый шаг этого вопроса интервью. Интервьюер также может спросить, как оптимизировать разрешение DNS. Не волнуйтесь, не торопитесь.

Зачем оптимизировать разрешение DNS

Разрешение DNS — это первая ссылка во всем процессе открытия веб-сайта пользователем.Когда пользователь вводит доменное имя и нажимает Enter, система вызываетDNS客户端, найдите настроенный пользователем или автоматически назначенныйDNS IP, а затем начинается весь процесс разбора,DNS服务器Полное разрешение для этого доменного имени数字IP服务器, как правило, возврат IP-адреса, соответствующего данному доменному имени, будет стоить20~120毫秒время, и во время этого процесса браузер ничего не будет делать, пока поиск DNS не будет завершен

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

Много небольших веб-сайтов, время разрешения DNS близко0.5s, некоторые даже требуют1sРезультат может быть проанализирован только примерно8sоткажется от посещений, а для сайтов электронной коммерции,4sЭто предел допуска пользователя. Как правило, для небольших веб-сайтов, которые были оптимизированы, время разрешения DNS можно контролировать в пределах200msвокруг, в то время как пропускная способность100MЧто касается веб-сайтов, после оптимизации время разрешения DNS можно контролировать в течение50~100ms

Итак, теперь вы знаете, зачем вам нужно оптимизировать разрешение DNS и как его оптимизировать? Давайте посмотрим

Оптимизация разрешения DNS — эффективно используйте TTL кеша

Мы также читали на веб-сайте.В DNS есть несколько уровней кеша.Каждый раз требуется время, чтобы найти такое количество уровней.Прохождение этих процессов ниже корневого сервера доменных имен, естественно, сэкономит некоторое время.

Когда мы покупаем доменное имя для разрешения доменного имени,TTLЗначение (как показано в разрешении доменного имени облачного домена Alibaba ниже)

image-20200407201056309

Это относится к жизненному циклу разрешения доменного имени (в секундах). Проще говоря, это время кеша, записанное на DNS-сервере, когда DNS-сервер разрешает доменное имя. Размер этого значения также очень известен. в случае фаста необходимо обеспечить возможность переключения сервера как можно быстрее при возникновении проблемы с сервером

  • Каждый должен знать, есть ли у него несколько серверов или резервные копии.Если резервной копии нет, то сервер может бороться только тогда, когда сервер выходит из строя.Поэтому,TTLЧем дольше, тем лучше для вас, потому чтоTTLКороткая цель - вовремя переключиться, когда есть проблема с сервером.Это в принципе неприменимо для сайтов без резервных копий, поэтому в это время вашTTLЧем длиннее настройка, тем лучше.Конечно, она не должна быть слишком длинной.Общая настройкаTTL 3600Только что
  • Если есть резервные копии или несколько серверов, бывает так, что сервер нужно вовремя переключать из-за простоя сервера.TTLЧем короче время, тем более своевременна передача, ноTTLЧем короче время, это значит, что DNS оператора часто не может кэшироваться, для обычных пользователей установите его вTTL 600То есть, если вам нужно вовремя переключаться и требуются особо требовательные сайты, установитеTTL 120просто хорошо

Оптимизация разрешения DNS — балансировка нагрузки

Настройте несколько IP-адресов для одного и того же имени узла на DNS-сервере. При ответе на DNS-запрос DNS-сервер будет возвращать разные результаты разрешения в последовательности с IP-адресом, записанным узлом в файле DNS для каждого запроса, чтобы направлять доступ клиента. , Перейдите на разные машины, чтобы разные клиенты могли получить доступ к разным серверам, чтобы достичь цели балансировки нагрузки.Вы можете начать в зависимости от загрузки каждой машины или расстояния между машиной и географическим положением пользователя.

Точно так же, как мы используем поставщиков CDN для разрешения доменных имен, он также использует технологию перенаправления DNS.DNS-сервер будет возвращать пользователю IP-адрес, ближайший к пользователю.Сервер узла CDN отвечает за ответ на запрос пользователя и предоставление требуемый контент, DNS-сервер производителя CDN имеет больше пользователей и к нему обращаются чаще.Запись A DNS-сервера в основном кэшируется DNS-операторами в разных местах, поэтому эффект обслуживания также является лучшим.

HTTP & HTTPS

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

понимание

Это конец главы о сетевых коммуникациях.Хотя в этой статье написаны десятки тысяч слов, можно только сказать, что содержание интеграции примерное.Ничего страшного в том, чтобы шлифовать пистолет или проверять утечки и заполнять пробелы. Не думайте, что вы понимаете сетевое взаимодействие, читая эту статью или определенный пост.Вы можете выбрать любой из этих TCP/IP/DNS/HTTP/HTTPS-контент, и вы можете долго говорить о нем.

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

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

В следующей статье «Вопрос для интервью» введите URL-адрес, чтобы отобразить всесторонний обзор — отрисовка страницы, продолжение следует. .

Да, и еще, вы можете добавить друга и присоединиться к группе, чтобы общаться с вами.Также приглашаем подписаться на публичный аккаунт [Irregular Front End] 😄