Что такое HTTP?
Во-первых, полная форма HTTP - это протокол передачи гипертекста. HTTP - это протокол прикладного уровня в модели ISO или TCP / IP. На рисунке ниже показано, как HTTP находится под уровнем приложения.
HTTP используется Всемирная сеть (w.w.w) и определяет, как сообщения форматируются и передаются браузером. Таким образом, HTTP определяет, какое действие следует предпринять, когда браузер получает команду HTTP. А также HTTP определяет правила передачи HTTP-команды для получения данных с сервера.
Например, когда вы вводите URL-адрес в браузере (Internet Explorer, Chrome, Firefox, Safari и т. Д.), Он фактически отправляет HTTP-команду на сервер, и сервер отвечает соответствующей командой.
Методы HTTP:
Есть некоторый набор методов для HTTP / 1.1 (это версия HTTP)
GET, HEAD, POST, PUT, DELETE, CONNECT, OPTION и TRACE.
Мы не будем вдаваться в подробности каждого метода, вместо этого мы узнаем о методах, которые встречаются довольно часто.
ПОЛУЧАТЬ: Запрос GET запрашивает данные с веб-сервера. Это основной используемый метод возврата документов. Мы увидим один практический пример этого метода.
ПОЧТА: Метод POST используется, когда требуется отправить некоторые данные на сервер.
HTTP - это Wiresahark:
Давайте попробуем что-нибудь практическое, чтобы понять, как работает HTTP?
Итак, в этом примере мы загрузим alice.txt (файл данных присутствует на сервере) из gaia.cs.umass.edu сервер.
Установки:
- Откройте URL http://gaia.cs.umass.edu/wireshark-labs/alice.txt [Нам известен полный URL-адрес для загрузки alice.txt] в браузере компьютера.
- Теперь мы видим загруженный файл в браузере. Вот скриншот
- Параллельно у нас есть захват пакетов в Wireshark.
Обмен HTTP-пакетами в Wireshark:
Прежде чем мы перейдем к HTTP, мы должны знать, что HTTP использует порт 80 и TCP в качестве протокола транспортного уровня [мы объясним TCP в другом обсуждении темы].
Теперь давайте посмотрим, что происходит в сети, когда мы помещаем этот URL и нажимаем Enter в браузере.
Вот скриншот для
Трехстороннее подтверждение TCP ——-> HTTP OK ——-> Данные TCP [содержимое alice.txt] ——->
HTTP-ОК
Теперь давайте посмотрим, что находится внутри пакетов HTTP GET и HTTP OK.
Примечание: мы объясним обмен TCP в другом обсуждении темы.
HTTP GET:
После завершения трехстороннего установления связи TCP [пакеты SYN, SYN + ACK и ACK] на сервер отправляется HTTP-запрос GET, и вот важные поля в пакете.
1. метод запроса: ПОЛУЧИТЬ ==> Пакет представляет собой HTTP-запрос GET.
2. URI запроса: /wireshark-labs/alice.txt ==> Клиент запрашивает файл alice.txt в папке / Wireshark-labs
3. версия запроса: HTTP / 1.1 ==> Это HTTP версии 1.1.
4. принять: текст / HTML, приложение / xhtml + xml, изображение / jxr, * / * ==> Сообщает серверу, какой тип файла он [браузер на стороне клиента] может принять. Здесь клиент ожидает alice.txt текстового типа.
5. принять язык: en-US ==> Принятый языковой стандарт.
6. Пользователь-агент: Mozilla / 5.0 (Windows NT 10.0; WOW64; Trident / 7.0; rv: 11.0) как Gecko ==> Тип браузера на стороне клиента. Даже если мы использовали Internet Explorer, но видим его всегда / максимальное время, говорит Mozilla
7. принять-кодирование: gzip, выкачать ==> Принятая кодировка на стороне клиента.
8. хост: gaia.cs.umass.edu ==> Это имя веб-сервера, на который клиент отправляет HTTP-запрос GET.
9. подключение: Keep-Alive ==> Connection контролирует, остается ли сетевое соединение открытым после завершения текущей транзакции. Тип подключения - активный.
Вот скриншот для полей пакета HTTP-GET
HTTP ОК:
После успешной отправки данных TCP [содержимое alice.txt] клиенту отправляется HTTP OK, и вот важные поля в пакете.
1. Версия ответа: HTTP / 1.1 ==> Здесь также сервер в HTTP версии 1.1
2. код состояния: 200 ==> Код состояния, отправленный сервером.
3. ответная фраза: Ok ==> Ответная фраза отправлена сервером.
Итак, из 2 и 3 мы получаем 200 OK, что означает, что запрос [HTTP GET] выполнен успешно.
4. Дата: Вс, 10 фев 2019 06:24:19 GMT ==> Текущая дата, время в GMT, когда сервер получил HTTP GET.
5.Сервер: Apache / 2.4.6 (CentOS) OpenSSL / 1.0.2k-fips PHP / 5.4.16 mod_perl / 2.0.10 Perl / v5.16.3 ==> Сведения о сервере и версии конфигураций.
6.Последние модификации : Сб, 21 авг. 2004 14:21:11 GMT ==> Дата и время последнего изменения файла alice.txt.
7.ETag: 2524a-3e22aba3a03c0 ==> ETag указывает, что содержимое не изменено для облегчения кэширования и повышения производительности. Или, если содержимое изменилось, etags полезны, чтобы помочь предотвратить одновременные обновления ресурса от перезаписи друг друга.
8. Допустимые диапазоны: байты ==> Байт - это единица, используемая на сервере для содержимого.
9. длина содержимого: 152138 ==> Это общая длина alice.txt в байтах.
10. Keep-Alive: тайм-аут = 5, максимум = 100 ==> Сохранить параметры.
11. подключение: Keep-Alive ==> Соединение контролирует, остается ли сетевое соединение открытым после завершения текущей транзакции. Тип подключения - активный.
12.Тип содержимого: текст / простой; кодировка = UTF-8 ==> Тип содержимого [alice.txt] - текст, стандарт кодировки - UTF-8.
Вот скриншот для разных полей пакета HTTP OK.
Итак, теперь мы знаем, что происходит, когда мы запрашиваем любой файл, который присутствует на веб-сервере.
Заключение:
HTTP - это простой протокол приложения, который мы используем каждый день в нашей жизни. Но это небезопасно, поэтому был реализован HTTPS. Это S означает безопасность. Поэтому максимальное имя веб-сервера начинается с http. s: // [websitename] . Это означает, что вся связь между вами и сервером зашифрована. У нас будет отдельное обсуждение этого HTTPS в будущем.