протокол передачи гипертекста
Протокол, несколько участников. Спецификация связи между компьютерами представляет собой двусторонний протокол.
HTTP обычно работает поверх стека протоколов TCP/IP, полагаясь на протокол IP для адресации и маршрутизации, протокол TCP для надежной передачи данных, протокол DNS для поиска доменного имени и протокол SSL/TLS для безопасной связи. Кроме того, существуют некоторые протоколы, использующие HTTP, например WebSocket, HTTPDNS и т. д. Эти протоколы переплетаются, образуя сеть протоколов, в центре которой находится HTTP.
**TCP/ IP Модель**
Ядро — это IP уровня 2 и TCP уровня 3, HTTP находится на уровне 4.
«Два без разницы»: все, что обрабатывается операционной системой, находится на уровне 4 или ниже; в противном случае все, что должно обрабатываться приложением (то есть вы сами пишете код), — это уровень 7.
Первым шагом в сетевом запросе DNS является разрешение доменного имени, которое находится на уровне приложения, и CDN также находится на уровне приложения.
Модель OSI
Переписка
Самая большая разница между двумя многоуровневыми моделями — это уровень сеанса и уровень представления. Первый-четвертый этажи в основном унифицированы. Что касается их самых высоких слоев, хотя один из них называется седьмым слоем, а другой - четвертым или пятым слоем, хотя на поверхности они не являются последовательными, на самом деле их можно заменить «прикладным слоем». Это позволяет избежать возможных недоразумений и более точно отражает конкретную цель этого слоя.
три рукопожатия
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 (балансировка нагрузки)
Преимущество CDN заключается в том, что он может кэшировать данные исходного сайта, так что запросу браузера не придется преодолевать «тысячи миль» до исходного сервера. Если алгоритм планирования CDN превосходен, он также может найти узел. максимально близко к пользователю, что значительно сокращает время отклика.
Помимо базового ускорения сети, он также обеспечивает балансировку нагрузки, защиту безопасности, периферийные вычисления, межоператорскую сеть и другие функции, которые могут «усилить» сервисные возможности исходного сервера в геометрической прогрессии.
Основная цель — решение проблем адресации и маршрутизации.
«Протокол управления передачей», расположенный поверх протокола IP, обеспечивает надежную связь в виде потоков байтов на основе протокола IP и является основой реализации протокола HTTP.
Каждый TCP-пакет отправляется с уникальным порядковым номером, и все пакеты должны быть доставлены на принимающую сторону по порядку. Если пакет не может быть доставлен на принимающую сторону, последующие пакеты должны быть сохранены в TCP-буфере принимающей стороны и ждать, пока потерянный пакет будет повторно передан и достигнет принимающей стороны. Все это происходит на уровне TCP, и приложение ничего не знает о повторных передачах TCP или пакетах, поставленных в очередь в буфере, и должно ждать прибытия всех пакетов, прежде чем оно сможет получить доступ к данным. До этого приложения могли испытывать задержку взаимодействия только при чтении данных через сокет. Этот эффект называется блокировкой начала строки TCP.
Используйте команду «keepalive_timeout», чтобы установить полный Тайм-аут соединения: если в течение определенного периода времени по соединению не отправляются и не принимаются данные, соединение будет активно отключено, чтобы неактивные соединения занимали системные ресурсы. Используйте команду «keepalive_requests», чтобы установить полный Максимальное количество запросов, которые можно отправить по соединению. Например, установите его в 1000, тогда когда Nginx обработано по этому соединению 1000 После запроса соединение также будет активно разрываться.
Когда разработчики разрабатывают, если они четко знают, что этот доступ завершен, им следует добавить соединение: close (клиент) в заголовок запроса.
композиция
Базовая система DNS представляет собой трехуровневую древовидную распределенную службу, которая в основном соответствует структуре доменного имени:
Операционная система кэширует разрешение DNS.
Процесс разрешения DNS
кеш браузера->Операционная системаdnscache ->hostsдокумент->Неавторитетный сервер имен->Корневой сервер имен->сервер доменных имен верхнего уровня->Сервер доменных имен второго уровня->Авторитетный сервер доменных имен。
Эти удаленные запросы основаны на протоколе UDP, обычно с использованием порта 53.
Процесс соединения между клиентом и сервером очень короткий.,Не будет оставаться на связи с сервером в течение длительного времени,Так это называется "короткое" соединение”(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)
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 года будет проводиться конкурс сочинений. Соберите команду, чтобы выиграть приз!