сетевой протокол
сетевой протокол

что такое http

протокол передачи гипертекста

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

HTTP обычно работает поверх стека протоколов TCP/IP, полагаясь на протокол IP для адресации и маршрутизации, протокол TCP для надежной передачи данных, протокол DNS для поиска доменного имени и протокол SSL/TLS для безопасной связи. Кроме того, существуют некоторые протоколы, использующие HTTP, например WebSocket, HTTPDNS и т. д. Эти протоколы переплетаются, образуя сеть протоколов, в центре которой находится HTTP.

Схема многослойной модели

Язык кода:txt
копировать
                                                            **TCP/ IP Модель**     

Ядро — это IP уровня 2 и TCP уровня 3, HTTP находится на уровне 4.

«Два без разницы»: все, что обрабатывается операционной системой, находится на уровне 4 или ниже; в противном случае все, что должно обрабатываться приложением (то есть вы сами пишете код), — это уровень 7.

Первым шагом в сетевом запросе DNS является разрешение доменного имени, которое находится на уровне приложения, и CDN также находится на уровне приложения.

Модель OSI

Переписка

  • Уровень 1: Физический уровень, нет соответствия в TCP/IP;
  • Уровень 2: уровень канала передачи данных, соответствующий канальному уровню TCP/IP;
  • Уровень 3: сетевой уровень, соответствующий интернет-уровне TCP/IP;
  • Уровень 4: Транспортный уровень, соответствующий транспортному уровню TCP/IP;
  • Уровни 5, 6 и 7: единообразно сопоставляются с прикладным уровнем TCP/IP.

Самая большая разница между двумя многоуровневыми моделями — это уровень сеанса и уровень представления. Первый-четвертый этажи в основном унифицированы. Что касается их самых высоких слоев, хотя один из них называется седьмым слоем, а другой - четвертым или пятым слоем, хотя на поверхности они не являются последовательными, на самом деле их можно заменить «прикладным слоем». Это позволяет избежать возможных недоразумений и более точно отражает конкретную цель этого слоя.

Как работает стек протоколов TCP/IP

  • HTTP Содержимое, которое будет передаваться в протоколе, например HTML, затем HTTP Соглашение добавляет к нему одно физическое лицо HTTP Специальные дополнительные данные.
  • существовать TCP Слой переупаковывает данные и добавляет TCP голова.
  • существовать IP Слой, MAC пара слоев TCP Пакет данных добавлен IP Заголовок, MAC голова.
  • существовать IP Слой, MAC Распаковывается после передачи слоя.

три рукопожатия

TCP-соединение будет установлено после отправки трех сообщений между приложением и сервером. SYN в сообщении указывает на запрос на установление соединения, а ACK указывает на подтверждение. Приложение сначала отправляет сообщение с SYN=1 и Seq=X, указывая на запрос на установление соединения. X — случайное число. После того, как сервер получает это сообщение, он отвечает сообщением с SYN=1, ACK=X+; 1 и Seq=Y, что указывает на согласие установить соединение; после того, как приложение получает это сообщение, оно проверяет, что значение ACK равно значению Seq, отправленному самим + 1, подтверждает установление соединения и отправляет ACK=Y. +1 сообщение на сервер; сервер получает это сообщение. Значение ACK — это значение Seq, отправленное само по себе + 1, подтверждающее установление соединения. На этом этапе приложение и сервер установили TCP-соединение, и данные можно передавать.

LB (балансировка нагрузки)

http1.1

  • Добавлены новые методы, такие как PUT и DELETE;
  • добавлен контроль управления кэшем;
  • Уточнено управление соединениями, чтобы разрешить постоянные соединения;
  • Позволяет разбивать данные ответа на фрагменты, что облегчает передачу больших файлов;
  • Укажите заголовок Host, чтобы сделать возможным Интернет-хостинг.

http 2.0

  • Двоичные протоколы больше не являются обычным текстом;
  • Может инициировать несколько индивидуальных запросов, устарело 1.1 Труба внутри;
  • Используйте специальный алгоритм для сжатия заголовка, чтобы уменьшить объем передачи данных;
  • Разрешить серверу активно передавать данные клиенту;
  • Повышенная безопасность, «де-факто» требующая шифрованной связи.

CDN

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

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

IP

Основная цель — решение проблем адресации и маршрутизации.

TCP

«Протокол управления передачей», расположенный поверх протокола IP, обеспечивает надежную связь в виде потоков байтов на основе протокола IP и является основой реализации протокола HTTP.

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

Используйте команду «keepalive_timeout», чтобы установить полный Тайм-аут соединения: если в течение определенного периода времени по соединению не отправляются и не принимаются данные, соединение будет активно отключено, чтобы неактивные соединения занимали системные ресурсы. Используйте команду «keepalive_requests», чтобы установить полный Максимальное количество запросов, которые можно отправить по соединению. Например, установите его в 1000, тогда когда Nginx обработано по этому соединению 1000 После запроса соединение также будет активно разрываться.

Когда разработчики разрабатывают, если они четко знают, что этот доступ завершен, им следует добавить соединение: close (клиент) в заголовок запроса.

url

композиция

  • Имя протокола: То есть для доступа к ресурсу должен использоваться протокол.,существоватьвот“http”;
  • Имя хоста: Обозначение хоста в Интернете, которое может быть доменным именем или IP адрес,существоватьвот“nginx.org”;
  • Путь: то есть местоположение ресурса, существующего на хосте.,Используйте «/» для разделения нескольких уровней каталогов.,существоватьвот“/en/download.html”。

актерское мастерство

  • анонимныйактерское мастерство: Полностью «скрыто» актёрским мастерствоиз машины, внешний мир видит просто актерское мастерство сервера;
  • прозрачныйактерское мастерство: Как следует из названия, оно «прозрачно и открыто» во время процесса передачи, и внешний мир знает актерское мастерство. мастерство,Также известен как клиент;
  • Форвардное актерское мастерство: приближение к клиенту, отправка запроса на сервер от имени клиента;
  • обеспечить регрессактерское мастерство: Рядом с сервером, отвечая на клиентский запрос от имени сервера;

DNS

Базовая система DNS представляет собой трехуровневую древовидную распределенную службу, которая в основном соответствует структуре доменного имени:

  • Корневой DNS-сервер: управляет серверами доменных имен верхнего уровня и возвращает IP-адреса серверов доменных имен верхнего уровня, таких как «com», «net» и «cn»;
  • DNS-сервер верхнего уровня: управляет авторитетными серверами доменных имен под соответствующими доменными именами. Например, сервер доменных имен верхнего уровня com может возвращать IP-адрес сервера доменных имен apple.com;
  • Авторитетный DNS-сервер: управляет IP-адресом хоста под собственным доменным именем. Например, авторитетный сервер доменных имен apple.com может возвращать IP-адрес www.apple.com.

Операционная система кэширует разрешение DNS.

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

кеш браузера->Операционная системаdnscache ->hostsдокумент->Неавторитетный сервер имен->Корневой сервер имен->сервер доменных имен верхнего уровня->Сервер доменных имен второго уровня->Авторитетный сервер доменных имен。

Эти удаленные запросы основаны на протоколе UDP, обычно с использованием порта 53.

код состояния

  • 1××: сообщение с подсказкой, указывающее, что текущая обработка протокола находится в промежуточном состоянии и требуются последующие операции;
  • 2××:успех,Сообщение было получено и обработано корректно;
    • 200 успехов
    • 204 После заголовка ответа ничего нет body данные.
  • 3××:Перенаправление,Изменение местоположения ресурса,нуждатьсяклиент Повторно отправить запрос;
    • 301 Ваш сайт обновлен до HTTPS, оригинал HTTP Если вы больше не планируете его использовать, это «постоянно», поэтому вам нужно его настроить. 301 Прыгай и ставь все HTTP Трафик переключен на HTTPS。
    • 302 Фон веб-сайта требует обслуживания системы, и услуга временно недоступна. Это «временно» и может быть настроено как. 302 Перейти для временного переключения трафика на статическую страницу уведомлений. Браузер видит этого человека. 302 Я знаю, что это всего лишь временная ситуация,Не выполняет оптимизацию кеширования,На следующий день я посещу первоначальный изадрес.
    • 304 он используется для If-Modified-Since Запрос с другими условиями,Указывает, что ресурс не был изменен,Используется для управления кэшем. Он не имеет обычного значения прыжка.,Но это можно понимать как «Перенаправление поступило в кэш из файла» (т.е. «Перенаправление кэша»).
  • 4××:клиентошибка,Сообщение запроса неверно,Сервер не может справиться;
    • “400 Bad «Запрос» — это общий код ошибки, который указывает на наличие ошибки в сообщении запроса, но является ли это ошибкой формата данных, отсутствующим заголовком запроса или URI Прямо не сказано, что это очень долго.
    • «403 Forbidden» на самом деле не является ошибкой запроса.,Вместо этого это означает, что сервер запрещает доступ к ресурсу. Причины могут быть разные,Например, информация конфиденциальна, запрещена законом и т. д.
    • 404 Ошибка пути
    • 405 Method Not Разрешено: определенным методам не разрешено управлять ресурсами, например, запрещено POST может только GET;
    • 406 Not Acceptable: ресурс не может соответствовать условиям запроса, например, запрашивается китайский, а только английский язык;
    • 408 Тайм-аут запроса: время ожидания запроса истекло, и сервер ждал слишком долго;
    • 409 Конфликт: конфликт нескольких запросов, который можно понимать как состояние гонки во время многопоточного параллелизма;
    • 413 Request Entity Too Большой: в сообщении запроса body слишком большой;
    • 414 Request-URI Too Длинный: в строке запроса URI слишком большой;
    • 429 Too Many Requests: клиент отправил слишком много запросов, обычно из-за политики ограничения подключений сервера;
    • 431 Request Header Fields Too Большой: определенное поле в заголовке запроса или в целом слишком большой;
  • 5××: ошибка сервера,серверсуществовать При обработке запросавнутреннийслучилосьошибка。
    • 500 Внутренняя ошибка сервера
    • “502 Bad «Шлюз» обычно представляет собой сервер, выполняющий роль шлюза или актерского мастерствовернуться, когдаизошибкакод,Указывает, что сам сервер работает нормально,Произошла ошибка при доступе к внутреннему серверу.
    • 503 Это «временный» статус. Вполне вероятно, что через несколько секунд сервер не будет так занят и сможет продолжать предоставлять услуги, поэтому. 503 Обычно в ответном сообщении имеется поле «Повторить-после», указывающее, через какое время клиент может попытаться отправить запрос еще раз.

короткое соединение

Процесс соединения между клиентом и сервером очень короткий.,Не будет оставаться на связи с сервером в течение длительного времени,Так это называется "короткое" соединение”(short-lived связи). рано HTTP Этот протокол также называют протоколом «без установления соединения».

короткое Недостатки соединения весьма серьезны, поскольку существуют TCP В протоколе установление и закрытие соединений являются очень «дорогими» операциями. TCP Чтобы установить соединение, "три рукопожатия”,отправлять 3 пакеты данных, необходимые 1 индивидуальный RTT закрытие соединения «четыре волны», 4; требуется индивидуальный пакет данных 2 индивидуальный RTT。

долгое соединение

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

Вы можете явно запросить использование большого в заголовке запроса. механизм соединения с использованием поля из Соединение, значение — «поддержание активности».

производительностьоптимизация。

Потому что «просьба - Ответ «Модель» изменить нельзя, поэтому проблема «блокировки начальника очереди» существует. HTTP/1.1 Ее нельзя решить, ее можно только облегчить. В чем решение?

HTTP Вот «параллельное соединение» (concurrent соединений), то есть инициирование нескольких индивидуальных пользователей к одному доменному имени одновременно. соединение, используйте количество для решения проблем качества.

HTTP Протокол рекомендует клиентам использовать параллелизм, но не может «злоупотреблять» параллелизмом. RFC2616 Существует явное ограничение на максимальное количество параллелизма на одного клиента. 2 индивидуальное соединение. Однако практика показала, что реальное количество этого числа слишком мало. Многие браузеры «игнорируют» стандарт и увеличивают верхний предел этого числа до. 6~8. Позже пересмотрено RFC7230 Другими словами, это ограничение «2» было отменено.

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

HTTP Разве протоколы и браузеры не ограничивают количество одновременных подключений? Затем откройте более индивидуальные доменные имена, например shard1.chrono.com, shard2.chrono.com, и эти доменные имена указывают на один и тот же сервер. www.chrono.com, так актуально Количество соединений снова возросло.

Перенаправление

внешний Перенаправление,Сервер передаст браузеру адрес Перенаправления.,Затем браузер снова инициирует запрос,Адрес в адресной строке изменился.

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

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

Сценарий приложения (SSO)

HTTPS

SSL/TLS

SSL То есть Secure Sockets Layer (Secure Sockets Layer) Sockets Layer),существовать Модель OSI находится в 5 слой (сеансовый уровень)

TLS Он состоит из нескольких подпротоколов, включая протокол записи, протокол установления связи, протокол предупреждения, протокол спецификации изменения пароля и протокол расширения, и комплексно использует Симметричное. шифрование、Нет Симметричное шифрование, аутентификация личности и многие другие передовые криптографические технологии.

Симметричное шифрование

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

TLS Там так много изсимметричного доступны алгоритмы шифрования, такие как RC4、DES、3DES、AES、ChaCha20 и т. д., но первые три алгоритма считаются небезопасными и обычно запрещены к использованию. AES и ChaCha20。

оптимизация

Оптимизация производительности HTTP клиента. Ключевым моментом является уменьшение задержки.

ЯсуществоватьучаствоватьНа третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 года будет проводиться конкурс сочинений. Соберите команду, чтобы выиграть приз!

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода