предисловие
Знание компьютерных сетей часто проверяется на собеседованиях и часто используется в реальной работе.
Недавно было суммировано 66 пунктов знаний, связанных с компьютерными сетями.Давайте посмотрим на это вместе: (вложите свои мысли, решите пункты знаний и обсудите проблемы вместе)
1. Сравните http 0.9 и http 1.0 😀
- http0.9 — это просто простой протокол с одним методом GET и без заголовков, а цель используется для получения HTML.
- В протоколе HTTP1.0 много контента: заголовки, коды ответов, редиректы, ошибки, условные запросы, кодировка контента и т. д.
http0.9 процесс:
Клиент формирует запрос, запрашивает IP-адрес через DNS, устанавливает TCP-соединение посредством трехэтапного рукопожатия, клиент инициирует запрос, сервер отвечает, машет рукой четыре раза и отключает TCP-соединение. (Один круговой путь: сервер получает информацию о запросе, читает соответствующий файл, такой как HTML, и возвращает данные клиенту)
http1.0 процесс:
Клиент формирует запрос, запрашивает IP-адрес через DNS, устанавливает TCP-соединение посредством трехэтапного рукопожатия, клиент инициирует запрос, сервер отвечает, машет рукой четыре раза и отключает TCP-соединение. (Несколько раундов: HTTP1.0 представил заголовки запроса и ответа. Из-за появления различных форм текста, таких как Js, css и т. д., http0.9 не мог удовлетворить потребности. Таким образом, такие поля, как кодирование содержимого и содержание -тип был введен. )
Из-за отсутствия дефектов стоит http1.1.
2. Про http1.1 и http2😁
В http1.1 браузеру больше не нужно повторно инициировать TCP-соединение для каждого запроса.Дополнения включают: расширение заголовков, связанных с кешем, метод OPTIONS, заголовок Upgrade, запрос диапазона, сжатие и кодирование передачи, конвейерную обработку и т. д. Но он по-прежнему не может удовлетворить текущие потребности веб-разработки, поэтому существует версия http.2.
http2 решает ее (функция пайплайна позволяет клиенту отправлять все запросы сразу, но развитию пайплайна мешают некоторые проблемы, то есть запрос идет долго, потомблокировка в начале очередиВлияет на другие запросы. ) Проблема блокировки заголовка строки в http.
По сравнению с http1.1 при использовании http2 пользовательский опыт имеет количественное улучшение воспринимаемого эффекта большинства задержек, а также улучшается коэффициент использования TCP-соединений (механизм параллельной реализации не полагается на установление множественных соединений с сервером).
Так что вам нужно изучить http2 и понять больше, чтобы освоить компьютерную сеть.
Для http2 вы можете запустить сервер http2, получить и установить веб-сервер http2, загрузить и установитьTLSСертификат позволяет браузеру и серверу подключаться через http2. (Подать заявку на сертификат в центре цифровой сертификации).
Изучите соглашение http2, давайте посмотрим на запрос веб-страницы, представленный пользователю в эффекте браузера, что произошло потом?
Шаги для получения ресурсов:
Поместите запрашиваемый URL в очередь, определите, находится ли URL уже в очереди запросов, если нет, то он завершится, если да, определите, находится ли запрошенное доменное имя в кэше DNS, если нет, разрешите доменное имя , и если да, то проверьте, открыто ли TCP-соединение с указанным доменным именем. , если нет, откройте TCP-соединение, сделайте HTTPS-запрос, инициализируйте и завершите рукопожатие протокола TLS и отправьте запрос на URL-адрес, соответствующий страница.
Получение ответа и этапы рендеринга страницы:
Получите запрос, определите, является ли он страницей HTML, проанализируйте HTML, определите приоритет ресурсов ссылки на страницу и добавьте ресурсы ссылки в очередь запросов. (Если ключевые ресурсы на странице получены, начать рендеринг страницы), определить, есть ли еще ресурсы для продолжения получения, продолжить парсинг и рендеринг до конца.
3. Использование нескольких методов запроса HTTP 😂
ПервыйGET
Метод: Отправьте запрос на получение ресурсов на сервере.
второйPOST
Метод: отправить данные в ресурс, указанный URL-адресом, или добавить новые данные.
третийPUT
Метод: как и метод POST, данные могут быть отправлены на сервер, но все они разные: PUT указывает расположение ресурса на сервере, а POST — нет.
четвертыйHEAD
Метод: относится к заголовку страницы запроса.
пятыйDELETE
Метод: Удалить ресурс на сервере.
шестойOPTIONS
Метод: используется для получения методов, поддерживаемых текущим URL-адресом. Если запрос выполнен успешно, заголовок Allow содержит что-то вродеGET,POST
и т.п. информация.
седьмойTRACE
Метод: используется для запуска удаленного цикла сообщений запроса на уровне приложения.
восьмойCONNECT
Метод: преобразовать соединение запроса в канал TCP/TP.
4. Шаги по вводу URL из адресной строки браузера для отображения страницы🤣
Проще говоря, браузер отправляет запрошенный URL-адрес в разрешение доменного имени DNS, находит реальный IP-адрес и инициирует запрос к серверу, после передачи сервера в фоновый режим для обработки данные возвращаются, и браузер получить данные файла, такие как html, js, css, изображения и т. д.; затем браузер анализирует загруженные ресурсы и устанавливает соответствующую внутреннюю структуру данных; загружает и анализирует полученные файлы ресурсов, отображает страницу и завершает отображение страницы эффект.
🙅 Не достаточно ясно, чтобы понять код?
Затем снова углубитесь в детали, кхм, получите URL-адрес из браузера, запустите поток сетевых запросов, выполните полный HTTP-запрос, получите запрос от сервера на соответствующий фон, а затем фоновое и переднее http-взаимодействие; Среди них , проблема с кешем (http cache), процесс парсинга после того, как браузер получает http пакет, модель визуального формата css, процесс парсинга движка js и т.д., другие эффекты рендеринга страницы.
🙅: Здесь вам нужно ваше понимание ядра браузера: основной движок рендеринга и JS-движок, вот ваше понимание ядра браузера.
- Механизм рендеринга отвечает за получение содержимого веб-страницы, организацию информации и расчет режима отображения веб-страницы, а затем вывод его на дисплей.
- ДВИГАТЕЛЬ JS используется для анализа и выполнения JavaScript для достижения динамических эффектов веб-страниц.
Разные ядра браузеров по-разному интерпретируют синтаксис веб-страниц, поэтому эффекты рендеринга также будут разными. На самом деле вначале не было четкого различия между движком рендеринга и движком JS, но позже движок JS становился все более и более независимым, поэтому ядро, как правило, становилось движком рендеринга.
Для запроса/получения ресурсов, ответа ресурса/рендеринга страницы это будет оказывать давление на пропускную способность сети и ресурсы устройства.В настоящее время будет рассмотрена оптимизация веб-производительности.
5. Оптимизация веб-производительности 😃
в этомКлюч производительности:
что такое пакет Пакет данных (IP-пакет данных) относится к серии байтов, инкапсулированных в фиксированную структуру, которая определяет длину пакета данных, сведения о передаче и другую информацию, относящуюся к TCP.
Задержка: относится к времени, требуется для IP-пакета, чтобы путешествовать с одной конечной точки сети в другую. (Время, необходимое, это задержка круговой поездки, которая в два раза больше времени задержки)
Пропускная способность: Пока пропускная способность не перегружена, соединение двух конечных точек сети будет обрабатывать максимально возможный объем данных одновременно (поэтому пропускная способность может стать узким местом для производительности).
Время установления соединения: устанавливает соединение между клиентом и сервером в обоих направлениях (трехстороннее рукопожатие).
Процесс трехстороннего рукопожатия TCP: клиент отправляет пакет SYN на сервер, сервер возвращает соответствующий ответ SYN ACK и новый пакет SYN, а затем клиент возвращает соответствующий ACK. (Когда между клиентом и сервером устанавливается обычное сетевое соединение TCP, клиент сначала отправляет сообщение SYN, сервер отвечает SYN+ACK, чтобы указать, что он получил сообщение, и, наконец, клиент отвечает сообщением ACK. )
SYN — это порядковый номер синхронизации, который является информацией квитирования, используемой TCP/IP для установления соединения. ACK — символ подтверждения.При передаче данных — управляющий символ типа передачи, отправляемый принимающей станцией на передающую станцию. Указывает, что отправленные данные были подтверждены для получения без ошибок. В протоколе TCP/IP, если получатель успешно получает данные, он ответит данными ACK. Сигнал ACK имеет собственный фиксированный формат и длину, и получатель отвечает отправителю.
Подробное трехстороннее рукопожатие:
Первое рукопожатие, когда соединение установлено, клиент отправляет SYN-пакет на сервер и переходит в состояние SYN_SENT, ожидая подтверждения от сервера, где SYN — порядковый номер синхронизации.
При втором рукопожатии сервер получает пакет SYN и должен подтвердить SYN клиента. В то же время он также отправляет пакет SYN, который является пакетом SYN+ACK.В это время сервер переходит в состояние SYN_RECV. .
При третьем рукопожатии клиент получает от сервера пакет SYN+ACK и отправляет на сервер подтверждающий пакет ACK.После отправки пакета клиент и сервер переходят в состояние ESTABLISHED (TCP-соединение установлено успешно) и завершают трехстороннее рукопожатие.
После завершения трехэтапного рукопожатия клиент и сервер начинают передавать данные.
Время согласования TLS (TLS вызывает дополнительные круговые поездки)
- Когда клиент инициирует https-соединение, ему необходимо согласовать протокол безопасности транспортного уровня.
- TLS используется для замены Secure Sockets Layer SSL.
В дополнение к сети, естьСам контент страницы или производительность сервера, такие как время первого байта TTFB, время загрузки контента, время начала рендеринга, время завершения загрузки документа и т. д.
Итак, что такое TTFB, это время, которое требуется клиенту, чтобы найти веб-страницу от начала до получения первого байта ответа главной страницы. Это мера времени между тем, когда браузер инициирует запрос и получает свой первый байт.
Время загрузки контента равно времени поступления последнего байта запрошенного ресурса.
Время начала рендеринга, время, в течение которого клиент видит пустую страницу.
5.1 Технология оптимизации веб-производительности (уменьшите задержку клиентской сети и оптимизируйте производительность рендеринга страниц для повышения производительности в Интернете)
Технология оптимизации:
- Оптимизация запросов DNS
- Кэш клиента
- Оптимизация TCP-соединений
- Избегайте перенаправлений
- Кэширование на границе сети
- Условное кэширование
- Сжатие и упрощение кода
- Оптимизация изображения
6. http1.1😄
- Улучшить механизм разделения постоянных соединений и доменов CDN.
- Незрелая http-конвейерная обработка
- Обеспечивает поддержку виртуального хостинга
- Идеальная поддержка динамически генерируемого контента
- Внедрить файлы cookie и механизмы безопасности
Для проблемы http1 открылся http2. Проблема с http1:
Блокировка начала строки. В большинстве случаев браузеры хотят получить много ресурсов одновременно, но http1 не предоставляет механизма для одновременного запроса этих ресурсов. Если вы используете только одно соединение, вам нужно инициировать запрос , дождитесь ответа, а затем инициируйте следующий запрос.
В http1 функция должна быть конвейерной, что позволяет отправлять группу запросов одновременно, но ответы должны быть получены в том порядке, в котором они отправляются. Таким образом, в процессе ответа на запрос, если что-то случится, остальная часть работы будет заблокирована, что является «блокировкой начала очереди» (блокировка в момент возникновения ошибки в ответе на запрос), что препятствует передаче по сети и веб- рендеринг страницы, и направляет потерю ответа.
Неэффективное использование TCP, протокол TCP является одним из самых надежных протоколов, а его ядром является окно перегрузки.
Окно перегрузки является мерой спутниковой связи для предотвращения перегрузки связи в Интернете. Оно использует механизм, сочетающий алгоритм «предотвращения перегрузки» и алгоритм «медленного старта» на исходном конце. «Окно перегрузки» представляет собой окно «предотвращения перегрузки», которое представляет собой скользящее окно, установленное у отправителя, и размер окна не больше, чем окно для подтверждения уведомления получателя.
Окно перегрузки относится к объему данных в TCP-пакете, который отправитель может отправить до того, как получатель подтвердит получение пакета. (Если окно перегрузки указано как 1, после того, как отправитель отправит 1-й пакет, только получатель может отправить следующий пакет после подтверждения отправленного пакета)
Управление перегрузкой может предотвратить ввод слишком большого количества данных в сеть и используется для предотвращения перегрузки сети.медленный стартИсследуйте соответствующий размер окна перегрузки для текущего соединения. То есть, когда отправитель отправляет данные, он не вводит в сеть большой объем данных в начале, а отправляет пакет данных для тестирования, и отправляет дополнительный неподтвержденный пакет после получения ответа-подтверждения.
Это означает, что может быть отправлен один подтверждающий ответ, могут быть отправлены два пакета данных, могут быть отправлены два подтверждающих ответа, могут быть отправлены четыре пакета данных и указан размер окна перегрузки (верхний предел количества отправленных пакетов). по протоколу будет быстро расти в геометрической форме.В это время соединение EnterЭтап предотвращения перегрузок, этот механизм требует нескольких круговых обходов, чтобы узнать оптимальный размер окна перегрузки, но временные затраты, необходимые для нескольких круговых обходов, не являются незначительными.
- Размер окна перегрузки зависит от того, насколько перегружена сеть, и изменяется динамически. Отправитель делает свое окно отправки равным окну перегрузки. Если принимается во внимание приемная способность приемника, окно отправки также может быть меньше, чем окно перегрузки.
- Принцип, согласно которому отправитель управляет окном перегрузки, заключается в следующем: пока сеть не перегружена, окно перегрузки будет увеличиваться для отправки большего количества пакетов. Но пока сеть перегружена, окно перегрузки уменьшается, чтобы уменьшить количество пакетов, вводимых в сеть.
Концепция медленного запуска TCP используется для изучения соответствующего размера, связанного с соответствующим текущим окном перегрузки. Он используется для определения нового подключения к текущей сетевой ситуации. «Медленный старт» после установления соединения, каждый получает подтверждение от принимающей стороны, это значение сегмента, увеличенный размер окна управления, когда значение окна достигает предела «медленного старта», после медленного старта они перестают работать, избегайте сети скопление.
Идея дизайна протокола управления передачей TCP заключается в том, что он может справедливо обрабатывать приложения с разным трафиком в одной и той же сети, а его механизм предотвращения перегрузки предназначен для работы даже в наихудших сетевых условиях.
Раздутый заголовок сообщения, HTTP/1.1 может сжимать содержимое запроса, но заголовок сообщения не может. Также относительно распространено, что на него может приходиться подавляющее большинство (или, возможно, все) запросов. (Здесь, если вы можете сжать заголовок запроса и уменьшить размер запроса 😙, вы можете снизить нагрузку на полосу пропускания и снизить общую нагрузку на систему)
Ограниченная настройка приоритета, то есть, если браузер открывает несколько запросов сокетов для указанного доменного имени, если некоторые ресурсы веб-страницы важнее других ресурсов, это увеличит эффект очереди ресурсов и задержит запрос других ресурсов, и приоритет высокий Ресурсы с наивысшим приоритетом получаются первыми, а ресурсы с низким приоритетом будут обрабатываться после обработки ресурсов с высоким ресурсом (во время обработки браузер не будет инициировать новый запрос ресурсов) Подождите завершение высокого ресурса перед инициированием запроса (это увеличит общее время загрузки страницы).
Браузер не будет инициировать новый запрос с более низким приоритетом в течение интервала времени, когда запрашивается ресурс с более высоким приоритетом
Резюме: Медленный запуск HTTP1.1 влияет на первую скорость загрузки ресурсов.После того как TCP установит соединение, он начнет запрашивать передачу.Начинается медленно, а затем продолжает ускоряться.Чтобы предотвратить перегрузку сети, он сделает первый время рендеринга страницы больше. При запуске нескольких tcps, если сеть падает и невозможно определить приоритет ресурсов, возникает проблема гонки.
7. Как оптимизировать производительность сайта 😅
- Что касается контента, уменьшите количество запросов Http (слияние файлов, CSS-спрайты, встроенные изображения), уменьшите количество запросов DNS (кэш DNS, распределите ресурсы по подходящему количеству имен хостов) и уменьшите количество элементов DOM.
- С точки зрения куки размером куки могут быть уменьшены.
- Для css поместите таблицу стилей вверху страницы; не используйте выражения css; используйте
<link>
Не используйте@import
; Можно импортировать css извне; сжимать css. - Что касается JavaScript, поместите скрипт внизу страницы, импортируйте JavaScript извне, сожмите JavaScript, удалите ненужные скрипты и уменьшите доступ к DOM.
- В плане картинок можно оптимизировать CSS спрайты, не растягивать картинки в HTML и оптимизировать картинки (сжимать).
8. Код статуса http и его значение😆
- Для кода состояния 1xx это информационный код состояния, а 100 — продолжение, указывающее подтверждение, и информация о конкретном параметре успешно возвращена.
- Для кода состояния 2xx 200 означает, что информация возвращается нормально, 201 означает, что запрос был выполнен успешно и сервер создал новый ресурс, а 202 означает, что сервер принял запрос, но еще не обработал его.
- Для 3xx, перенаправления, 301 означает, что запрошенная веб-страница была постоянно перемещена в новое место, 302 означает временное перенаправление, 303 означает временное перенаправление, и всегда используйте GET для запроса нового URI. 304 указывает, что запрошенная веб-страница не была изменена с момента последнего запроса.
- Для 4xx, ошибка клиента, 404, сервер не понимает формат запроса, клиент НЕ ДОЛЖЕН пытаться сделать запрос повторно с тем же содержимым, 401, запрос не авторизован, 403, доступ запрещен, 404, не может найти, как сопоставить ресурс URI.
- Для 5xx, ошибка сервера, 500, наиболее распространенная ошибка на стороне сервера, 503, серверная сторона временно не может обработать запрос, возможно, из-за перегрузки или технического обслуживания.
9.http-сжатие данных😉
Сжатие данных, которые отправляются с запросом в браузереContent-Encoding: gzip
, который представляет собой список форматов сжатия, поддерживаемых браузерами, таких как gzip, deflate, br и т. д. Это позволяет серверу выбирать алгоритм сжатия, из которого следует поместитьContent-Encoding
В заголовке ответа исходные данные сжимаются и отправляются в браузер.
10. Передача http-chunk 😊
Блокировка передачи заключается в том, чтобы разложить передаваемый файл на несколько мелких кусочков, а затем раздать их браузеру, а браузер после его получения заново соберет и восстановит.
Каждый раздел содержит две части: длину блока и данные блока (заголовок длины и блок данных), строку открытого текста с заголовком длины, оканчивающимся на CRLF, блок данных, следующий сразу за заголовком длины, также заканчивающийся на CRLF, и, наконец, блок данных. длина Блок 0 указывает на конец.
В ответном сообщении поле заголовка Transfer-Encoding:chunked используется для указания того, что основная часть сообщения не отправляется за один раз, а делится на множество фрагментов и отправляется один за другим.
Эти два поля являются взаимоисключающими в Transfer-Encoding: Chunked и Content-Length.
Длина передачи ответного сообщения либо известна, либо разбита на фрагменты.
Content-Length: 299
11. запрос http-области 😋
http
Для реализации этой функции необходимо указать область загружаемой сущности, и это указание области для отправки запроса называется запросом области.
Accept-Ranges: сервер использует заголовок HTTP-ответа Accept-Ranges, чтобы указать, что он поддерживает запросы диапазона.Конкретное значение поля используется для определения единицы измерения запроса диапазона.
грамматика
Accept-Ranges: bytes,范围请求的单位是 bytes (字节)
Accept-Ranges: none,不支持任何范围请求单位
Запросы диапазона используются, когда не требуются все данные, а требуется только часть данных.Запросы диапазона могут использоваться, позволяя клиенту использовать выделенное поле в заголовке запроса, чтобы указать, что получена только часть файла.
Формат Range, заголовок запроса Range — специальное поле для запросов диапазона HTTP, формат «bytes=x-y», диапазон данных в байтах.
- «0-» означает весь файл от начала до конца документа.
- «100-» означает от 100-го байта до конца документа.
- "-10" означает начало с 10-го байта от конца документа.
Пример:
执行范围时会使用头部字段 Range 来指定资源 byte 的范围。
Range格式:
5001-10000字节
Range : byte = 5001-10000
5000之后的
Range : byte = 5001-
0-3000字节,5001-10000字节
Range : byte=-3000,5001-10000
На приведенном выше рисунке видно, что после того, как сервер получит поле «Диапазон», он проверит допустимость диапазона, и если диапазон выходит за пределы, он вернет код состояния 416. Если ваш файл всего 1000 байт, но запрос диапазон 20000-3000, это приведет к сбою этого кода состояния.
Если файл успешно прочитан и диапазон правильный, возвращается код состояния «206». Сервер должен добавить в заголовок ответа поле Content-Range, в котором указано фактическое смещение фрагмента и общий размер ресурса.
Наконец, данные отправляются, и фрагмент отправляется напрямую клиенту по TCP, обрабатывается запрос диапазона.
Формат "байты x-y/длина", отличие от заголовка Range в том, что нет "="
Content-Range: bytes 0-4395719/4395720
12. http-несколько данных 😎
Многотерминальные данные — это использование нескольких «x-y» в заголовке Range для одновременного получения нескольких фрагментов данных. Используется специальный тип MIME: «multipart/byteranges», который используется, когда ответный пакет содержит несколько диапазонов. В ответах на запросы с несколькими диапазонами в заголовке Content-Type будут указаны multipart-byteranges.
Многосегментный график данных: отдельные границы маркеров для различения разных сегментов
13. Расскажите о разнице между файлами cookie, sessionStorage и localStorage? 😍
- Cookie - это данные, хранящиеся в локальном терминале пользователя на веб-сайте для идентификации пользователя
- Данные cookie всегда передаются в HTTP-запросе одного и того же источника, даже если они не нужны, поэтому они будут передаваться туда и обратно между браузером и сервером.
- sessionStorage и localStorage не отправляют данные автоматически на сервер, а только сохраняют их локально
размер хранилища
Размер данных файла cookie не может превышать 4 КБ; хотя sessionStorage и localStorage также имеют ограничения на размер хранилища, они намного больше, чем файлы cookie, и могут достигать 5 МБ и более.
ограниченный срок
- LocalStorage хранит постоянные данные, данные не будут потеряны после закрытия браузера, за исключением активного удаления данных
- Данные sessionStorage автоматически удаляются после закрытия текущего окна браузера
- Установите срок действия файла cookie до истечения срока его действия, даже если окно или браузер закрыты.
14. Почему более эффективно использовать несколько доменных имен для хранения ресурсов веб-сайта? 😘
Потому что кэширование CDN более удобно, оно обходит ограничение параллелизма браузера, экономит пропускную способность файлов cookie, сохраняет количество подключений для основного доменного имени, оптимизирует скорость отклика страницы, предотвращает ненужные проблемы с безопасностью.
15. Контент http2.0 🥰
http2 — вторая версия протокола передачи гипертекста.По сравнению с форматом передачи текста протокола http1, http2 передает данные в двоичном формате, который имеет меньший объем передачи и нагрузку.
Уровни http2.0, уровень кадрирования (основная часть возможностей мультиплексирования http2) и уровень данных или http (содержит часть, традиционно считающуюся HTTP, и связанные с ней данные).
HTTP2.0:
- Механизм мультиплексирования, механизм уровня двоичного кадрирования введен для реализации мультиплексирования. (Уровень формирования кадров представляет собой двоичный протокол на основе кадров. Это облегчает машинный синтаксический анализ. Запросы и ответы переплетаются.)
- Приоритет запроса может быть установлен (кадровый слой клиента отмечает приоритет запроса на разделе).
- Сжатие заголовка Запросите сжатие заголовка для повышения эффективности передачи.
Основные моменты оптимизации HTTP/2 по сравнению с HTTP/1.1
- мультиплексированный поток
- сжатие заголовка
- Приоритет ресурсов и настройки зависимостей
- пуш сервера
- управление потоком
- сбросить сообщение
Реализация мультиплексирования:
Конвейер TCP все еще может быть установлен под одним доменным именем, используя длинное TCP-соединение для загрузки всей страницы ресурса, требуется только один медленный запуск и избегаются условия гонки.Браузер инициирует запрос, и уровень кадрирования разделит каждый запрос.Отметьте сегментированные блоки одного и того же запроса одним и тем же номером идентификатора, затем отправьте все сегменты на сервер через стек протоколов, а затем соберите запрос в соответствии с номером идентификатора через уровень кадрирования сервера, и кадрирование Уровень сервера будет отвечать на сегментацию данных в соответствии с тем же телом ответа, которое выполняет сегментацию идентификатора и отвечает клиенту, а клиент собирает ответ.
Для фрейма (frame) в http2, http1 не строится на фрейме (frame), он текст-разделен.
GET/HTTP/1.1 <crlf>
Таким образом, для запроса или ответа HTTP1 может возникнуть проблема:
- Одновременно может обрабатываться только один запрос или ответ, и синтаксический анализ нельзя остановить до завершения.
- Невозможно предсказать, сколько внутренних слоев потребуется для синтаксического анализа.
Сообщения запроса и ответа HTTP/1 состоят из начальной строки, заголовка и тела, разделенных символами новой строки; HTTP/2 разделяет данные запроса и ответа на более мелкие кадры, которые закодированы в двоичном формате и легко анализируются.
справочное изображение:
Сводная информация о структуре кадра Все кадры содержат 9-байтовый заголовок + тело с переменной длиной стороны. В зависимости от типа рамы строение кузовной части различается.
Заголовок кадра:
16. http2 - за кадром 😗
Как бинарный протокол, http2 обладает всеми преимуществами легкости, безопасности и скорости, сохранения исходной семантики протокола http и изменения способа передачи данных между системами для http2.
уровень двоичного кадрирования, где все взаимодействие осуществляется через одно TCP-соединение, которое остается открытым на протяжении всего сеанса связи, в основном таким образом, как двоичный протокол разбивает взаимодействие на кадры, чередующиеся между клиентом и сервером. В двунаправленном логическом потоке между серверы.
Топология соединений HTTP/2 (показывает одно соединение для установления нескольких потоков)
В потоке 1 отправляется сообщение запроса и возвращается соответствующее ответное сообщение.
Структура кадра HTTP/2
Первые 9 байт одинаковы для каждого кадра. Вам нужно только прочитать эти байты при синтаксическом анализе, чтобы точно знать, сколько байтов ожидать во всем кадре.
Таблица полей заголовка кадра:
имя | длина | описывать |
---|---|---|
length | 3 байта | Указывает длину полезной нагрузки кадра |
type | 1 байт | текущий тип кадра |
Flags | 1 байт | Идентификация конкретного типа кадра |
R | 1 человек | Зарезервированные биты, не ставить, иначе будут серьезные последствия |
Stream Identifier | 31 бит | Уникальный идентификатор для каждого потока |
Frame Payload | переменная длина | Реальное содержание кадра, длина установлена в поле длины |
Примечание. Идентификатор потока используется для идентификации потока, которому принадлежит кадр. Поток рассматривается как серия кадров по соединению, которые составляют отдельные HTTP-запросы и ответы.
Запрос и ответ http1 разделены на две части: заголовок сообщения и тело сообщения; http2 Как видно из рисунка выше, запрос и ответ http2 разделены на фрейм HEADERS и фрейм DATA.
Сравните: 👇
Важной особенностью http2 является управление потоком на основе потока. Предоставляет возможность клиенту регулировать скорость передачи. Кадр WINDOW_UPDATE используется для указания информации управления потоком.
Благодаря мультиплексированию клиенты могут одновременно запрашивать несколько ресурсов, вместо того чтобы ждать завершения предыдущего ответа, прежде чем сделать запрос на новый объект, такой как http1. Таким образом, браузер теряет политику приоритета запросов ресурсов по умолчанию в Http1.
17. Браузер генерирует сообщение http-запроса 😙
HTTP Head Field
тип поля заголовка | имея в виду |
---|---|
Date | Указывает дату создания запроса и ответа. |
Pragma | Параметр связи, указывающий, разрешено ли кэширование данных. |
Cache-Control | Информация об управлении кешем |
Connection | Задает параметры связи, определяющие, будет ли продолжаться TCP-соединение после отправки ответа. |
Transfer-Encoding | Указывает формат кодирования тела сообщения. |
Via | Записывает прокси и шлюзы в пути |
Authorization | Данные аутентификации |
From | Адрес электронной почты отправителя запроса |
Referer | При переходе на следующую страницу по гиперссылке здесь будет записан URI предыдущей страницы |
User-Agent | Название клиентского программного обеспечения и номер версии и другая соответствующая информация |
Accept | Типы данных, поддерживаемые клиентом, выраженные в виде типов MIME. |
Accept-Charset | Наборы символов, поддерживаемые клиентом |
Accept-Language | Языки, поддерживаемые клиентом |
Host | IP-адрес и номер порта сервера, принимающего запрос |
Range | Когда вам нужно получить только часть данных, а не все данные, вы можете указать диапазон данных, которые будут получены через это поле. |
Location | Указывает точное местонахождение информации |
Server | Имя и номер версии серверной программы и другая соответствующая информация. |
Allow | Указывает, что указанный URI поддерживает |
Content-Encoding | Когда тело сообщения подвергается обработке кодирования, такой как сжатие, оно указывает свой формат кодирования. |
Content-Length | Указывает длину тела сообщения |
Content-Type | Указывает тип данных тела сообщения, представленный типом данных, определенным спецификацией MIME. |
Expires | Указывает срок действия тела сообщения |
Last-Modified | Дата последнего обновления данных |
Content-Language | язык, на котором представлено тело сообщения |
Content-Location | Указывает расположение тела сообщения на сервере |
Content-Range | Когда запрашивается только часть данных, указывается диапазон данных, содержащихся в теле сообщения. |
Пример HTTP-сообщения:
- HTTP, протокол передачи гипертекста.
- Протокол, определение правила для коммуникационных операций называется протоколом.
- URI, универсальный идентификатор ресурса.
- В одном сообщении запроса может быть записан только один URI. Если вам нужно получить несколько файлов, вы должны Отправить 1 отдельный запрос для каждого файла.
Основная идея ИП
Способ представления IP-адреса
Структура IP-адреса — маска подсети представляет собой границу между номером сети и номером хоста.
Как вызвать парсер
Базовая работа DNS-сервера
Операции запросов между DNS-серверами
Данные течет через трубную структуру
18. Знайте основы работы в сети 🙂
- физический слой
- канальный уровень
- Сетевой уровень
- транспортный уровень
- сеансовый уровень
- уровень представления
- прикладной уровень
Компьютерную сеть можно разделить на WAN, глобальную сеть и локальную сеть. Подключите коммутатор к роутеру через компьютер.
Знаете ли вы, через какой процесс разработки прошли компьютер и сеть?
- Пакетная обработка относится к методу, при котором пользовательские программы и данные загружаются на кассеты или ленты заранее и считываются компьютером в определенном порядке, так что эти программы и данные, предназначенные для выполнения пользователем, могут обрабатываться пакетами.
- Система с разделением времени относится к системе, в которой несколько терминалов подключены к одному и тому же компьютеру, что позволяет нескольким пользователям использовать один компьютер одновременно.
- компьютерная сеть
Каков механизм TCP/IP, общий термин для коммуникационных протоколов TCP/IP, некоторые люди, изучающие это, не должны понимать, что такое протокол.
Но когда мы вступаем в контакт с программами, мы часто слышим такие протоколы, как IP, TCP, HTTP и другие протоколы. Помните, что TCP/IP — это набор протоколов, таких как IP, TCP и HTTP. Протокол — это своего рода «контракт», который необходимо заключить, когда компьютер общается с компьютером через сеть. Эти протоколы обеспечивают связь между компьютерами, состоящими из устройств разных производителей, разных процессоров и разных операционных систем.
То есть оба компьютера могут поддерживать один и тот же протокол и следовать ему для связи друг с другом.
протокол коммутации пакетов
Коммутация пакетов — это метод разделения больших данных на более мелкие блоки, называемые пакетами для передачи.
Многоуровневые модули
Понимание эталонной модели OSI
OSI будет разделен на 7 простых для понимания слоев:
1. Физический уровень, 2. Канальный уровень, 3. Сетевой уровень, 4. Транспортный уровень, 5. Сеансовый уровень, 6. Уровень представления, 7. Уровень приложений.
Прикладной уровень: это протокол для конкретного приложения.
Уровень представления: преобразование между собственным форматом данных устройства и стандартным форматом данных сети.
Сеансовый уровень: управление связью. Отвечает за установление и разрыв коммуникационных соединений.
Транспортный уровень: управляет передачей данных между двумя узлами.
Сетевой уровень: управление адресами и маршрутизация.
Уровень канала передачи данных: кадры данных передаются и идентифицируются между взаимосвязанными устройствами.
Физический уровень: «0» и «1» представляют собой уровень напряжения и мигания индикаторов.
Как сделать коммуникационный транспорт модульным
сетевые компоненты
Сетевая карта:
Что такое шлюз, это устройство в эталонной модели OSI, отвечающее за преобразование и пересылку данных с транспортного уровня на прикладной уровень.
Прокси-сервис:
19. Что такое оптимизация рендеринга? 😝
Во-первых, мы можем запретить использование iframe, во-вторых, мы можем запретить использование gif-изображений для достижения эффектов загрузки, снижения нагрузки на процессор и повышения производительности рендеринга, в-третьих, использовать код CSS3 вместо JS-анимации.
Для некоторых небольших значков можно использовать кодировку base64, чтобы уменьшить количество сетевых запросов, но не рекомендуется использовать большие изображения, поскольку они потребляют ресурсы ЦП.Преимущество маленьких значков заключается в том, что они могут уменьшить количество изменения вступают в силу во времени.
Стиль и сценарий в начале страницы блокируют страницу, а поток JS и поток рендеринга в процессе Renderer являются взаимоисключающими.
20. Изучите основы TCP и IP 🤤
Набор протоколов TCP/IP представляет собой набор протоколов, также известный как набор протоколов Интернета.
Во второй половине 1960-х годов по запросу Министерства обороны Соединенные Штаты начали проводить мероприятия, связанные с коммуникационными технологиями, рождением ARPANET, развитием технологии пакетного взаимодействия, а в 1975 году — рождением TCP/IP. В 1983 году ARPANET решила официально использовать TCP/IP в качестве протокола связи.
Эталонная модель TCP/IP и OSI
Семиуровневая модель OSI слишком детализирована, а модель набора протоколов Интернета TCP/IP разделена на четыре уровня.
Модель TCP/IP (прикладной уровень, транспортный уровень, интернет-уровень, уровень сетевого интерфейса) — прикладной уровень, транспортный уровень, сетевой уровень, канальный уровень.
Транспортный уровень — это то, что обеспечивает связь между приложениями.
Среди них TCP — это протокол транспортного уровня, ориентированный на соединение, который обеспечивает доступность связи между взаимодействующими хостами на обоих концах. UDP — это протокол транспортного уровня без установления соединения, поэтому UDP используется в областях передачи меньшего количества пакетных данных или многоадресной рассылки, широковещательной связи и видеосвязи.
прикладной уровень
21. Вопрос интервью: Как рынок TCP/IP передает информацию в среде? 😑
Протоколы на разных уровнях ✍
Заголовок пакета:
Заголовок пакета Ethernet: заголовок пакета IP, заголовок пакета TCP, данные
Заголовок IP-пакета: заголовок TCP-пакета, данные
Заголовок пакета TCP: данные
На каждом уровне к отправляемым данным добавляется заголовок, который содержит необходимую информацию на этом уровне. (отправленный адрес получателя, информация о протоколе и т. д.)
- пакет — универсальный термин
- Кадр — это единица пакета на канальном уровне.
- Пакет, единица пакетов в слоях над сетевым уровнем, таких как IP и UDP.
- сегмент, представляющий информацию в потоке данных TCP
- сообщение, единица данных в прикладном протоколе
Заголовок пакета данных четко указывает, как протокол должен считывать данные. Управляйте заголовком пакета данных. Обычно информация, предоставляемая протоколу, представляет собой заголовок пакета, а отправляемое содержимое — это данные.
Отправка пакетов данных, процесс связи TCP/IP: 🤔
- Обработка приложения, отправка связи запускает связь TCP/IP, приложение выполняет обработку кодирования, и кодирование эквивалентно функции уровня представления в OSI.
- Обработка модуля TCP, TCP отвечает за установление соединений, отправку данных и разрыв соединений, а TCP обеспечивает надежную передачу для плавной отправки данных с прикладного уровня на противоположный конец. Заголовок TCP присоединяется к внешнему интерфейсу данных прикладного уровня, который содержит номер исходного порта и номер порта назначения, порядковый номер и контрольную сумму (используется для определения того, повреждены ли данные), а затем пакет с заголовком TCP прикреплены и отправлены на IP.
- Обработка IP-модуля добавляет свой собственный IP-заголовок в начало TCP-заголовка, который содержит IP-адрес получателя и IP-адрес отправителя. Если вы не знаете MAC-адрес принимающей стороны, вы можете использовать ARP, чтобы найти его.Пока вы знаете MAC-адрес противоположной стороны, вы можете передать MAC-адреса и IP-адреса драйверу Ethernet для реализации передача информации.
- Обработка сетевого интерфейса, IP-пакет, переданный от IP, а затем Ethernet-заголовок прикрепляется и отправляется на обработку.Ethernet-заголовок содержит MAC-адрес получателя, MAC-адрес отправителя и протокол, который маркирует Ethernet-тип данных Ethernet.
пакет данных,по каналу передачи данных Ethernet, Примерно добавьте заголовок Ethernet, заголовок пакета IP, заголовок пакета TCP или пакет UDP, а также собственный заголовок пакета и данные приложения, и, наконец, пакет будет дополнен хвостом пакета.
Структура пакетов в иерархии
Процесс получения пакетов🙄
- При обработке сетевого интерфейса, после того как хост получил пакет Ethernet, он находит MAC-адрес из заголовка пакета Ethernet, чтобы определить, был ли он отправлен самому себе.Если это не так, он будет отброшен.Тип передаваемых данных по протоколу Ethernet.
- Он обрабатывается IP-модулем, а затем обрабатывается TCP-модулем (необходимо определить, поврежден ли он) и проверить, получены ли данные в соответствии с серийным номером. Когда данные будут получены, отправителю будет отправлено «подтверждение получения». Обратите внимание, что если информация о получении здесь не доходит до отправителя, отправитель будет думать, что она не была получена, и будет продолжать отправлять ее повторно.
- Обработка приложений, приложение-получатель будет напрямую получать информацию о данных, отправленную отправителем.
22. Узнайте о http-http3.0 😶
В http2.0 проблема потери пакетов при передаче TCP-канала также приведет к блокировке головы очереди (TCP-соединение в http2.0 устанавливает трехстороннее рукопожатие, а TSL-соединение с HTTPS также будет занять длительное время)
Фактически технология мультиплексирования позволяет передавать все данные запроса только через одно TCP-соединение.
http3 имеет протокол QUIC, основанный на протоколе UDP.Хотя QUIC основан на UDP, на его основе было добавлено множество функций. QUIC (Quick UDP Network Connection) — это экспериментальный сетевой транспортный протокол, разработанный Google, целью которого является ускорение передачи веб-страниц.
Недостатком http является задержка и блокировка браузера.Для одного и того же доменного имени одновременно может быть выполнено только 4 подключения.При превышении максимального количества подключений браузера последующие запросы будут заблокированы; DNS-запрос к доменному имени разрешается в IP для установления соединения с IP-адресом целевого сервера, в котором DNS-кэш может использоваться для сокращения времени; для установления соединения используется HTTP на основе протокола tcp, три -стороннее рукопожатие, каждое соединение нельзя использовать повторно, поэтому каждый раз при каждом запросе требуется трехстороннее рукопожатие и медленный старт, что повлияет на задержку. (Медленный запуск оказывает большее влияние на большое количество запросов небольших файлов)
HTTP находится на прикладном уровне в компьютерной сети и построен поверх протокола TCP. (Освойте и поймите трехстороннее рукопожатие tcp для установления соединения, а также четырехстороннюю волну отключения и время задержки RTT, возникающее при каждом установлении соединения).
По сравнению с HTTP1.0, который использует if-modified-since и срок действия которого истекает в заголовке для оценки кэша, HTTP1.1 вводит тег объекта, if-unmodified-since, if-match, if-none-match и т. д. Дополнительное кэширование заголовки для управления стратегией кэширования.
Когда http1.0 передает данные, соединение необходимо каждый раз переустанавливать, увеличивая задержку. подключитесь, чтобы выиграть чемпионат, который потребляет ресурсы, и повысьте производительность сервера.
http1.1 пытается использовать конвейер для решения проблемы, то есть браузер может отправлять несколько запросов одновременно, под одним и тем же доменным именем, одним и тем же TCP-соединением, но возврат запроса конвейера в порядке, то есть ( если есть запрос перед Если требуется время, даже если сервер закончил обработку последующих запросов, он будет ждать обработки предыдущих запросов, прежде чем начать возвращаться по порядку.)
В http1.x содержимое, переносимое заголовком, слишком велико, что увеличивает стоимость передачи.Содержимое передачи является открытым текстом, и безопасность его данных не может быть в определенной степени гарантирована. (При возникновении проблемы http1.x с протоколом SPDY он используется для решения проблемы неэффективного http/1.1, уменьшения задержки, сжатия заголовка и т.д.)
HTTP2 в основном решает проблему, заключающуюся в том, что пользователи и веб-сайты используют только одно соединение (вся связь под одним и тем же доменным именем осуществляется только одним соединением, одно соединение может передавать любое количество двунаправленных потоков данных, поток данных отправляется в виде сообщение, а сообщение состоит из одного или нескольких кадров (композиция).
Итак, http передает данные в двоичном формате, в отличие от текстового формата http1.x. (Двоичный: http2 разбивает данные запроса и ответа на кадры, и они кодируются в двоичном формате), для концепций HTTP2: (поток, сообщение, кадр)
- поток, который является виртуальным каналом в соединении;
- сообщения, которые представляют собой HTTP-сообщения, запросы и ответы;
- Кадр, который является наименьшей единицей связи HTTP2.0.
Несколько кадров могут быть отправлены не по порядку и могут быть повторно собраны в соответствии с потоком идентификации в заголовке кадра.
Для http2 необходимо использовать только одно TCP-соединение с одним и тем же доменным именем, поэтому при потере пакета весь TCP начнет ждать повторной передачи. Для http1.1 может быть открыто несколько TCP-соединений, в этом случае затрагивается одно соединение (или его часть), а остальные TCP-соединения передаются нормально.
HTTP/2 использует стратегию сжатия заголовков, чтобы уменьшить потребление ресурсов и повысить производительность. (Поскольку в http1 под заголовком, содержащим cookie, данные могут каждый раз повторно передаваться)
Итак, в протоколе QUIC объединены и оптимизированы преимущества TCP, TLS и HTTP/2. Итак, что такое QUIC? Это протокол транспортного уровня, используемый для замены TCP, SSL/TLS и прикладного уровня поверх транспортного уровня.
Обратите внимание, что это протокол QUIC, основанный на протоколе UDP, который используется поверх http3.
QUIC новые функции
Процесс подключения полного рукопожатия HTTPSQUIC может решить проблему передачи одного потока данных, чтобы обеспечить упорядоченную доставку, не затрагивая другие потоки данных. (решить проблему http2)
Указывает, что в соединении QUIC несколько потоков в соединении, таких как поток1, поток2, поток3, поток4, где поток2 потерян (quic-пакет), поступает остальная часть UDP, и прикладной уровень считывает ее напрямую. --- Нет необходимости ждать, отсутствует блокировка заголовка очереди TCP, а потерянные пакеты необходимо передавать повторно.
Пополнить:
- TCP основан на IP и порте для идентификации соединений;
- QUIC идентифицирует соединения по ID
Все пакеты QUIC аутентифицируются, кроме отдельных, поэтому за счет шифрования аутентифицированных пакетов можно снизить риски безопасности.
HTTP2-TLS,TCP,IP
Общие характеристики QUIC: (на основе UDP) --- http3-QUIC, UDP, IP
- несколько потоков данных
- TLS
- упорядоченная доставка
- быстрое рукопожатие
- надежность
23. UDP в сети 😛
UPD - это протокол, ориентированный на пакете, то есть UDP - это только порт пакетов, и не выполняет никаких операций расщеплений и сращивания на пакетах. На стороне отправителя слой приложения передает данные в протокол UDP транспортного слоя, и UDP добавляет данные к данным. Заголовок UDP идентифицирует протокол UUDP, который затем передан в сетевой слой.
На принимающей стороне сетевой уровень передает данные на транспортный уровень, а UDP только удаляет заголовок IP и передает его на прикладной уровень без какой-либо операции сплайсинга.
UDP не требует установления соединения, и для связи не требуется устанавливать и отключать соединения. UDP ненадежен и не заботится о безопасности данных и других проблемах. UDP не имеет контроля перегрузки, что может привести к потере пакетов при плохих условиях сети.
Передача: UDP поддерживает режимы передачи «один к одному», «один ко многим», «многие ко многим» и «многие к одному» UDP обеспечивает функции одноадресной, многоадресной и широковещательной рассылки.
24. TCP в сети 😜
UDP не так сложен, как TCP, и накладные расходы на заголовок UDP невелики, но заголовок TCP намного сложнее, чем заголовок UDP.Заголовок UDP составляет всего 8 байт, что намного меньше, чем по крайней мере 20 байт TCP.
Sequence number
Этот порядковый номер гарантирует, что пакеты, передаваемые по протоколу TCP, идут по порядку, и противоположный конец может объединять пакеты по порядку с помощью порядкового номера.
Window Size
Указывает размер окна и количество байтов данных, которое может быть получено.
Acknowledgement Number
Указывает, что данные предыдущего порядкового номера были получены, какой номер следующего байта ожидает получить получатель
идентификатор
Когда ACK=1, это означает, что поле номера подтверждения действительно.
Когда SYN=1, ACK=0, это означает, что текущий сегмент является сообщением с запросом на соединение.
Когда SYN=1, ACK=1, это означает, что текущий сегмент является ответным сообщением, которое соглашается установить соединение.
Когда FIN=1, это означает, что этот сегмент является запросом на разрыв соединения.
Показатели производительности RTT
Указывает время приема-передачи, требуемое отправителем от отправки данных до получения данных от однорангового узла.
резюме
- TCP (протокол управления передачей) — это протокол, основанный на соединении.
- UDP (протокол пользовательских данных) — это протокол без установления соединения.
25. Установить соединение трехсторонним рукопожатием 😕
Когда соединение установлено, оба конца находятся в состоянии ЗАКРЫТО.Перед началом связи обе стороны создадут TCB, затем войдут в состояние LISTEN и начнут ждать, пока клиент отправит данные.
первое рукопожатие
Клиент отправляет серверу сегмент запроса на соединение.После отправки запроса клиент переходит в состояние SYN-SENT.
второе рукопожатие
После того как сервер получает сегмент запроса на соединение, он переходит в состояние SYN-RECEIVED после завершения передачи.
третье рукопожатие
После того, как клиент получит ответ о согласии на подключение, он отправляет подтверждающее сообщение на сервер. После того, как клиент отправляет этот сегмент, он переходит в состояние ESTABLISHED, и сервер также входит в состояние ESTABLISHED после получения ответа, и соединение в это время успешно установлено.
Кто-то спрашивал, соединение можно установить после двух рукопожатий, зачем вам третий раз?
Ошибка вызвана предотвращением недействительной сегмента запроса подключения от сервера.
26. Что такое коды HTTP-запросов? 🤑
100 — продолжить.Как правило, при отправке почтового запроса сервер возвращает эту информацию после того, как был отправлен заголовок http, указывающий на подтверждение, а затем отправляет конкретную информацию о параметрах; 201 — запрос выполнен успешно и сервер создал новый ресурс; 202, сервер принял запрос, но не обработал.
301 — запрошенная веб-страница была постоянно перемещена в новое место; 302 — временное перенаправление; 303 — временное перенаправление и всегда используйте GET для запроса нового URI; 304 — запрошенная веб-страница не изменялась с момента последнего запросить пропуск.
404 — сервер не может понять запрос, 401 — запрос не авторизован, 403 — доступ запрещен.
27. Во время интервью кратко рассказать о трехстороннем рукопожатии передачи TCP и четырех взмахах рук😲
Передача, чтобы точно передать данные цели, протокол TCP использует три политики рукопожатия.После отправки пакета данных с протоколом TCP он подтвердит, была ли успешно достигнута другая сторона, отправитель отправляет пакет данных с Флаг SYN для Когда другая сторона, принимающая сторона, будет получена, она вернет пакет с флагом SYN / ACK, чтобы представить подтверждающую информацию о поступлении передачи, а затем отправитель снова вернет пакет с флагом ACK, указывая "рукопожатие". .
Флаги, используемые во время рукопожатия: SYN и ACK
Для отключения TCP-соединения требуется четыре взмаха рук:
первая волна
Сторона, которая активно закрывает, отправляет FIN (как упоминалось выше, когда FIN=1, это означает, что этот сегмент является сообщением с запросом на разрыв соединения) и передает данные, чтобы сообщить другой стороне (пассивной закрывающей стороне), например нет Будет отправлять вам данные снова. --- Сторона, которая активно закрывается, может принять данные.
вторая волна
Пассивная закрывающая сторона получает пакет FIN, отправляет ACK другой стороне и подтверждает серийный номер.
Третья волна
Пассивная заключительная сторона отправляет FIN, а закрывающая сторона говорит, что я больше не буду присылать вам данные. (Вы не отправляете мне данные, и я больше не отправляю вам данные)
четвертая волна
Активная закрывающая сторона получает FIN и отправляет его в ACK для подтверждения серийного номера.
28. Часто говорят HTTPS🙁
Фактически, протокол HTTP переносится поверх протокола TCP, и между HTTP и TCP, SSL или TSL добавляется уровень протокола безопасности (передача протокола ssl/tls, включая сертификаты, разгрузку, переадресацию трафика, балансировку нагрузки, адаптацию страницы). , адаптация адаптера просмотра, отправка ссылок и т. д.), его часто называют HTTPS.
29. Разница между GET и POST, когда использовать POST? 😖
- Получить использование для получения информации, используя URL для передачи параметров, а объем отправленной информации ограничен;
- POST используется для изменения ресурсов на сервере;
- Обычно используется POST.Когда файл кеша не может быть использован, на сервер отправляется большой объем данных и отправляются неизвестные символы.
30. Вопросы на собеседовании, основные возможности протокола HTTP 😨
- Просто и быстро
- гибкий
- Нет соединения
- нет статуса
31. Вопросы на собеседовании, расскажите о компонентах HTTP-сообщений😟
Компоненты сообщения HTTP включают в себя: сообщение запроса и сообщение ответа.
Сообщение запроса: со строкой запроса, заголовком запроса, пустой строкой, телом запроса
Ответное сообщение: строка состояния, заголовок ответа, пустая строка, текст ответа.
Сообщение запроса содержит:
1. Метод запроса, 2. URL-адрес запроса, 3. Протокол и версия HTTP, 4. Заголовок сообщения, 5. Тело сообщения
- Строка запроса с указанием метода запроса, URL-адреса запроса, протокола http и версии;
- заголовок запроса, куча пар ключ-значение
- Пустая строка, когда сервер анализирует заголовок запроса, он обнаруживает пустую строку, указывающую, что следующее содержимое является телом запроса.
- тело запроса, данные запроса
Ответное сообщение содержит:
1. Протокол и версия сообщения, 2, код состояния и описание состояния, 3, заголовок ответа, 4, тело ответа
- Строка состояния: http-протокол и версия, код состояния и описание состояния.
- Заголовок ответа
- пустая строка
- тело ответа
32. Спросите на собеседовании, какие методы HTTP вы знаете😤
- Метод GET для получения ресурсов
- Метод POST для передачи ресурсов
- Метод PUT для обновления ресурса
- Метод удаления удаляет ресурс
- Метод HEAD для получения заголовка сообщения
33. Постоянные ссылки 😢
В http1.0 клиент каждые короткое время отправляет запрос на сервер, чтобы проверить, есть ли новые данные.Пока опрос достаточно быстрый, взаимодействие может осуществляться в реальном времени, но этот метод вызовет много повреждения на обоих концах.
Для длинного соединения в http1.1 используйте connection:keep-alive, чтобы установить длинное соединение, клиент запрашивает только один раз, но сервер будет продолжать поддерживать соединение, и когда он снова запрашивает, он избегает повторного установления соединения. .
Обратите внимание, что keep-alive не сохраняет соединение навсегда, а только в течение определенного периода времени.
34. Проблемы безопасности: CSRF и XSS 😭
Основные понятия, принципы атаки и меры защиты CSRF
CSRF (подделка межсайтовых запросов): подделка межсайтовых запросов.
Понимание атак CSRF: Злоумышленник крадет вашу личность и отправляет вредоносные запросы от вашего имени.
Отправка электронных писем от вашего имени, отправка сообщений, кража вашей учетной записи или даже покупка товаров, перевод виртуальной валюты... Вызванные проблемы включают: утечку личной конфиденциальности и безопасность собственности.
Принцип CSRF: (для завершения атаки CSRF)
- Войдите на доверенный веб-сайт А и создайте файл cookie локально.
- Посетите опасный веб-сайт B, не выходя из системы A.
Основная концепция XSS, атаки с использованием междоменных сценариев.
XSS — это уязвимость, возникающая во внешнем интерфейсе Интернета, поэтому объекты, которым она вредит, в основном являются пользователями внешнего интерфейса.
Атака с использованием междоменных сценариев означает, что злоумышленник вставляет вредоносный код сценария на веб-страницу и запускает код сценария в браузере, чтобы злонамеренно атаковать пользователей.
Итак, есть два условия для реализации xss-атаки: во-первых, вредоносный код необходимо внедрить на веб-страницу, а во-вторых, вредоносный код успешно выполняется браузером.
Разница между CSRF и XSS:
- CSRF необходимо войти в систему, получить файлы cookie и использовать уязвимость самого веб-сайта, чтобы запросить API-интерфейс веб-сайта.
- XSS, не нужно входить в систему, внедрять JS-код на веб-сайт, выполнять код в JS и вмешиваться в содержимое веб-сайта.
35. Принцип разделения сети из HTTP-запроса
Иерархический процесс разбора HTTP-запроса:
TCP, который является ориентированным на соединение, надежным протоколом связи транспортного уровня на основе потока байтов.
Функции:
- На основе соединения, перед передачей данных необходимо установить соединение.
- Полный дуплекс, двунаправленная передача
- Поток байтов, неограниченный размер данных, упакованные в сегменты сообщений для обеспечения упорядоченного приема, а повторяющиеся сообщения автоматически отбрасываются
- Буферизация трафика для устранения несоответствия возможностей обработки обеих сторон
- Надежная служба передачи, гарантированная доступность и надежность за счет механизма повторной передачи в случае потери пакетов.
- Контроль перегрузки для предотвращения чрезмерной перегрузки сети
TCP-соединение, адрес источника, порт источника, адрес назначения, порт назначения
С нижнего уровня протокола TCP-IP
Протокол скользящего окна и кумулятивное подтверждение (отложенный ACK)
Размер скользящего окна такой же, как при трехэтапном рукопожатии и согласовании одноранговых узлов через TCP, и зависит от состояния сети.
36. Принципиальный анализ безопасного канала шифрования HTTPS
Что такое протокол HTTPS? Из-за присущих HTTP характеристик "открытого текста" весь процесс передачи полностью прозрачен. Любой может перехватить, изменить или подделать сообщения запроса и ответа в ссылке, и данные не заслуживают доверия.
При использовании HTTPS все HTTP-запросы и ответы шифруются перед отправкой в сеть.
https = http + ssl/tls
对称加密:加密 解密使用同一密钥
非对称加密:公钥-随意分发,私钥-服务器自己保持
公钥加密的数据,只能通过私钥解密
私钥加密的数据,只能公钥能解密
Алгоритм шифрования:
Алгоритм шифрования с симметричным ключом, алгоритмы кодирования и декодирования с использованием одного и того же ключа
Алгоритм шифрования с асимметричным ключом, один открытый ключ, один закрытый ключ, два ключа разные, открытый ключ может быть раскрыт кому угодно, а закрытый ключ строго хранится в секрете.
Установка зашифрованного канала:
Применение и проверка цифровых сертификатов
как подать заявку:
- Создайте свой собственный открытый ключ и закрытый ключ, а сервер хранит закрытый ключ сам
- Отправьте информацию об открытом ключе, компании, доменном имени в агентство CA для сертификации
- Агентство CA проверяет подлинность и законность информации, которую вы отправляете через онлайн- и офлайн-каналы.
- После утверждения информации агентство ЦС выдаст вам сертифицированный цифровой сертификат, включающий открытый ключ, информацию об организации, информацию ЦС, время действия, серийный номер сертификата, и в то же время создается подпись.
- Шаг подписания: хеш (информация в открытом виде, представленная для подачи заявки на сертификат) = дайджест информации
- Затем ЦС использует закрытый ключ ЦС для шифрования дайджеста информации, а зашифрованный текст представляет собой цифровую подпись сертификата.
37. Симметричное шифрование HTTPS, асимметричное шифрование, гибридное шифрование, сертификация CA 😨
HTTPS, протокол безопасности передачи гипертекста, цель — безопасный канал HTTP, а приложение — безопасная передача данных. Хотя протокол HTTP широко используется, он не имеет мелких недостатков безопасности, в основном данных.передача открытого текстаа такжецелостность сообщенияОтсутствие обнаружения.
Протокол HTTPS — это сетевой протокол, созданный на основе HTTP и протокола TLS/SSL для зашифрованной передачи и аутентификации личности.
С помощью цифрового сертификата, алгоритма шифрования, асимметричного ключа и других технологий для полного шифрования передачи данных в Интернете реализуется защита безопасности передачи в Интернете.
Основные возможности HTTPS:
- конфиденциальность данных
- целостность данных
- безопасность проверки личности
Прежде чем клиент и сервер передают данные, они аутентифицируют обе стороны с помощью сертификатов. Клиент инициирует сообщение квитирования SSL на сервер, чтобы запросить соединение, и сервер отправляет сертификат клиенту. Клиент проверяет сертификат сервера, чтобы убедиться, что он выдан органом, выдавшим сертификат, которому он доверяет. Если нет, он оставляет решение о продолжении связи с пользователем. Если проверка верна или пользователь выбирает продолжить, клиент распознает личность сервера.
Сервер требует от клиента отправить сертификат и проверяет, проходит ли он проверку.Если это не удается, соединение закрывается.Если аутентификация проходит успешно, открытый ключ клиента получается из сертификата клиента.
принцип HTTP
Браузер клиента должен сначала установить соединение с сервером через сеть.Соединение выполняется через TCP.Как правило, номер порта TCP-соединения равен 80. После установления соединения клиент отправляет запрос на сервер, после сервер получает запрос и предоставляет соответствующую ответную информацию.
принцип HTTPS
Клиент отправляет список поддерживаемых им алгоритмов и случайное число, используемое для генерации ключа, на сервер, а сервер выбирает алгоритм шифрования из списка алгоритмов и отправляет его и сертификат, содержащий открытый ключ сервера, клиенту. С другой стороны, сертификат также содержит идентификатор сервера для целей аутентификации, а сервер также предоставляет случайное число, используемое для генерации ключа.
Клиент проверяет сертификат сервера и извлекает утилиту сервера, а затем генерирует строку случайной коды, называемую Pre_Master_Secret и шифровать его, используя открытый ключ сервера и передает зашифрованную информацию на сервер.
Клиент и сервер независимо вычисляют шифрование и MAC-ключ в соответствии с Pre_Master_Secret и случайным числом клиента и сервера.
Гибридное шифрование
При передаче данных используется симметричное шифрование, но ключ симметричного шифрования передается с использованием асимметричного шифрования.Гибридное шифрование более безопасно, но невозможно узнать, были ли данные подделаны
Сертификация ЦС
Сертификация CA, то есть услуги электронной сертификации, относится к деятельности по обеспечению проверки подлинности и надежности для всех сторон, участвующих в электронных подписях.
Особенности: См. Энциклопедию Baidu — Введение,нажмите, чтобы войти
38.https контраст http🥶
метод передачи http: передача открытого текста, взаимодействие данных между веб-сайтами или связанными службами и пользователями не зашифровано, что легко отслеживать и подделывать.
Метод передачи HTTPS: к HTTP добавляется уровень SSL для шифрования передачи данных.
HTTP-аутентификация: без какой-либо аутентификации пользователи не могут идентифицировать реальную личность веб-сайта через http.
https-аутентификация: множественная аутентификация CA, включая аутентификацию центра управления доменными именами и т. д.
стоимость http: плата за использование не взимается, все веб-сайты по умолчанию работают в режиме http.
https требует затрат, и вам необходимо подать заявку на сертификат SSL для реализации https.
Порт подключения http: порт 80.
Порт подключения https: порт 443.
39. Как безопасно передать сертификат, что делать, если сертификат потерян? 😳
40. QUIC в http3😵
QUIC — это основанный на UDP протокол транспортного уровня Интернета с малой задержкой, разработанный Google.
1. Избежать блокировки пакетов предзаказа 2. Установить соединение с нулевым RTT 3. Упреждающее исправление ошибок FEC
История HTTP
Различия между установлением соединения HTTP/2 и HTTP/3
TCP/установить соединение установить соединение с QUIC
Начальник отдела блокировки/мультиплексирования линии
HTTP/1.1 предлагает технологию Pipelining, которая позволяет одному TCP-соединению отправлять несколько запросов одновременно.
запрос и ответ, а также Конвейерная обработка
http/1.1 блокировка заголовка строки
Мультиплексирование HTTP/2 решает проблему блокировки заголовка строки
Контроль перегрузки:
- медленный старт
- предотвращение перегрузки
- быстрая ретрансляция
- быстрое восстановление
41. Начало работы с протоколом HTTP
HTTP — это протокол прикладного уровня, основанный на протоколе TCP/IP. Он не предусматривает передачу пакетов. Это основной формат связи между клиентом и сервером. По умолчанию используется порт 80. После установления TCP-соединения клиент запрашивает веб-страницу с сервера.Протокол предусматривает, что сервер может отвечать только на строки в формате HTML и не может отвечать на другие форматы.
http1.0 может передавать текст, изображения, видео, бинарные файлы; помимо метода GET, есть POST, HEAD и т. д.; для каждого сообщения требуется информация заголовка HTTP-заголовок, код состояния, поддержка многосимвольного набора, кеш, разрешения , так далее.
Поле: поле Content-Type
Информация заголовка должна быть в коде ASCII, следующие данные могут быть в любом формате, значение поля:
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
Когда клиент запрашивает, поле Accept используется для указания того, какие форматы данных могут быть приняты.
Accept: */*
Поле Content-Encoding, указывающее метод сжатия данных.
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
Когда клиент запрашивает, поле Accept-Encoding используется для указания того, какие методы сжатия принимаются.
Accept-Encoding: gzip, deflate
http1.0 означает, что каждое TCP-соединение может отправить только один запрос, и после отправки оно будет закрыто, поэтому для решения проблемы используется нестандартное поле Connection Connection:keep-alive.
HTTP/1.1 представил постоянные соединения.Соединения TCP не закрываются по умолчанию и могут повторно использоваться несколькими запросами без объявления Connection: keep-alive.
Он не закрыт навсегда. Если в течение определенного периода времени не будет активности, TCP-соединение будет закрыто. Как правило, для одного и того же доменного имени большинство браузеров позволяют устанавливать 6 постоянных соединений одновременно.
Версия 1.1 представила конвейерный механизм (pipelining), в одном и том же TCP-соединении можно отправлять несколько запросов одновременно. Но все же по порядку, после ответа на один запрос следует ответ на другой запрос. (Но это также сокращает много времени).
использоватьКодирование групповой передачи, если заголовки запроса или ответаИмеет поле Transfer-Encoding
Transfer-Encoding: chunked
Что такое многоработающий? Двустороннее, связь в реальном времени называется несколькими работниками.
HTTP2 мультиплексирует TCP-соединения.В соединении оба конца могут отправлять несколько запросов или ответов одновременно, и нет необходимости переписываться один за другим последовательно, избегая «перегрузки в начале очереди».
В http2 представлен компрессор информации заголовков. Информация заголовка сжимается с помощью gzip или сжатия, а затем отправляется. Клиент и сервер одновременно поддерживают таблицу информации заголовка. Все поля сохраняются в этой таблице для создания порядкового номера, а затем отправляется только порядковый номер, что увеличивает скорость.
HTTP/2 позволяет серверу активно отправлять ресурсы клиенту без запроса (проталкивание сервера).
42. Что такое куки?🥴
Файл cookie — это данные (обычно зашифрованные), которые хранятся на локальном терминале пользователя веб-сайтом для идентификации личности пользователя и отслеживания сеанса, и временно или постоянно хранятся на клиентском компьютере пользователя.
- Данные, хранящиеся на локальном терминале пользователя
- Используется для идентификации личности пользователя
- Сохранено в локальном терминале пользователя
Файл cookie — это некоторые данные, которые хранятся в текстовом файле на вашем компьютере. Когда веб-сервер отправляет веб-страницу в браузер, после закрытия соединения сервер не записывает информацию о пользователе. Функция файла cookie заключается в том, чтобы решить, как записывать пользовательскую информацию клиента.
Сценарий: когда пользователь посещает веб-страницу, информация о пользователе записывается в файл cookie. Когда пользователь посещает страницу в следующий раз, запись о доступе пользователя может быть прочитана в файле cookie.
Файлы cookie хранятся в виде пар ключ-значение. Когда браузер запрашивает веб-страницу с сервера, файл cookie страницы будет добавлен к запросу. Сервер использует этот метод для получения информации о пользователе.
JavaScript можно использовать для создания, чтения, изменения и удаления файлов cookie.
Используйте свойство Document.cookie для создания, чтения и удаления файлов cookie
Создайте:
document.cookie = "username = dadaqianduan";
Добавьте срок действия файла cookie:
document.cookie = "username = dadaqianduan; expires=xxxxxx";
По умолчанию cookie принадлежит текущей странице:
document.cookie = "username = dadaqianduan; expires= ; path=/";
читать куки
var x = document.cookie;
Изменить файлы cookie
document.cookie = "username = dada; expires=xxx; path=/";
Удалите файл cookie и измените параметр expires установленного времени на предыдущее время.
document.cookie = "username = ; expires= xxx";
Почему есть куки? Поскольку HTTP-запрос не имеет протокола, http1.x, протокола без сохранения состояния, клиент отправляет один и тот же запрос несколько раз, и сервер не может определить, отправлен ли он одним и тем же клиентом. .
Файлы cookie — это данные, которые сервер временно сохраняет на вашем компьютере.Это текстовые файлы в формате .txt, чтобы сервер мог идентифицировать ваш компьютер.Когда вы просматриваете веб-сайт, веб-сервер отправляет вам небольшой фрагмент информации. компьютер.
Когда вы в следующий раз посетите тот же веб-сайт, веб-браузер сначала проверит, есть ли какие-либо данные cookie, которые он оставил в прошлый раз, и если да, он выведет вам определенный контент.
принцип cookie
Когда браузер запрашивает сервер в первый раз, сервер отвечает файлом cookie в запросе и отправляет его браузеру. Браузер запрашивает второй раз, неся файл cookie и отправляет его на сервер. Сервер идентифицирует пользователя в соответствии с в файл cookie, а также может изменять содержимое файла cookie.
Если используется доменное имя .baidu.com, файл cookie .baidu.com привязывается к поставщику доменного имени. Междоменные доменные имена не могут быть записаны в файл cookie
Каковы свойства файлов cookie
Name, Value, Domain, Path, Expires/Max-Age, Size, HttpOnly, Secure, SameSite
Мастер HttpOnly в интервью.Если для этого атрибута установлено значение true, вы не можете получить индекс cookie через js-скрипт, который может эффективно предотвращать атаки xss.
HttpOnly и Secure в Cookie:
Файлы cookie, помеченные как безопасные, могут быть отправлены на сервер только запросами, зашифрованными протоколом https. Однако его безопасность не может быть гарантирована.
Если в файле cookie установлен атрибут HttpOnly, информация файла cookie не может быть прочитана через скрипт js, что эффективно предотвращает атаки xss, крадет содержимое файла cookie и повышает безопасность файла cookie, но важная информация не должна храниться в файле cookie. .
Поскольку xss — это атака с использованием межсайтовых сценариев, она представляет собой распространенную уязвимость в веб-программах и представляет собой пассивный метод атаки на стороне клиента.
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
SameSite
Файлы cookie SameSite предотвращают атаки с подделкой межсайтовых запросов (CSRF), позволяя серверам требовать, чтобы файлы cookie не отправлялись в межсайтовых запросах.
Пример:
Set-Cookie: key=value; SameSite=Strict
SameSite имеет три значения:
Нет: браузер продолжает отправлять файлы cookie в рамках одного и того же запроса сайта и межсайтового запроса без учета регистра. (Все трехсторонние запросы будут содержать файлы cookie)
Строгий: браузер будет отправлять файлы cookie только при посещении одного и того же сайта. (Все сторонние ссылки не будут содержать файлы cookie)
Lax: файлы cookie того же сайта будут зарезервированы для некоторых межсайтовых подзапросов, таких как загрузка изображения или вызовы фреймов, но будут отправляться только тогда, когда пользователь переходит по URL-адресу с внешнего сайта. (Только синхронные запросы и запросы на получение могут содержать файлы cookie)
В протоколе https файл cookie безопасного типа может быть установлен через js, а файл cookie безопасного типа не может быть установлен на веб-странице протокола http. По умолчанию файл cookie будет отправлен на сервер как для запросов протокола https, так и для запросов протокола http.
43. Что такое токен? 🤬
Внешний вид токена заключается в том, что клиент часто запрашивает данные с сервера, а сервер часто обращается к базе данных, чтобы запросить имя пользователя и пароль и сравнить их, оценить, верны ли имя пользователя и пароль или нет, и сделать соответствующие подсказки. Токен представляет собой строку строк, сгенерированных сервером в качестве токена для запроса клиентом.При первом входе в систему сервер генерирует токен, возвращает этот токен клиенту, и клиент приносит этот токен, не нужно , чтобы принести его снова. Имя пользователя и пароль недействительны.
Появление токенов снижает нагрузку на сервер и снижает частые запросы к базе данных.
символическое преимущество
- Без гражданства и расширяемый
- безопасность
- Мультиплатформенный кросс-доменный
- основанный на стандартах
Процесс аутентификации на основе токенов
Браузер, введите имя пользователя, пароль, перейдите в mysql, токен успешно сгенерирован после проверки, и токен возвращается клиенту.Когда клиент инициирует запрос, каждый раз, когда осуществляется доступ к API, токен переносится на сервер. После фильтра токен проверяется, после успешной проверки возвращаются данные запроса, после неудачной проверки возвращается код ошибки.
44. куки, сессия, токен😷
Файл cookie, который записывает посещенный веб-сайт или посещаемый веб-сайт, не имеет состояния для протокола HTTP, сервер не знает, что браузер делал при последнем посещении, и не может отследить соединение сеанса пользователя, поэтому файл cookie отправляется сервер в Текстовый файл из клиентского браузера, который содержит информацию о посещениях веб-сайта. Файл cookie хранится на стороне клиента для сохранения информации о сеансе клиента; поскольку он хранится на стороне клиента, его безопасность не может быть полностью гарантирована.
Представление сеанса — это процесс сеанса между сервером и клиентом в архитектуре c/s, который используется для сохранения информации об аутентификации пользователя. Сессия — это механизм хранения HTTP, обеспечивающий механизм сохраняемости. Сессия хранится на стороне сервера, и пользователь проверяет информацию о клиенте. Так как он хранится на сервере, есть определенная гарантия безопасности.
Токен — это метод аутентификации (означает «токен», который в основном используется для проверки личности).
45. Перекрестный домен 🤒
Существует разница в протоколе, имени домена и порте URL-адреса веб-страницы, даже если она является междоменной.
Междоменный: JSONP
46. Сводка по ментальной карте http
47. Поля в http 🤠
- accept, формат данных, request accept, response, content-type, указание формата полученных данных
- accept, метод сжатия, запрос accept-encoding, ответ, content-encoding, какой метод сжатия используется
- принять, язык поддержки, язык принятия запроса, язык содержимого ответа
- принять, набор символов, запрос принять-кодировку, тип содержимого ответа, указанный набор символов
- принять, запрос диапазона, запрос, если диапазон и диапазон, ответ принять и диапазон содержимого
- cookie, информация о файлах cookie, передаваемая серверу при запросе
- set-cookie, заголовок ответного сообщения устанавливает информацию о cookie, которая будет передана клиенту.
- разрешить, какие методы HTTP поддерживаются
- last-modified, время последней модификации ресурса
- истекает, установите дату отказа кэша ресурсов
- content-language, язык ресурсов объекта
- content-encoding, формат кодирования объекта
- Content-length, единица размера основного тела сущности — байт.
- content-range, какой диапазон сущностей возвращается
- тип содержимого, какие типы
- accept-ranges, запросы диапазонов обработаны
- age, сообщает клиенту, как давно сервер создал ответ
- варить, кешировать информацию о прокси-сервере
- местоположение, используемое для указания перенаправленного URI
- Если-Match, значение является уникальным идентификатором ресурса
- User-Agent, который передает на сервер такую информацию, как имя браузера и пользовательского агента, создавшего запрос.
- Transfer-Encoding, метод кодирования тела передаваемого сообщения.
- подключение, управление постоянными подключениями, поддержание активности, закрытие
- Cache-Control, который контролирует надежный кеш браузера.
48. Если на собеседовании спросят, какова структура HTTP-сообщения, сможете ли вы ответить на него?
Для TCP
起始行 + 头部 + 空行 + 实体
- сообщение запроса
GET /home HTTP/1.1
- ответное сообщение
HTTP/1.1 200 OK
Пустые строки используются для разделения заголовков и объектов.
49. Если на собеседовании спросят, каковы методы HTTP-запроса, можете ли вы на него ответить? 🤥
- Метод GET, используемый для получения ресурсов
- Метод POST, используемый для отправки данных
- Метод PUT для изменения данных
- Удалить метод, используемый для удаления ресурсов
- Метод OPTIONS, используемый для междоменных запросов.
- Метод HEAD, используемый для получения метаинформации ресурса.
- Метод CONNECT, используемый для установления соединения с прокси-сервером.
50. Если в интервью вас спросят, как вы понимаете URI, сможете ли вы на него ответить? 🤫
Универсальный указатель ресурса URL, URI, универсальный идентификатор ресурса. URI используются для различения различных ресурсов в Интернете.
URI содержит URN и URL.
Структура URL:
Имя протокола, информация о пользователе хоста для входа в систему, имя хоста и порт, путь запроса, параметры запроса и привязка в URI для поиска ресурса.
51. Если на собеседовании вас спросят, что вы знаете о кодах состояния HTTP, сможете ли вы ответить?
Узнайте о некоторых конкретных кодах состояния HTTP:
52. Если вас спросят на собеседовании, расскажите об особенностях и недостатках HTTP, сможете ли вы на него ответить?
особенность:
- Гибкость и масштабируемость
- надежная передача
- без гражданства и др.
слабость это:
- нет статуса
- передача открытого текста
- проблема с блокировкой очереди
53. Если вы будете задавать вопросы, расскажите о своем понимании поля «Принять», можете ли вы ответить?
- Формат данных
- Метод сжатия
- Поддерживаемые языки
- набор символов
54. Если на собеседовании спросят, в чем проблема блокирования начальства, можете ли вы на него ответить? 🤭
TCP — это сообщение, HTTP — это запрос.
Для решения проблем блокировки HTTP-заголовков являются: одновременные соединения и фрагментация доменного имени.
55.如果面试问,说说你对HTTP代理的理解,你能回答上来不? 🧐
Функции прокси-сервера: 1. Балансировка нагрузки, 2. Обеспечение безопасности (используйте механизм сердцебиения для мониторинга сервера и выкиньте его из кластера, как только будет обнаружена неисправная машина), 3. Кэширование прокси.
Понимание кэширования прокси:
- Хранение страниц, загруженных прокси-сервером;
- Прокси-сервер предоставляет канал для нескольких пользователей;
- Буферизованные прокси позволяют прокси-серверу уменьшить количество запросов к одной и той же странице на том же веб-сайте.
- Как только пользователь прокси-сервера запрашивает страницу, прокси-сервер сохраняет страницу для обслуживания того же запроса от других пользователей.
- Кэширование прокси, эта обработка уменьшает, когда пользователи времени ожидают отображаемой страницы
Роль кэша:
Копия ресурса, сохраненная на локальном диске прокси-сервера или клиента, может уменьшить доступ к исходному серверу за счет использования кеша, что может сэкономить коммуникационный трафик и время связи.
Пример:
Cache-Control: max-age=300;
Указывает временной интервал, в течение 300 с временного интервала повторного запроса он будет получен в кеше, иначе будет на сервере
Cache-Control:
- public означает, что ответ может быть кэширован любым промежуточным узлом
- частный означает, что промежуточные узлы не разрешают кэширование
- no-cache означает, что метод управления кешем Cache-Control не используется для предварительной проверки.
- no-store означает, что ничего не кешируется
- max-age указывает действительное время текущего ресурса
Сильное кэширование: браузер извлекает данные напрямую из локального хранилища, не взаимодействуя с сервером.
Согласованный кеш: браузер отправляет запрос на сервер, и браузер определяет, можно ли использовать локальный кеш.
Научитесь понимать сильное кэширование 👍:
Сильное кэширование в основном изучает истечение срока действия и управление кешем
cache-control это поле: max-age, s-maxage, public, private, no-cache, no-store.
cache-control: public, max-age=3600, s-maxage=3600
- Указывает, через сколько секунд после того, как ресурс станет недействительным
- s-maxage имеет приоритет над max-age
- В прокси-сервере работает только s-maxage
общественное и частное
- public означает, что ресурс может кэшироваться всеми клиентами и прокси.
- частный означает, что ресурс может кэшироваться только клиентом
Когда браузер запрашивает файл, сервер настраивает кэш в заголовке ответа:
Выражается как: управление кешем заголовка ответа
Научитесь понимать ✍ Согласование кэширования:
Настройки в шапке ответа
etag: 'xxxx-xxx
last-modified: xx, 24 Dec xxx xxx:xx:xx GMT
56. Если на собеседовании спросят, HTTP/2, можете ли вы ответить? 🤓
HTTP/2 использует кодировку Хаффмана для сжатия целых чисел и строк, что позволяет достичь высокой степени сжатия от 50% до 90%.
пуш сервера
57.b / s Определение структуры 😈
Структура браузер-сервер, структура B/S, клиенту не нужно устанавливать специальное ПО, нужен только браузер, который взаимодействует с базой данных через веб-сервер, который легко может работать на разных платформах.
Структура B/S упрощает работу клиента.Она производится с развитием интернет-технологий и совершенствует технологию C/S.Однако работа серверной части при такой структуре тяжелее, а требования к производительности сервера выше.
58. Универсальный идентификатор ресурса URI 👿
Унифицированный идентификатор ресурса — это строка, используемая для идентификации имени интернет-ресурса. Идентификация позволяет пользователям взаимодействовать с ресурсами в сети через определенный протокол. Общепринятой формой URI является унифицированный указатель ресурса (URL), а URN — унифицированное имя ресурса. Идентификатор, используемый для дополнения URL-адреса в конкретном ресурсе пространства команд.
59. Протокол HTTP 👹
Протокол передачи гипертекста HTTP является наиболее широко используемым сетевым протоколом Интернета. HTTP изначально был разработан для предоставления метода публикации и получения HTML-страниц. По протоколу HTTP или HTTPS запрошенный ресурс идентифицируется единым идентификатором ресурса.
Основные особенности HTTP-протокола
60. Канал передачи данных 🔪 — Уровень канала передачи данных
Канальный уровень: Ethernet, беспроводная локальная сеть, PPP. . . (Беспроводной, оптоволоконный...)
- Знание каналов передачи данных играет важную роль в понимании TCP/IP и сетей.
- Протокол канального уровня определяет спецификации для передачи устройств, соединенных между собой через коммуникационную среду.
- Физический уровень заключается в преобразовании фактической среды связи, такой как уровень напряжения, сила радиоволн и других сигналов с двоичным кодом 01.
- Данные, обрабатываемые канальным уровнем, представляют собой тип блоков, сгруппированных в «кадры».
- WLAN, беспроводная локальная сеть
- PPP, протокол «точка-точка», представляет собой протокол 1-к-1 для подключения компьютеров.
- ATM, метод асинхронной передачи
Канал передачи данных — это протокол, позволяющий компьютерам в Интернете взаимодействовать друг с другом, средство связи.
- MAC-адреса используются для идентификации узлов, соединенных между собой каналом передачи данных.
- Беспроводная связь использует электромагнитные волны, инфракрасные лучи, лазеры и т. д. для передачи данных. Высокоскоростные соединения, обычно формируемые в локальной сети офиса, называются беспроводными локальными сетями.
- IP-X-X-X, построить X-X-X в сети IP, поставщик сетевого обслуживания предоставляет услугу, которая использует технологию MPLS для создания X-X-X в сети IP.
И разница UDP 61.TCP
TCP — этоОриентированный на соединение, надежный, основанный на потоках байтовпротокол транспортного уровня.
УДП — этобез соединенияпротокол транспортного уровня.
TCP - это соединение, соединение на стороне клиента и сервера, две стороны взаимодействуют друг с другом, TCP требует трех рукопожатий для установления соединения, а UDP не устанавливает процесс соединения.
tcp ориентирован на байты, udp ориентирован на пакеты. Передача данных UDP основана на дейтаграммах.TCP наследует характеристики уровня IP.Чтобы поддерживать состояние,TCP преобразует пакеты IP в потоки байтов.
Диаграмма формата пакета TCP:
- Серийный номер: серийный номер Seq, занимающий 32 бита, идентифицирующий поток байтов, отправленный из порта источника TCP в порт назначения, когда инициатор отправляет данные, он помечается
- Порядковый номер подтверждения: порядковый номер подтверждения, занимающий 32 бита, только когда бит флага ACK равен 1, поле порядкового номера подтверждения действительно, Ack=Seq+1
- Биты флага: всего 6, а именно URG, ACK, PSH, RST, SYN, FIN и т. д.
- URG, срочно значит эффективно
- ACK, подтверждающий, что серийный номер действителен
- RST, сброс соединения
- SYN, инициировать новое соединение
- FIN, разорвать соединение
- PSH, получатель должен как можно скорее передать это сообщение прикладному уровню.
62. Трёхстороннее рукопожатие для установления соединения
Процесс трехэтапного рукопожатия TCP:
Существует карта, чтобы узнать все в закрытом состоянии, сервер начинает слушать порт в статусу слушающего статуса, клиент инициирует запрос, отправляемый SYN, SEQ = X, а затем состояния изменяются в состоянии синхронизации.
Сторона сервера получает возврат syn и ack, seq=x, ack=x+1, после чего состояние становится состоянием syn-rcvd.
После того, как клиент его получает, он отправляет ack, seq=x+1, ack=y+1 на сервер, и статус устанавливается, а после получения сервером статус устанавливается.
В процессе соединения серийный номер TCP-пакета должен использоваться, если требуется одноранговое подтверждение. SYN использует порядковый номер, а ACK — нет.
Четырехстороннее рукопожатие является избыточным для соединения, а второе рукопожатие приведет к пустой трате ресурсов.При потере пакета, повторной передаче и закрытии соединения, а потерянный пакет достигает сервера, соединение устанавливается дефолт и клиент можно закрыть.так три раза просто пожать друг другу руки.
63. Четыре волны для отключения
Процесс четырехкратной завивки ПТС
Три волны, когда сервер объединяет ack и fin в одну волну, это вызовет большую задержку, так что клиент ошибочно думает, что fin не дошел до клиента, так что клиент постоянно пересылает fin.
64. Скользящее окно TCP
Скользящее окно TCP:
- окно отправки
- окно получения
65. Контроль перегрузки TCP?
TCP-соединение, контроль перегрузки:
- Окно перегрузки (cwnd)
- Порог медленного запуска (ssthresh)
Четыре уровня протокола TCP/IP
- Прикладной уровень определяет коммуникационные действия при предоставлении прикладных услуг пользователям.
- Транспортный уровень обеспечивает передачу данных между двумя компьютерами при сетевом подключении к верхнему прикладному уровню.
- Сетевой уровень используется для обработки пакетов, проходящих по сети.
- Сножный слой, который обрабатывает аппаратную часть соединения сети.
- Обязанности протокола HTTP, создание пакетов HTTP-запросов для целевых веб-серверов
- Обязанности протокола tcp, для облегчения связи сообщение HTTP-запроса делится на сегменты
- Ответственность протокола IP, поиск адреса другой стороны и передача при передаче
- Протокол TCP отвечает за повторную сборку сегмента, полученного от другой стороны, повторную сборку пришедшего сегмента и повторную сборку сообщения запроса в исходном порядке в соответствии с порядковым номером.
66. Узнайте о DNS
DNS — это система разрешения доменных имен, ее функция очень проста — узнать соответствующий IP-адрес по доменному имени.
- Найдите запись NS и запись A сервера доменных имен верхнего уровня с корневого сервера доменных имен, IP-адрес
- Найдите запись NS и запись A вторичного сервера доменных имен с сервера доменных имен верхнего уровня, IP-адрес
- Найдите IP-адрес имени хоста на вторичном сервере имен.
использованная литература
- Подробное объяснение основ запросов сегментации браузера — диапазон, чтобы помочь вам понять основы возобновления передачи
- Принцип реализации протокола HTTP/2 "мультиплексирование"
- Изучение протокола — сводка структуры кадра HTTP2
- HTTP/2 за кулисами
- (Рекомендуемая коллекция) спросила протокол Soul TCP, консолидируйте вашу базовую сеть
- https
- Начало работы с протоколом HTTP
- HTTP cookies
- [2] Серия ShutdownHTTP — статьи о HTTP-сообщениях
- «Как подключен Интернет»
- "Иллюстрированный TCP/IP"
- (Рекомендуется интенсивное чтение) Душа HTTP, укрепите свою систему знаний HTTP
Обратите внимание, не потеряйтесь
Вы можете столкнуться с тем, что вы платите людям плохо ~
Включая интерфейс Vue, JavaScript, структуры данных и алгоритмы, практические упражнения, технологию первого уровня с полным стеком Node, не отставая от темпов развития отрасли, программист Дада, который любит интерфейс.
Ну все,выше все содержание этой статьи.Люди которые здесь видят таланты. Я буду продолжать обновлять статьи, связанные с сетевыми технологиями, в будущем.Если вы считаете, что статья полезна для вас, пожалуйста, поставьте лайк и поделитесь, спасибо! !
Друзья, которым понравилась эта статья, можете долго нажимать на картинку, чтобы следить за интерфейсом общедоступного номера Dada и смотреть более захватывающий контент.