Основные понятия сети (протокол http) - Web-Global

Основные понятия сети (протокол http)

22.12.2021 141
Поделиться:

HTTP и HTTPS

HTTP Протокол (HyperText Transfer Protocol, Hypertext Transfer Protocol): это метод публикации и получения HTML-страниц.

HTTPS (Протокол передачи гипертекста через Secure Socket Layer) — это просто безопасная версия HTTP, добавляющая слой SSL в HTTP.

SSL (Secure Sockets Layer) в основном используется для протокола защищенной передачи в Интернете, он шифрует сетевое соединение на уровне передачи для обеспечения безопасности передачи данных в Интернете.

Политика единого происхождения для файлов cookie, сеансов и браузеров

Метод HTTP-запроса

№ Описание метода 1 Длина GET Get ограничена 1024, что очень быстро и небезопасно. Это видно в URL. Что такое параметр отправки URL? Отдельные, множественные параметры, связанные с &, запрашивают указанную информацию о странице и возвращают тело объекта. 2 HEAD аналогичен запросу get, за исключением того, что в возвращенном ответе отсутствует конкретное содержимое, которое используется для получения заголовка 3 Длина POST обычно не ограничена, ограничена промежуточным программным обеспечением, медленнее, безопасна и не видна в URL. Параметры запроса находятся в теле запроса пакета. 4 PUT Данные, передаваемые с клиента на сервер, заменяют содержимое указанного документа. 5 DELETE просит сервер удалить указанную страницу. 6 Протокол CONNECT HTTP / 1.1 зарезервирован для прокси-серверов, которые могут изменить соединение с конвейером. 7 ОПЦИИ позволяет клиенту просматривать производительность сервера. 8 TRACE повторяет запрос, полученный сервером, который в основном используется для тестирования или диагностики.

Общая кодировка URL для запросов Get

Пространство% 20 или% A0 '           %27      "           %22       #           %23   %           %25    &           %26          *           %2A+           %2B,           %2C-           %2D/           %2F\           %5C

Разница между получением и отправкой

  • GET — получить данные с сервера, POST — отправить данные на сервер.
  • Параметры запроса GET отображаются в URL-адресе браузера, а HTTP-сервер генерирует содержимое ответа в соответствии с параметрами в URL-адресе, включенном в запрос, то есть параметры запроса «Get» являются частью URL-адреса. Например:http://www.baidu.com/s?wd=Chinese
  • Параметры запроса POST находятся в теле запроса. Длина сообщения не ограничена и отправляется неявным образом. Обычно используется для отправки больших объемов данных на HTTP-сервер (например, многие параметры или операции загрузки файлов в запросе) Включено в заголовок «Content-Type», указывающий тип мультимедиа и кодировку тела сообщения.

Процесс HTTP-запроса

  1. Когда пользователь вводит URL-адрес в адресную строку браузера и нажимает клавишу Enter, браузер отправляет HTTP-запрос на HTTP-сервер. HTTP-запросы в основном делятся на методы «Get» и «Post».
  2. Когда мы вводим URL в браузереhttp://www.baidu.comКогда браузер отправляет запрос на получениеhttp://www.baidu.comДля файлов HTML сервер отправляет объект файла ответов обратно в браузер.
  3. Браузер анализирует HTML-код в Response и обнаруживает, что он ссылается на множество других файлов, таких как файлы изображений, файлы CSS и файлы JS. Браузер автоматически отправит запрос снова, чтобы получить изображение, файл CSS или файл JS.
  4. После успешной загрузки всех файлов веб-страница будет отображаться полностью в соответствии со структурой синтаксиса HTML.

Один пакет запроса (запроса) и ответа (ответа)

Запросить пакет

GET /test/  HTTP/1.1Host: www.baidu.comConnection: keep-aliveUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: https://www.baidu.com/index.phpAccept-Encoding: gzip, deflate, brAccept-Language: zh,zh-CN;q=0.8,ar;q=0.6,zh-TW;q=0.4Cookie: BAIDUID=AE4D1DA6B2D6689BB8C557B3436893E3:FG=1;BIDUPSID=AE4D1DA6B2D6689BB8C557B3436893E3; PSTM=1501466227;

1. GET            
Получить данные по пути текущего хоста
HTTP / 1.1 — номер версии протокола http

2. Хост (хост и номер порта)
Хост: соответствует веб-имени и номеру порта в URL-адресе и используется для указания интернет-хоста и номера порта запрашиваемого ресурса, обычно это часть URL-адреса. По умолчанию используется порт 80, если это порт 8080, это: www.baidu.com:8080

3. Соединение (тип ссылки)
Connection: указывает тип соединения между клиентом и службой.
Клиент инициирует запрос, содержащий Connection: keep-alive, HTTP / 1.1 использует keep-alive в качестве значения по умолчанию.
После того, как сервер получит запрос:
Если сервер поддерживает keep-alive, ответьте ответом, содержащим Connection: keep-alive без закрытия соединения;
Если сервер не поддерживает keep-alive, ответьте ответом «Соединение: закрыть», чтобы закрыть соединение.
Если клиент получает ответ, содержащий Connection: keep-alive, он отправляет следующий запрос тому же соединению, пока одна сторона не закроет соединение активно.
keep-alive может во многих случаях повторно использовать соединения, сокращать потребление ресурсов и сокращать время отклика, например, когда браузеру требуется несколько файлов (например, файл HTML и связанные графические файлы), Нет необходимости каждый раз запрашивать соединение.

4. Upgrade-Insecure-Requests (обновление до HTTPS-запросов)
Upgrade-Insecure-Requests: обновить небезопасные запросы, что означает, что они будут автоматически заменены HTTPS-запросами при загрузке ресурсов http, так что браузер больше не будет отображать оповещения http-запросов на странице https.
HTTPS — это канал HTTP в целях безопасности, поэтому запросы HTTP запрещены на страницах, переносимых HTTPS, и, как только он появится, он выдаст сообщение или сообщит об ошибке.

5. Пользователь-агент (имя браузера)

User-Agent: имя браузера клиента

6. Принять (передать тип файла)
Accept: относится к типу файлов MIME (Multipurpose Internet Mail Extensions), который может принимать браузер или другие клиенты, и сервер может определять и возвращать соответствующий формат файла на его основе. ,
Примеры:
Принять: * / *: указывает, что все может быть получено.
Accept: image / gif: указывает, что клиент желает принимать ресурсы в формате изображения GIF;
Accept: text / html: указывает, что клиент желает принять html-текст.
Accept: text / html, application / xhtml + xml; q = 0,9, image / *; q = 0,8: указывает, что типы MIME, поддерживаемые браузером, представляют собой документы HTML, HTML, XML и XML. Все ресурсы формата изображения.
q — весовой коэффициент, диапазон равен 0 = <q <= 1, чем больше значение q, тем более склонен запрос на получение содержимого, представленного типом перед «;». Если значение q не указано, по умолчанию используется значение 1, отсортированное слева направо, а если ему присвоено значение 0, оно используется для указания того, что браузер не принимает этот тип содержимого.
Текст: текстовая информация для стандартизированного представления. Текстовые сообщения могут иметь несколько наборов символов и / или несколько форматов; Приложение: используется для передачи данных приложения или двоичных данных. Нажмите для подробностей

7. Реферер (переход на страницу)
Referer: указывает URL-адрес, с которого пришла запрошенная веб-страница, и пользователь получил доступ к запрашиваемой в данный момент странице со страницы Referer. Этот атрибут может использоваться для отслеживания того, с какой страницы поступил веб-запрос, с какого веб-сайта и т. Д.
Иногда при загрузке изображения веб-сайта вам необходим соответствующий реферер, в противном случае вы не можете загрузить изображение, потому что другие создали анти-воровскую цепочку, принцип заключается в том, чтобы судить, является ли адрес этого веб-сайта реферером. Если нет, то откажитесь, если да, вы можете скачать;

8. Accept-Encoding (формат кодирования и декодирования файлов)
Accept-Encoding: указывает метод кодирования, который может принять браузер. Метод кодирования отличается от формата файла, он заключается в сжатии файла и увеличении скорости передачи файла. Браузер декодирует веб-ответ после его получения, а затем проверяет формат файла. Во многих случаях это может сократить время загрузки.
Пример: Accept-Encoding: gzip; q = 1.0, тождество; q = 0.5, *; q = 0

Если одновременно совпадают несколько кодировок, они располагаются в порядке значения q. В этом примере кодировки сжатия gzip и идентификации поддерживаются по порядку. Браузеры, поддерживающие gzip, будут возвращать HTML-страницы в кодировке gzip. Если сервер домена не указан в сообщении запроса, предполагается, что клиент может принимать все виды кодирования контента

9. Accept-Language (тип языка)
Accept-Langeuage: указывает языки, которые может принимать браузер, такие как en или en-us для английского, zh или zh-cn для китайского, когда сервер может предоставить более одного языка Будет использоваться

10. Cookie (Cookie)
Cookie: браузер использует этот атрибут для отправки cookie на сервер. Cookie — это небольшое тело данных, зарегистрированное в браузере, оно может записывать пользовательскую информацию, относящуюся к серверу, а также может использоваться для реализации функции сеанса, которая будет подробно описана позже.

11. Accept-Charset (кодировка символов)
Accept-Charset: указывает кодировку символов, которую может принять браузер.
Пример: Accept-Charset: iso-8859-1, gb2312, utf-8

ISO8859-1: обычно называется Latin-1. Latin-1 содержит дополнительные символы, которые необходимы для написания всех западноевропейских языков.Значением по умолчанию для английских браузеров является ISO-8859-1.
gb2312: стандартный упрощенный набор китайских символов;
UTF-8: кодировка символов UNICODE переменной длины, которая может решить проблему отображения текста на нескольких языках, тем самым обеспечивая интернационализацию и локализацию приложений.
Если это поле не задано в сообщении запроса, любой набор символов по умолчанию приемлем.

12. Content-Type (тип данных POST)
Content-Type: тип содержимого, используемый в запросе POST.
Пример: Content-Type = Text / XML; charset = gb2312:
указывает, что тело сообщения запроса содержит данные типа XML в виде простого текста, а кодировка символов — «gb2312».

Пакет ответов

HTTP/1.1 200 OKDate: Fri, 05 Oct 2018 01:35:48 GMTServer: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45X-Powered-By: PHP/5.4.45Expires: Tue, 23 Jun 2009 12:00:00 GMTCache-Control: no-cache, must-revalidatePragma: no-cacheContent-Length: 5212Connection: closeContent-Type: text/html;charset=utf-8

1. HTTP/1.1  200 OK

  • HTTP / 1.1 — это номер версии http
  • 200 OK — код статуса

200 страниц в норме
301 302 перенаправления
400 ошибка протокола HTTP 403 запрещенный доступ Страница 404 не существует
Динамический код страницы 500 содержит ошибку 502 Тайм-аут ответа

2. Date: Fri, 05 Oct 2018 01:35:48 GMT  

Дата и время, когда сервер отвечает на данные

3. Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45

Тип веб-сервера, промежуточное программное обеспечение и т. Д.

4. Content-Length: 5212

Длина ответного пакета
5. Connection: close

Тип ссылки, длинные ссылки не поддерживаются, поэтому закрыть
6. Content-Type: text/html;charset=utf-8

Тип данных ответа, формат html, кодировка utf8

HTTP-аутентификация

Базовая сертификация

ОСНОВНОЙ обзор сертификации
Когда клиент отправляет запрос данных на HTTP-сервер, если клиент не аутентифицирован, HTTP-сервер проверяет имя пользователя и пароль клиента в процессе базовой аутентификации, чтобы определить, является ли пользователь легальным. После получения запроса аутентификации от HTTP-сервера клиент предложит пользователю ввести имя пользователя и пароль, а затем зашифровать имя пользователя и пароль с помощью BASE64. Зашифрованный зашифрованный текст будет добавлен к информации запроса, например, когда имя пользователя является anjuta , Пароль: 123456, клиент объединяет имя пользователя и пароль с «:», шифрует объединенную строку с BASE64 в зашифрованный текст и добавляет зашифрованный текст к заголовку запроса (Запрос Заголовок) в. После получения пакета запроса HTTP-сервер получает дополнительную информацию о пользователе (зашифрованное имя пользователя и пароль BASE64) от клиента в соответствии с протоколом, распаковывает пакет запроса и проверяет имя пользователя и пароль. Если имя пользователя и пароль верны, то В соответствии с запросом клиента верните данные, требуемые клиентом, в противном случае верните код ошибки или попросите клиента снова ввести имя пользователя и пароль.
 
ОСНОВНОЙ процесс сертификации
Основные шаги аутентификации:

  1. Клиент получает доступ к ресурсу, защищенному базовой аутентификацией http.
  2. Сервер возвращает статус 401, требуя от клиента предоставить имя пользователя и пароль для аутентификации. (При сбое аутентификации WWW-Authenticate: Basic realm = «домен запроса» будет добавлен в заголовок ответа.) (401 Несанкционированный WWW-Authenticate: Basic realm = «WallyWorld»)
  3. Клиент кодирует введенные имя пользователя и пароль с помощью Base64 и передает их на сервер в незашифрованном виде.Authorization: Basic xxxxxxxxxx.
  4. Сервер декодирует и извлекает имя пользователя и пароль в заголовке авторизации и выполняет проверку. Если аутентификация прошла успешно, соответствующий ресурс возвращается. Если аутентификация не удалась, она все еще возвращается в состояние 401, требуя повторной аутентификации.

Преимущества:
Одним из преимуществ базовой аутентификации является то, что в основном все популярные веб-браузеры поддерживают базовую аутентификацию. Обычная аутентификация редко используется на общедоступных интернет-сайтах и ​​иногда используется в небольших частных системах (таких как интерфейсы управления веб-страницами маршрутизатора). Более поздние механизмы, дайджест-аутентификация HTTP, были разработаны для замены базовой аутентификации, позволяя передавать ключи по незащищенным каналам относительно безопасным способом.
 
Недостатки:
Хотя базовая аутентификация очень проста в реализации, схема основана на предположении, что соединение между клиентом и хостом сервера является безопасным и надежным. В частности, если протокол безопасности транспортного уровня, такой как SSL / TLS, не используется, ключи и пароли, передаваемые в виде открытого текста, могут быть легко перехвачены. Решение также не обеспечивает защиту информации, возвращаемой сервером. Существующие браузеры сохраняют информацию аутентификации до тех пор, пока вкладка или браузер не будут закрыты или пользователь не очистит историю. HTTP не предоставляет серверу метод, позволяющий клиенту сбросить эти кэшированные ключи. Это означает, что на сервере нет эффективного способа выйти из системы без закрытия браузера.
 
Специальное примечание:
1. Http не имеет состояния. Каждый доступ к ресурсам в одной и той же области одним и тем же клиентом должен быть аутентифицирован.
2. Клиент обычно кэширует имя пользователя и пароль и сохраняет их в области аутентификации, поэтому обычно вам не нужно повторно вводить имя пользователя и пароль.
3. Он передается в незашифрованном виде, хотя и преобразуется в строку, которую нелегко распознать людям, но не может предотвратить злонамеренное кражу имени пользователя и пароля. Хотя он невидим невооруженным глазом, его легко расшифровать с помощью программы.