предисловие
Привет всем, я 吒'er👦. Если я буду усердно работать каждый день, я могу получить повышение по службе и прибавку к зарплате. Я стану генеральным директором и стану генеральным директором. Я выйду замуж за Бай Фумей и пойду на пик моя жизнь.
Это содержание моей 12-й статьи✍, я надеюсь, что смогу объяснить каждый пункт знаний, (конечно, если вы ничего не понимаете, вы можете обсудить это в области комментариев!) ⏰, время начинается!
Если вы считаете эту статью полезной, ставьте лайки, добавляйте в закладки, комментируйте и оставляйте свои следы 👣, я бы хотел поговорить об этом 😃
Чтобы научиться читать содержание этой статьи, по-прежнему требуется немного фундаментальной сетевой основы, по крайней мере, вы использовали интерфейс и знаете о внутренней части. (Учащиеся, которые также немного разбираются в сети, но мало о ней знают)
Очень важно изучить протокол Http.Чтобы понять протокол Http, вы можете понять взаимодействие между интерфейсом и сервером веб-приложений и т. д.
HTTP
Что такое HTTP, HTTPS, HTTP2, DNS, TCP, CDN и т.д. в сети, вы запутались? У тебя много вопросительных знаков, малыш? 😧
Интернет основан на протоколе HTTP
Итак, начнем с протокола HTTP, протокола HTTP:
Особенности: 1. Простой и быстрый, 2. Гибкий, 3. Без соединения, 4. Без сохранения состояния (HTTP — это протокол без сохранения состояния, который не сохраняет состояние — хотя это протокол без сохранения состояния из HTTP/1.1, чтобы реализовать функцию поддержание состояния, Внедрена технология Cookie, с помощью которой можно управлять состоянием). (запомнить)
HTTP-сообщение: сообщение запроса, сообщение ответа
Сообщение запроса:
- Строка запроса: метод запроса, URL-адрес запроса, протокол и версия HTTP;
- Заголовки запроса, которые информируют сервер о запросе клиента
- Пустая строка, отправить возврат каретки и перевод строки
Ответное сообщение:
- строка состояния
- заголовок ответа
- пустая строка
- тело ответа
HTTP-метод:
Основной метод GET получает данные, а метод POST передает ресурсы
Метод PUT обновляет ресурс, метод DELETE удаляет ресурс, а метод HEAD получает заголовок сообщения.
Конечно, как код состояния HTTP, обычно используемый программистами:
Из описания большинство людей должно понять эту часть сравнения, верно? Так что дальше я добавлю немного контента.
Давайте разберемся с основами веб-сети, мы знаем, что мы используем протокол HTTP для доступа в Интернет, поэтому знаете ли вы, как отображается веб-страница, когда мы вводим URL-адрес в адресную строку веб-браузера?
Первый шаг 👣, браузер отправляет анализ доменного имени DNS в соответствии с запрошенным URL-адресом, находит реальный IP-адрес и инициирует запрос на сервер.
Второй шаг👣, после передачи сервера в фон для обработки возвращаются данные ответа, и браузер получает файл.
Третий шаг👣, браузер анализирует загруженные ресурсы (по URL-адресу, указанному в адресной строке веб-браузера, веб-браузер получает такую информацию, как файловые ресурсы, с веб-сервера) и устанавливает соответствующую внутреннюю структуру данных.
Четвертый шаг👣, браузер загружает проанализированный файл ресурсов, выполняет рендеринг страницы и представляет веб-страницу.
Таким образом, даже если вы не понимаете, как это работает, вы все равно можете увидеть веб-страницу.
Клиент получает ресурсы сервера через указанный адрес доступа, и сервер взаимодействует с использованием протокола HTTP для доставки ресурсов клиенту.
После ввода URL в адресной строке браузера информация будет куда-то отправлена, а затем полученный оттуда ответ будет отображаться на веб-странице.
Итак, протокол HTTP — это протокол передачи гипертекста, транспортный протокол для передачи гипертекста с сервера World Wide Web в локальный браузер.
HTTP основан на протоколе связи TCP/IP для передачи данных, в основном в формате связи между клиентом и сервером, и не включает передачу пакетов данных.
Итак, что такое основы сети TCP/IP
Основы сети TCP/IP
Конечно, когда дело доходит до сетевых основ TCP/IP, необходимо понимать семейство протоколов TCP/IP!
Обычно используемая сеть работает на основе набора базовых сетевых протоколов TCP/IP, поэтому, плюс к тому, что только что было сказано, HTTP является ее подмножеством (подмножеством? Математическое понятие) внутри нее.
Протокол - это определение правил. Обе стороны должны определить правила и определить их заранее, прежде чем они смогут общаться друг с другом. Основа сети TCP/IP - это общий термин для различных семейств протоколов, связанных с Интернетом.
В схематическом HTTP набор протоколов TCP/IP разделен на 4 уровня: прикладной уровень, транспортный уровень, сетевой уровень и уровень канала передачи данных (многоуровневый).
Сетевая связь с использованием набора протоколов TCP/IP:
Общайтесь друг с другом через иерархический порядок, отправитель (клиент) спускается с прикладного уровня, а получатель (сервер) переходит с канального уровня на прикладной уровень.
А именно: клиент, прикладной уровень (HTTP-клиент) ➡, транспортный уровень (TCP) ➡, сетевой уровень (IP) ➡, канальный уровень (сеть) ➡; серверная часть, прикладной уровень (HTTP-серверная сторона), ⬅ транспортный уровень (TCP) , ⬅ сетевой уровень (IP), ⬅ канальный уровень (сеть).
Процесс отправки HTTP-запроса от отправителя к получателю:
Отправитель добавляет заголовок каждый раз, когда он проходит через слой, а получатель удаляет заголовок каждый раз, когда он проходит через слой. Отправитель инициирует HTTP-запрос, от отправителя: прикладной уровень, данные HTTP (сообщение HTTP) ➡, получает заголовок TCP на транспортный уровень, то есть заголовок TCP содержит данные HTTP ➡, получает IP-пакет на сетевой уровень , то есть заголовок IP содержит заголовок TCP, заголовок TCP содержит данные HTTP➡, получает сетевую архитектуру на канальный уровень, то есть заголовок Ethernet содержит заголовок IP, заголовок IP содержит заголовок TCP, а Заголовок TCP содержит данные HTTP. На стороне отправителя такая передача.
Затем канальный уровень передающей стороны передается на канальный уровень принимающей стороны, то есть через каждый уровень заголовок, а значит, передаваемые данные HTTP, (заголовок Ethernet 👉IP-заголовок 👉TCP-заголовок 👉HTTP-данные), от отправителя к принимающей стороне принимающая сторона поднимается на каждый уровень для удаления заголовка (то есть от уровня ссылки к прикладному уровню), поэтому после того, как уровень ссылки принимающей стороны переходит на сетевой уровень для удаления заголовок (P-заголовок 👉TCP-заголовок 👉HTTP-данные) и т. д. На прикладном уровне принимающей стороны остаются данные HTTP.
Некоторые люди говорят, а как насчет семиуровневого протокола в компьютерной сети? Да, есть семь слоев, но это не повлияет.Поговорим о семиуровневом протоколе, и кстати.
На хосте: прикладной уровень, уровень представления, сеансовый уровень, транспортный уровень; в сети: сетевой уровень, канальный уровень, физический уровень.
Вышеупомянутые точки знаний могут быть изучены и освоены по частям.
Разница между GET и POST в HTTP
Блуждая по интернету, я увидел статью "99% людей неправильно понимают разницу между GET и POST в HTTP".
Говоря, что GET и POST имеют одно существенное различие, GET создает один TCP-пакет, а POST — два TCP-пакета.
В запросе GET браузер отправляет заголовок http и данные вместе, сервер отвечает 200, а для POST браузер отправляет заголовок, сервер отвечает 100 continue, браузер снова отправляет данные, и сервер отвечает с 200.
Потом я увидел эту статью «Я слышал, что «99% людей понимают разницу между GET и POST в HTTP»? ? «Вывод таков, что 99% информации о том, что GET отправляет один пакет, POST отправляет два пакета, вероятно, получены из этой статьи «XMLHttpRequest (XHR) использует несколько пакетов для HTTP POST?» Вы можете проверить это сами! (Предлагайте много своих собственных мыслей, продолжайте спрашивать, почему, чтобы расширить границы своих знаний)
Сколько HTTP-запросов может отправить TCP-соединение?
Итак, сколько http можно отправить в TCP-соединении? 😉 должно быть так, что если tcp соединение не разорвано, то можно посылать запросы все время, а можно посылать случайно не разъединяясь.HTTP2 можно распараллелить в одно соединение, а HTTP/1.1 нельзя. (Вы можете включить конвейерную обработку, http1.1, но конвейерная обработка не включена по умолчанию в браузере)
(такое ощущение, что это должно быть связано с состоянием сети, быстрее другого не будет)
Будет ли разорвано TCP-соединение после завершения HTTP-запроса?
В HTTP/1.0 сервер отключает соединение TCP после отправки ответа HTTP. Но этот запрос переустановит TCP-соединение с портом, что слишком дорого.
Если сервер поддерживает заголовок Connection: keep-alive. Указывает, что после завершения HTTP-запроса TCP-соединение, которое использует TCP для HTTP-запроса, не нужно отключать, которое можно использовать повторно, и TCP-соединение не нужно повторно устанавливать после отправки HTTP-запроса.
Поддержание соединения дает много преимуществ, поэтому в HTTP/1.1 заголовок Connection прописан в стандарте. Если он не закрыт, TCP-соединение будет поддерживаться в течение определенного периода времени. По умолчанию TCP-соединение не будет Только если в заголовке запроса объявлено Connection: close Соединение будет закрыто после завершения запроса.
Одно TCP-соединение может отправлять несколько HTTP-запросов, если соединение поддерживается.
Можно ли отправлять HTTP-запросы, отправленные в одном TCP-соединении, вместе?
Чтобы решить эту проблему в PiPelining: (Что такое Pipelining)
Как показано на рисунке:
После того, как эта проблема будет решена, давайте взглянем на IP, TCP и DNS (сначала кратко объясним, а может и углубимся)
IP, TCP и DNS
Говоря о трех протоколах IP, TCP и DNS, конечно, в сетевой коммуникации задействованы уровни, так что я должен говорить об этом или забыть.
TCP/IP — это тип системы протоколов, который представляет собой набор протоколов, используемых для сетевого взаимодействия.
формат заголовка tcp
формат заголовка
IP-протокол, отвечающий за передачу, IP-протокол (расположенный на сетевом уровне), почти все системы, использующие сеть, используют IP-протокол. Роль IP-протокола заключается в передаче различных пакетов данных другой стороне. Необходимо два важных условия. необходимо убедиться, IP-адрес (указывает адрес, которому назначен узел, IP-адрес можно изменить) и MAC-адрес (относится к фиксированному адресу, которому принадлежит сетевая карта, и MAC-адрес в основном не будет измененный).
Протокол ARP используется для связи через MAC-адрес (а ARP — это протокол, используемый для разрешения адресов, и соответствующий MAC-адрес может быть обратно проверен через IP-адрес взаимодействующей стороны). Протокол ARP используется для поиска следующего транзитного адреса с использованием MAC-адреса следующего транзитного устройства, когда двум взаимодействующим сторонам необходимо пройти через несколько компьютеров и сетевых устройств, чтобы добраться до другой стороны. (Если курьерская компания, как лицо, отправляющее курьера, знает только о том, что ваш курьер был доставлен курьерской компании, вы не можете понять детали курьерского процесса во время курьерского процесса)
То есть, когда отправитель отправляет пакет данных (экспресс-пакет) на определенный IP-адрес, он будет ретранслироваться через протокол ARP, и пакет данных будет отправлен на ретрансляционную станцию MAC-адреса (маршрутизатор), а затем прибыть на следующий адрес ретрансляции (от предыдущего ретранслятора).Поиск адреса (отправить на следующий транзитный адрес) и, наконец, достичь принимающей стороны.
пакет данных:
Я знаю, что протокол ARP используется в процессе связи MAC-адреса, но это используется в том случае, когда две взаимодействующие стороны редко находятся в одной и той же локальной сети.
Для обеспечения надежности используется протокол TCP, расположенный на транспортном уровне и предоставляющий услуги потока байтов.
Услуга байтового потока заключается в разделении больших блоков данных на пакеты данных в единицах сегментов сообщений для управления (главным образом для удобства передачи).
И здесь, чтобы обеспечить надежную доставку данных, вот протокол TCP, который, как мы часто говорим, использует трехстороннее рукопожатие, чтобы гарантировать точную доставку данных в пункт назначения. (TCP устанавливает соединение - три рукопожатия, TCP разрывает соединение - четыре волны (будет рассмотрено позже))
Три рукопожатия, четыре волны
Флаг TCP, сигнал синхронизации SYN (синхронизация) и сигнал подтверждения ACK (подтверждение) используются в процессе рукопожатия.
Процесс описания: (трехстороннее рукопожатие)
Первое рукопожатие: отправитель отправляет пакет данных, помеченный SYN, получателю и ждет, пока его получит другая сторона.
Второе рукопожатие: после получения получатель отправляет пакет данных, помеченный SYN/ACK, для передачи информации подтверждения.
Третье рукопожатие: после того, как отправитель получил его, он отправляет обратно пакет данных с отметкой ACK получателю и рукопожатия для его получения.
Отправитель отправляет пакет данных, помеченный SYN, получателю. После того, как получатель его получит, он отправляет пакет, помеченный SYN/ACK, отправителю. После того, как отправитель его получит, он отправляет пакет, помеченный ACK, получателю. .
Как показано на рисунке: (SYN, ACK — управляющие биты в TCP-пакете)
Процесс описания таков: помахать четыре раза
Обычно мы привыкли запоминать доменные имена, но машины идентифицируют друг друга по IP-адресам, и между доменными именами и IP-адресами существует однозначное соответствие, преобразование между которыми называется разрешением доменного имени, а разрешение доменного имени необходимо выполняться выделенным сервером разрешения доменных имен.
Таким образом, для этого требуется, чтобы служба DNS отвечала за разрешение доменного имени.
Служба DNS отвечает за разрешение доменного имени
Служба DNS, отвечающая за разрешение доменного имени, должна запрашивать определенный IP-адрес через доменное имя.
Когда клиент делает запрос, он ищет в кэше на локальном компьютере.Если информацию о запросе нельзя получить локально, запрос запроса будет отправлен на DNS-сервер.
Вначале клиент отправляет запрос доменного имени на локальный DNS-сервер и ищет в записях области, управляемой сервером, если запись будет найдена, он будет использовать эту запись для анализа, если области нет информация, соответствующая требованиям запроса, не может быть найдена локально.Информация, запрошенная клиентом, отправляет запрос на DNS-сервер имени корневого домена, который отвечает за синтаксический анализ корневой доменной части запроса клиента, и возвращает адрес DNS-сервера. содержащую информацию о доменном имени следующего уровня для адреса DNS-сервера клиента. Найдите соответствующую информацию об IP-адресе на DNS-сервере доменного имени.
Служба DNS — это протокол на прикладном уровне, который обеспечивает службы разрешения между доменными именами и IP-адресами. (Служба DNS может быть добавлена к знаниям о службах покупки и разрешения доменных имен, которые легче понять. Это компьютер, который не получает доступ через IP-адрес, но использует имя хоста или доменное имя для доступа к компьютеру другой стороны), он обеспечивает поиск IP по доменному имени. Вы также можете искать доменное имя по IP-адресу в обратном порядке.
Подробный процесс заключается в том, что отправитель отправляет запрос в DNS, чтобы сообщить мне IP-адрес под доменным именем.После того, как DNS получает его, он возвращает соответствующий IP-адрес отправителю, и отправитель может отправить запрос на доступ к сети. сервера через IP-адрес.
Итак, в соответствии с приведенным выше резюме, я могу описать процесс связи по протоколу HTTP:
Коммуникационный процесс протокола HTTP
Клиент (браузер) обращается к веб-странице доменного имени в адресной строке и отправляет запрос в DNS на соответствующий IP-адрес.Браузер запрашивает ресурсы страницы под доменным именем на веб-странице через доменное имя, и протокол HTTP сгенерирует HTTP-запрос к целевому веб-серверу. Протокол TCP предназначен для разделения сообщения HTTP-запроса на сегменты сообщений и надежной передачи их другой стороне. Через место, отвечающее за IP-протокол (станцию передачи пакетов), найдите маршрутизатор с MAC-адресом другой стороны и передайте его при передаче. Когда оно поступает на сервер другой стороны (определенный IP-адрес), протокол TCP отвечает за получение полученного сегмента сообщения от другой стороны, а рекомбинация поступает в исходном порядке в соответствии с порядковым номером, а протокол HTTP обрабатывает контент, запрошенный веб-сервером.
Этот процесс представляет собой передачу с прикладного уровня, транспортного уровня, сетевого уровня и канального уровня.
Что такое сообщение запроса, которое клиент отправляет HTTP-запрос на сервер?
Поскольку выше упоминалось о сообщении запроса, то сообщение запроса в целом выглядит следующим образом:
Это сообщение-запрос клиента, оно же есть и у сервера.После получения результат возвращается в виде ответного сообщения:
В форме опишите GET для извлечения ресурса:
иллюстрировать | описывать |
---|---|
просить | GET /index.html HTTP/1.1 |
отклик | вернутьindex.html ресурсы страницы |
Таким образом, сообщение HTTP используется для обмена информацией по протоколу HTTP, а сообщение представляет собой строковый текст, состоящий из нескольких строк данных. Он примерно разделен на две части: заголовок сообщения и тело сообщения.
структура сообщения
Структура сообщения-запроса и ответного сообщения (найдите следующие изображения для объяснения)
Конечно, если это недостаточно ясно, я снова нашел несколько картинок:
заголовок запроса
тело запроса
строка состояния
заголовок ответа
тело ответа
На данный момент некоторые точки знаний выше - это URL-адрес, введенный в адресную строку. URL-адрес следует произносить чаще, этотот же локатор ресурсов, на английском языке это (унифицированный указатель ресурсов). url — адрес веб-страницы, введенный в адресной строке.
URI
Говоря об URL, нам нужно знать об URI, этотот же идентификатор ресурса. Узнать оАбсолютный формат URI.
URI обычно находят ресурсы в Интернете и обеспечивают доступ к ресурсам в любом месте в Интернете (протокол HTTP использует URI, чтобы позволить клиентам находить ресурсы). Как показано ниже:
Быстро убедитесь, что друзья здесь должны хорошо разбираться в HTTP.
Разница между GET и POST?
Подойдите к общим вопросам тестового собеседования: разница между GET и POST?
- GET не будет запрашивать снова, когда браузер откажет, а POST снова отправит запрос
- GET-запросы будут активно кешироваться браузером, а POST-запросы — нет, это нужно настроить вручную.
- Параметры запроса GET будут полностью сохранены в истории браузера, параметры POST не будут
- Параметры, отправленные в URL-адресе запроса GET, ограничены по длине, в то время как POST не имеет ограничений.
- Параметры GET передаются через URL, а POST помещается в тело запроса.
Четыре версии HTTP
Это HTTP1.0, HTTP1.1, HTTP/2, HTTP/3.
HTTP1.0 — это короткое соединение по умолчанию, каждый раз, когда вы взаимодействуете с сервером, вам нужно открывать новое соединение.
Версия HTTP1.1, постоянное соединение по умолчанию, если порт явно не предлагается, он всегда будет поддерживаться, вы можете отправлять несколько HTTP-запросов, и основное внимание уделяется возобновлению точки останова, используя заголовок HTTP-сообщения для использования блока кодирование передачи, тело объекта передается блоками.
Протокол HTTPS теперь используется некоторыми веб-сайтами.
В сети, когда клиент взаимодействует с сервером, он может быть заложником.Необходимо использовать CA (агентство общественного доверия), чтобы помочь клиенту определить, что сервер является подлинным.
В это время необходимо подать заявку на получение цифрового сертификата.Цифровой сертификат содержит такую информацию, как владелец сертификата, срок действия сертификата и открытый ключ сервера.
Клиент расшифровывает сертификат с помощью открытого ключа ЦС (сертификат расшифровывается с помощью закрытого ключа ЦС, а затем клиент расшифровывает с помощью открытого ключа ЦС).
Процесс показан на рисунке ниже:
Конвейерная обработка и постоянные соединения
Трубопроводы поддерживаются только в HTTP / 1.1, под предпосылкой постоянного запроса подключения передачи по одноразовой упаковке, одноразовая упаковка передается обратно в ответ.
С появлением конвейерной технологии следующий запрос можно отправить напрямую, не дожидаясь ответа.
В HTTP 1.1 все ссылки по умолчанию являются постоянными соединениями, использующими одно и то же TCP-соединение для отправки и получения нескольких HTTP-запросов или ответов.
Постоянные соединения (постоянные соединения HTTP, также известные как HTTP keep-alive или повторное использование HTTP-соединений)
выгода:
- Снижение накладных расходов, вызванных повторным установлением и отключением TCP-соединений.
- Снизить нагрузку на серверную часть
- Веб-страницы отображаются быстрее
Печенье, чтобы понять
Технология файлов cookie контролирует состояние клиента, записывая информацию о файлах cookie в сообщения запроса и ответа.
перекрестный домен
Что такое политика одинакового происхождения
Политика одного и того же происхождения является соглашением, и это основная функция безопасности браузера.Так называемое одно и то же происхождение означает, что три «протокол + доменное имя + порт» одинаковы.
Междоменный означает, что запрос может быть отправлен, сервер может принять запрос и нормально вернуть результат, но результат перехватывается браузером.
Решите кросс-домены:
Есть jsonp, iframes, cors, img, HTML5 postMessage и многое другое. Принцип использования html-тегов для междоменного использования заключается в том, что html не зависит от политики одного и того же происхождения. Но просто примите метод запроса Get, это понятно.
Принцип JSONP, использование js-запроса для возврата не требует доменного имени, нет междоменной проблемы, то есть используйте<script>
Теги не имеют междоменных ограничений, веб-страницы могут динамически генерироваться из других источников.JSON
Незащищенные данные могут подвергаться XSS-атакам.
JSONP прост в использовании и имеет хорошую совместимость, но он ограничен в получении запросов.
<script src="http:=jsonp"></script>
<script>
function jsonp(data) {
console.log(data)
}
</script>
От ввода URL до отображения страницы, что произошло посередине?
Схематическая диаграмма всего процесса от ввода URL до отображения страницы
Введите URL-адрес и введите URL-адрес, процесс браузера проверяет URL-адрес, процесс браузера составляет полный URL-адрес, передает запрос URL-адреса сетевому процессу через связь процесса (IPC) и получает запрос URL-адреса, чтобы проверить, является ли локальный cache — это кэш ресурса запроса, если да, то ресурс возвращается процессу браузера, если нет, то сетевой процесс инициирует HTTP-запрос к веб-серверу.
Сделать http-запрос к веб-серверу
- Выполните разрешение DNS, чтобы получить IP-адрес и порт сервера.
- Установите tcp-соединение с сервером, используя IP-адрес
- Заголовки запросов на сборку
- отправить заголовки запроса
- После ответа сервера сетевой процесс получает заголовок ответа и информацию об ответе и анализирует содержимое ответа.
- Процесс ответа на синтаксический анализ сетевого процесса
- Подготовьте процесс рендеринга
- Передача данных, обновление статуса
веб сервер
- Реализация нескольких доменных имен с одним виртуальным хостом
- Спецификация HTTP/1.1 позволяет одному HTTP-серверу размещать несколько веб-сайтов.
Прокси, Шлюз, Туннель
Из "Иллюстрированного HTTP"играет роль:
Из "Иллюстрированного HTTP"Шлюз:
Из "Иллюстрированного HTTP"туннель:
Из "Иллюстрированного HTTP"кеш:
Из "Иллюстрированного HTTP"Срок годности:
Из "Иллюстрированного HTTP"веб-безопасность
- Использование открытого текста в общении может быть перехвачено, и существует риск прослушивания содержания сообщения.
- Сети, в которых TCP/IP можно прослушивать
- Зашифровано для предотвращения прослушивания
- Не удалось подтвердить целостность сообщения, возможно, оно было изменено
- Общайтесь с помощью HTTPS
- HTTP + шифрование + аутентификация + защита целостности = HTTPS
использованная литература
Угадайте, сколько HTTP-запросов можно отправить через TCP-соединение
Сводка внешнего интерфейса -- сеть
«Иллюстрированный HTTP»