Я программист, мой основной язык программирования — Java, и я веб-разработчик, поэтому я должен понимать HTTP, поэтому эта статья проведет вас от входа в HTTP до продвинутого уровня, после прочтения которого вы почувствуете внезапное реализация и просветление.
В начале, до интернета, наши компьютеры были все автономны, и автономная система была изолирована.Я до сих пор помню, что компьютер был дома в 2005 году.Чтобы играть в компьютерные игры, два человека должны были играть на одном компьютер, и это не удобно. Я удивляюсь, почему моя семья не разрешает доступ в Интернет.У моего одноклассника ххх есть доступ в Интернет дома.Каждый раз, когда я упоминаю об этом, я получаю критику: ххх на ххх, что хххх, что хххх на ххх, посмотри хххх на хххх , вы на экзамене хххх на хххх хххх, тогда хххх указывает хххх на хххх. Хотя дома нет доступа к Интернету, Интернет в это время уже быстро развивается, а HTTP является продуктом быстрого развития.
Познакомьтесь с HTTP
Прежде всего, чаще всего вы слышите, что HTTP — это своего рода超文本传输协议(Hypertext Transfer Protocol)
,вы должны уметь это сказать,но этого недостаточно.Если вы интервьюер крупного завода,это не может быть конечным результатом,который он хочет.Мы часто говорим столько, сколько знаем во время интервью.Имейте капитал, чтобы согласуйте цену с интервьюером. Так что же такое протокол передачи гипертекста?
Протокол передачи гипертекста может выполнять сегментацию текста:Протокол передачи гипертекста, связь между ними следующая
Следуйте размеру диапазона Протокол > Транспорт > Гипертекст. Три рейтинга объясняются ниже.
что такое гипертекст
На заре Интернета введенная нами информация могла храниться только локально и не могла взаимодействовать с другими компьютерами. Информация, которую мы храним, обычно представлена в виде文本
То есть в виде простых символов текст представляет собой осмысленный пакет двоичных данных, который может быть проанализирован компьютером. С быстрым развитием Интернета после того, как передача данных между двумя компьютерами может быть осуществлена, люди не удовлетворены тем, что они могут передавать только текст между двумя компьютерами, но также хотят передавать изображения, аудио, видео и даже щелкать текст. или фотографии.超链接
прыжок, то семантика текста расширяется, и расширенный текст называется超文本(Hypertext)
.
что такое передача
Затем, как мы упоминали выше, два компьютера сформируют взаимосвязанные отношения для связи, гипертекст, который мы храним, будет разобран на пакеты двоичных данных, а носитель передачи (например, коаксиальный кабель, телефонная линия, оптический кабель) будет отвечать за двоичный код. пакет данных Процесс передачи с компьютерного терминала на другой терминал (подробное описание терминала см.Вы говорите, что разбираетесь в Интернете, но знаете ли вы это?эта статья) называется传输(transfer)
.
Обычно мы называем сторону, передающую пакет данных,请求方
, сторона, получившая пакет двоичных данных, называется应答方
. Запрашивающая сторона и отвечающая сторона могут обмениваться данными, запрашивающая сторона также может получать данные в качестве отвечающей стороны, а отвечающая сторона также может запрашивать данные в качестве запрашивающей стороны. Отношения между ними следующие:
Как показано на рисунке, A и B являются двумя разными конечными системами, и они могут существовать как носители информационного обмена.В начале A была запрашивающей стороной для обмена информацией с B, а B была ответчиком для предоставления информации.Со временем , B также может действовать как запросчик, чтобы запросить у A обмен информацией, а затем A может также действовать как ответчик, чтобы ответить на информацию, запрошенную B.
что такое соглашение
Срок соглашения не ограничивается только Интернетом, но и отражается в повседневной жизни.Например, пары договариваются о том, где поесть.Это соглашение также является своего рода соглашением.协议
Например, если вы успешно подаете заявку на работу, компания подписывает с вами трудовой договор.Такой вид трудовых отношений между двумя сторонами также является своего рода协议
. Заметьте, что соглашение, заключенное самим с собой, не может быть соглашением, а предварительным условием соглашения должно быть соглашение многих людей.
Итак, что такое сетевой протокол?
Сетевые протоколы — это некоторые спецификации для передачи и управления информацией в сети (включая Интернет). Точно так же, как люди должны следовать определенным правилам для общения друг с другом, взаимное общение между компьютерами должно подчиняться определенным правилам, которые называются сетевыми протоколами.
Интернет без сетевых протоколов хаотичен. Как и человеческое общество, люди не могут делать все, что хотят. Ваши поведенческие ограничения ограничены законами, тогда конечные системы в Интернете не могут отправлять все, что хотят. ограничения протокола связи.
Итак, мы можем подвести итог, что такое HTTP? На него можно ответить следующим классическим резюме:HTTP — это соглашение и спецификация для передачи текста, изображений, аудио, видео и других гипертекстовых данных между двумя точками в компьютерном мире.
Компоненты, связанные с HTTP
С развитием сетевого мира протокол HTTP стал почти незаменимым протоколом.После понимания основных компонентов HTTP, давайте познакомимся с протоколом HTTP побольше.
сетевая модель
Сеть представляет собой сложную систему, включающую не только большое количество приложений, оконечных систем, каналов связи, коммутаторов пакетов и т. д., но и множество протоколов, поэтому теперь поговорим об уровнях протоколов в сети.
Чтобы обеспечить структуру для разработки сетевых протоколов, сетевые разработчики используют分层(layer)
Протоколы организованы таким образом, что каждый протокол принадлежит к одной из иерархических моделей. Каждый слой предоставляет слой над ним服务(service)
, так называемый服务模型(service model)
. Все протоколы каждого уровня называются协议栈(protocol stack)
. Стек протоколов Интернета состоит из пяти частей: физического уровня, канального уровня, сетевого уровня, транспортного уровня и прикладного уровня. Мы используем нисходящий подход для изучения его принципов, то есть подход прикладной уровень -> физический уровень.
прикладной уровень
Прикладной уровень — это уровень, на котором хранятся сетевые приложения и сетевые протоколы.Прикладной уровень Интернета включает в себя множество протоколов.Например, мы не можем обойтись без изучения сети.HTTP
, протокол доставки электронной почтыSMTP
, Протокол загрузки файлов в конечной системеFTP
, а также разрешение доменного имени для насDNS
протокол. Протоколы прикладного уровня распределены по нескольким конечным системам.Прикладная программа конечной системы обменивается информационными пакетами с другой прикладной программой конечной системы.Мы называем информационные пакеты на прикладном уровне как报文(message)
.
транспортный уровень
Транспортный уровень Интернета передает сообщения приложений между точками останова приложений.На этом уровне существует два основных транспортных протокола.TCP
иUDP
, используя любой из двух, можно передавать сообщения, но эти два протокола сильно различаются.
TCP предоставляет своим приложениям услуги, ориентированные на установление соединения, он может контролировать и подтверждать прибытие пакетов, а также предоставляет механизм перегрузки для управления сетевой передачей, поэтому, когда сеть перегружена, ее скорость передачи снижается.
Протокол UDP предоставляет своим приложениям услуги без установления соединения. Он не имеет функций надежности, управления потоком и управления перегрузкой. Мы называем группировку транспортного уровня как报文段(segment)
Сетевой уровень
Сетевой уровень Интернета отвечает за数据报(datagram)
Сетевой уровень перемещается от одного хоста к другому. Очень важным протоколом на сетевом уровне являетсяIP
Все интернет-компоненты с сетевым уровнем должны работать с IP-протоколом. IP-протокол — это интернет-протокол. Помимо IP-протокола, сетевой уровень также включает в себя некоторые другие интернет-протоколы и протоколы маршрутизации. Как правило, сетевой уровень называется IP-протоколом. layer. , мы можем видеть важность протокола IP.
связующий слой
Теперь у нас есть протокол для связи приложений, протокол для обеспечения транспортировки приложений и IP-протокол для согласования местоположения отправки, так как же мы можем на самом деле отправлять данные? Чтобы транспортировать пакеты от одного узла (хост или маршрутизатор) к другому, сетевой уровень должен полагаться на канальный уровень для предоставления услуг. Примеры канальных уровней включают Ethernet, Wi-Fi и кабельный доступ.DOCSIS
Протокол, поскольку передача данных от источника к получателю обычно должна проходить через несколько каналов, пакет данных может обрабатываться различными протоколами канального уровня по пути, мы называем пакет канального уровня как帧(frame)
физический слой
В то время как роль канального уровня заключается в передаче кадров от одной конечной системы к другой, роль физического уровня заключается в比特
Транспортируемые от одного узла к другому, протоколы физического уровня по-прежнему используют протоколы канального уровня, которые связаны с реальной физической средой передачи, например, Ethernet имеет много протоколов физического уровня: о витой паре медного провода, о коаксиальном кабеле, о оптоволокне. , и т.д.
Принципиальная схема пятиуровневого сетевого протокола выглядит следующим образом.
Модель OSI
Модель вычислительного сетевого протокола, которую мы обсуждали выше, не уникальна.协议栈
, ISO (Международная организация по стандартизации) предложила, чтобы компьютерная сеть была организована в соответствии с 7 уровнями, тогда в чем разница между 7-уровневым стеком сетевых протоколов и 5-уровневым?
Как видно из рисунка с первого взгляда, OSI — это гораздо больше, чем представленная выше сетевая модель.表示层
и会话层
, другие слои в основном такие же. Уровень представления в основном включает в себя сжатие данных, шифрование данных и описание данных.Описание данных позволяет прикладной программе не беспокоиться о формате внутренней памяти компьютера, в то время как уровень сеанса обеспечивает функции разграничения и синхронизации обмена данными, в том числе установление контрольно-пропускных пунктов и схемы восстановления.
браузер
Так же, как основные почтовые ящики используют протокол передачи электронной почтыSMTP
Точно так же браузер является основным носителем, использующим протокол HTTP.Что касается браузеров, сколько вы можете придумать? Да, с быстрым развитием браузеров после войны Netscape, браузеры, появившиеся до сих пор, в основном включают:
Официальное название браузераWeb Broser
, как следует из названия, представляет собой приложение для поиска и просмотра веб-ресурсов в Интернете. Сеть в названии на самом деле относится кWorld Wide Web
, то есть Всемирная паутина.
Мы вводим URL-адрес (то есть веб-адрес) в адресную строку, и браузер предоставит URL-адрес DNS (серверу доменных имен, о котором будет сказано позже), который завершит сопоставление URL-адреса с IP. адрес. Затем отправьте запрос на определенный сервер.После того, как сервер вернет желаемый результат (возврат в браузер в формате кодировки HTML), браузер выполняет кодирование HTML и отображает результат в теле браузера. Это процесс, посредством которого браузер инициирует запрос и получает ответ.
веб сервер
Официальное название веб-сервера называетсяWeb Server
, "Веб-сервер" обычно относится к серверу веб-сайта. Как упоминалось выше, браузер является инициатором HTTP-запроса, затем веб-сервер отвечает на HTTP-запрос. Веб-сервер может предоставлять документы веб-клиентам, таким как браузеры, и также может размещать файлы веб-сайтов. , позволяя всему миру просматривать, вы можете размещать файлы данных для скачивания со всего мира. В настоящее время тремя наиболее распространенными веб-серверами являются Apache, Nginx и IIS.
CDN
Полное название CDNContent Delivery Network
,Сейчас内容分发网络
, который применяет технологии кэширования и прокси в протоколе HTTP для ответа на запрос клиента вместо исходного сайта. CDN — это сеть, построенная на базе существующей сети, опирающаяся на пограничные серверы, развернутые в разных местах, чтобы пользователи могли использовать балансировку нагрузки, распределение контента, планирование и другие функциональные модули центральной платформы.就近
Получите нужный вам контент, уменьшите перегрузку сети и улучшите скорость отклика пользователя и количество попаданий. Ключевые технологии CDN в основном включают内容存储
и分发技术
.
Например, если вы собираетесь купить книгу на Amazon, вы можете купить ее только через веб-сайт для покупок, а затем отправить домой из Соединенных Штатов. нужно отправить через США. , книга может быть доставлена вам в кратчайшие сроки из Китая.
WAF
WAF — это брандмауэр веб-приложений (сокращенно WAF), который представляет собой安全策略
Продукт, специально разработанный для обеспечения защиты веб-приложений, это продукт уровня приложения.防火墙
, который специально обнаруживает HTTP-трафик и представляет собой технологию безопасности для защиты веб-приложений.
WAF обычно располагается перед веб-сервером и может предотвращать такие атаки, как внедрение SQL и межсайтовый скриптинг.В настоящее время широко используется проект с открытым исходным кодом ModSecurity, который можно полностью интегрировать в Apache или Nginx.
WebService
WebService — это веб-приложение,WebService — это технология удаленных вызовов между языками программирования и платформами операционных систем..
Веб-служба — это спецификация разработки службы приложений, определенная W3C.Он использует архитектуру клиент-сервер master-slave, обычно использует WSDL для определения интерфейсов службы и использует протокол HTTP для передачи сообщений XML или SOAP.Технология архитектуры сервисов на основе Web (HTTP), который может работать как во внутренней сети, так и во внешней после должной защиты.
HTML
HTML, известный как язык гипертекстовой разметки, является языком идентификации. Он включает в себя ряд этикеток. С помощью этих тегов можно унифицировать формат документа в сети, а разрозненные интернет-ресурсы соединить в логическое целое. Текст HTML — это описательный текст, состоящий из команд HTML, которые могут описывать текст, графику, анимацию, звуки, таблицы, ссылки и многое другое.
Состав веб-страницы
Веб-страница, также называемая документом, состоит из объектов. Один对象(Objecy)
Просто файл, такой как файл HTML, графика JPEG, апплет Java или видеоклип, который можноURL
адресная адресация. Большинство веб-страниц содержатHTML 基本文件
и несколько эталонных объектов.
Например, если веб-страница содержит файлы HTML и 5 изображений в формате JPEG, то на веб-странице будет 6 объектов: файл HTML и 5 изображений в формате JPEG. Базовые файлы HTML ссылаются на другие объекты на странице через URL-адреса.
Протоколы, связанные с HTTP
В Интернете ни один протокол не обеспечивает обмен информацией в одиночку, как и HTTP. Хотя HTTP относится к протоколу прикладного уровня, он все же нуждается в сотрудничестве протоколов других уровней для завершения обмена информацией Итак, в процессе выполнения HTTP-запроса и ответа, какие протоколы необходимы? Давайте взглянем
TCP/IP
TCP/IP
Вы, должно быть, слышали о протоколе, TCP/IP, который мы обычно называем协议簇
,Что это обозначает? То есть набор протоколов TCP/IP — это не только протокол TCP и протокол IP, это общий термин для ряда сетевых протоколов связи. Двумя основными протоколами являются протокол TCP/IP, а другие включают UDP, ICMP, ARP и т. д., которые вместе составляют сложный, но многоуровневый стек протоколов.
Полное название протокола TCP:Transmission Control Protocol
сокращение от传输控制协议
, HTTP использует TCP в качестве протокола связи, это связано с тем, что TCP является надежным протоколом, и可靠
Гарантируется, что данные не будут потеряны.
Полное имя IP-протоколаInternet Protocol
Аббревиатура , в основном решает проблему адресации обеих сторон связи. Использование IP-протоколаIP 地址
Чтобы идентифицировать каждый компьютер в Интернете, вы можете думать об IP-адресе как о номере вашего мобильного телефона.Если вы хотите общаться с другими людьми, вы должны сначала узнать номер мобильного телефона другого человека.Обмен информацией в компьютерная сеть должна сначала знать IP-адрес другой стороны. (Более подробное обсуждение TCP и IP будет объяснено позже)
DNS
Вы когда-нибудь задумывались, почему вы можете сделать это, набравwww.google.com
Можете ли вы получить веб-сайт, который вы хотите? Как мы упоминали выше, каждая конечная система в компьютерной сети имеет IP-адрес, и протокол, который преобразует IP-адрес в удобную для человека память, называетсяDNS 协议
.
Полное имя DNS域名系统(Domain Name System,缩写:DNS)
, как распределенная база данных, которая сопоставляет доменные имена и IP-адреса друг с другом, облегчая доступ людей в Интернет.
URI / URL
Как мы упоминали выше, вы можете сделать это, набравwww.google.com
адрес для посещения официального веб-сайта Google, так каковы правила для этого адреса? Как я могу проиграть? Работает ли также AAA.BBB.CCC? Конечно нет, формат адреса, который вы вводите, должен соответствоватьURI
Спецификация.
URI
Полное название — (Uniform Resource Identifier), китайское название — Uniform Resource Identifier, которое можно использовать для уникальной маркировки ресурсов в Интернете.
URL
Полное название (Uniform Resource Locator), китайское название — Uniform Resource Locator, как мы его обычно называем.网址
, который на самом деле является подмножеством URI.
URI включает в себя не только URL, но и URN (Uniform Resource Name), и связь между ними следующая:
HTTPS
HTTP обычно передается в открытом виде, и злоумышленникам легко украсть важную информацию, поэтому и появился HTTPS. Полное название HTTPS (протокол передачи гипертекста через SecureSocket Layer) немного длинное. Разница между HTTPS и HTTP заключается в том, что HTTPS является безопасным каналом HTTP. На основе HTTP шифрование передачи и аутентификация личности обеспечивают безопасность передачи процесс. HTTPS добавляется к HTTPSSL
слой, так сказатьHTTPS = HTTP + SSL. (Мы подробно обсудим HTTPS позже)
Процесс ответа на HTTP-запрос
Вам интересно, что именно происходит, когда вы вводите URL-адрес в браузере? Как представлен контент, который вы хотите? Давайте рассмотрим это на примере, предположим, что доступ к URL-адресуhttp://www.someSchool.edu/someDepartment/home.index
, когда мы вводим URL-адрес и нажимаем Enter, внутри браузера будут выполняться следующие операции
- DNS-сервер сначала сопоставит доменное имя, чтобы найти доступ
www.someSchool.edu
адрес, а затем клиентский процесс HTTP инициирует вызов сервера на порту 80www.someSchool.edu
TCP-соединение (порт 80 — порт по умолчанию для HTTP). И в клиентских, и в серверных процессах будет套接字
подключен к нему. - HTTP-клиент отправляет сообщение HTTP-запроса на сервер через свой сокет. Сообщение содержит путь
someDepartment/home.index
ресурсы, мы подробно обсудим сообщения HTTP-запроса позже. - HTTP-сервер принимает сообщение через свой сокет, анализирует запрос и извлекает сообщение из своего сокета.
存储器(RAM 或磁盘)
Объект извлекается из www.someSchool.edu/someDepartment/home.index, а затем полученный объект инкапсулируется, инкапсулируется в ответное сообщение HTTP и отправляется клиенту через сокет. - HTTP-сервер немедленно информирует TCP об отключении TCP-соединения, фактически ему нужно дождаться, пока клиент примет ответное сообщение, прежде чем разорвать TCP-соединение.
- После того как HTTP-клиент получает ответное сообщение, TCP-соединение закрывается. HTTP-клиент извлекает файл ответа HTML в сообщении из ответа, проверяет файл HTML, а затем перебирает другие внутренние объекты в сообщении.
- После завершения проверки HTTP-клиент представит пользователю соответствующий ресурс через дисплей.
На этом весь процесс ввода URL и нажатия Enter завершен. Вышеупомянутый процесс описывает простой请求-响应
Весь процесс, реальная ситуация запрос-ответ может быть намного сложнее описанного выше процесса.
Характеристики HTTP-запроса
Из всего описанного выше процесса мы можем сделать вывод, что передача пакетов HTTP имеет следующие характеристики.
- Поддержка клиент-серверного режима
- Просто и быстро: когда клиент запрашивает услугу с сервера, ему нужно только передать метод запроса и путь. Обычно используемые методы запроса — GET, HEAD и POST. Каждый метод определяет другой тип контакта между клиентом и сервером. Из-за простоты HTTP-протокола размер программы HTTP-сервера невелик, поэтому скорость связи очень высока.
- Гибкость: HTTP позволяет передавать объекты данных любого типа. Передаваемый тип помечен Content-Type.
- Без установления соединения: Значение без установления соединения заключается в ограничении обработки только одного запроса на соединение. После того, как сервер обработает запрос клиента и получит ответ клиента, он отключится. Таким образом можно сэкономить время передачи.
- Без сохранения состояния: протокол HTTP является протоколом без сохранения состояния. Без сохранения состояния означает, что протокол не имеет памяти для обработки транзакций. Отсутствие состояния означает, что если предыдущая информация требуется для последующей обработки, она должна быть передана повторно, что может привести к увеличению объема данных, передаваемых за соединение. С другой стороны, сервер быстрее отвечает, когда ему не нужна предыдущая информация.
Подробное объяснение HTTP-сообщений
Мы описали HTTP-запрос и процесс ответа выше. Этот процесс относительно прост, но вы должны серьезно относиться ко всему. Если вы настроены серьезно, вы можете многое расширить, напримерКак выглядит HTTP-сообщение и каков формат его состава?Давайте обсудим
Протокол HTTP в основном состоит из трех частей:
-
起始行(start line)
: основная информация, описывающая запрос или ответ; -
头部字段(header)
: Используйте форму ключ-значение для более подробного описания сообщения; -
消息正文(entity)
: фактически передаваемые данные, которые не обязательно представляют собой простой текст, но могут быть двоичными данными, такими как изображения и видео.
где стартовая строка и поля заголовка и становятся请求头
или响应头
, вместе именуемыеHeader
; тело сообщения также называется сущностью, называемойbody
. Протокол HTTP предусматривает, что каждое отправляемое сообщение должно иметь заголовок, но может не иметь тела, то есть требуется информация заголовка, а информация сущности может отсутствовать. И должна быть пустая строка (CRLF) между заголовком и телом.Если вы используете изображение для его представления, я думаю, что это должно быть следующим образом
Давайте используем приведенный выше пример, чтобы увидеть сообщение HTTP-запроса.
Как показано, этоhttp://www.someSchool.edu/someDepartment/home.index
Заголовок запроса, мы можем многое узнать, наблюдая за этим HTTP-сообщением.Во-первых, мы видим, что сообщение является обычнымASCII
Она написана текстом, чтобы люди могли ее понять. Затем мы видим, что между каждой строкой и следующей будет новая строка, а за последней строкой (после заголовка запроса) будет следовать перевод строки с возвратом каретки.
Начальная строка каждого сообщения состоит из трех полей:Метод, поле URL и поле версии HTTP.
Метод HTTP-запроса
Методы HTTP-запроса обычно делятся на 8 типов.
-
GET 获取资源
, метод GET используется для запроса доступа к ресурсу, указанному в URI. Указанный ресурс анализируется сервером и возвращает содержимое ответа. То есть, если запрошенный ресурс является текстом, вернуть его как есть; -
POST 传输实体
, хотя метод GET также может передавать основную информацию, но его легко отличить, мы обычно не используем GET для передачи информации об объекте, а используем POST для передачи информации об объекте. -
PUT передает файлы, а метод PUT используется для передачи файлов. Как и при загрузке файла по протоколу FTP, необходимо включить содержимое файла в тело сообщения запроса, а затем сохранить его в месте, указанном в URI запроса.
Однако, учитывая, что метод HTTP PUT не имеет механизма аутентификации, любой может загружать файлы, и существуют проблемы с безопасностью, поэтому обычные веб-сайты не используют этот метод. Если он взаимодействует с механизмом аутентификации веб-приложения или архитектура принимает
REST(REpresentational State Transfer,表征状态转移)
Стандартные веб-сайты того же типа могут быть открыты для использования метода PUT. -
HEAD получает заголовок ответа.Метод HEAD аналогичен методу GET, но не возвращает тело сообщения. Используется для подтверждения правильности URI, а также даты и времени обновления ресурса.
-
DELETE удаляет файл Метод DELETE используется для удаления файла, что является противоположностью PUT. Метод DELETE удаляет указанный ресурс по URI запроса.
-
OPTIONS Запрос поддерживаемых методов. Метод OPTIONS используется для запроса методов, поддерживаемых для ресурса, указанного URI запроса.
-
TRACE отслеживает путь, метод TRACE — это метод, с помощью которого веб-сервер возвращает клиенту предыдущий запрос.
-
CONNECT требует протокол туннелирования для подключения к прокси-серверу, а метод CONNECT требует установления туннеля при обмене данными с прокси-сервером для реализации связи TCP с использованием протокола туннелирования. В основном используется
SSL(Secure Sockets Layer,安全套接层)
и TLS(Transport Layer Security,传输层安全)
Протокол шифрует содержимое связи и передает его через сетевой туннель.
Наиболее часто используемые методы — это метод GET и метод POST, и другие методы можно временно понять. Ниже приведен список методов, поддерживаемых HTTP1.0 и HTTP1.1.
URL-адрес HTTP-запроса
Протокол HTTP использует URI для поиска ресурсов в Интернете. Именно из-за специфической функции URI можно получить доступ к ресурсам в любом месте Интернета. URL-адрес содержит идентификатор объекта запроса. В приведенном выше примере браузер запрашивает объект/somedir/page.html
Ресурсы.
Давайте проанализируем URL-адрес через полное доменное имя.
Напримерhttp://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
Этот URL-адрес довольно громоздкий. Если вы понимаете этот URL-адрес и другие URL-адреса, это не будет проблемой.
Первое, что появляется, этоhttp
http://
Сообщите браузеру, какой протокол использовать. Для большинства веб-ресурсов обычно используется протокол HTTP или его защищенная версия — протокол HTTPS. Кроме того, браузеры умеют работать с другими протоколами. Например,mailto:
В протоколе указано, что браузер открывает почтовый клиент;ftp:
Протокол инструктирует браузер обрабатывать передачу файлов.
Вышел второй主机
www.example.com
И доменное имя, и организация, которая управляет этим доменным именем. Он указывает, к какому хосту в сети необходимо сделать запрос. Конечно, вы также можете напрямуюIP addressадрес для инициации запроса. Однако напрямую использовать IP-адреса не принято.
Появился третий端口
Как мы упоминали ранее, для инициирования TCP-соединения между двумя хостами необходимы два условия: хост + порт. Он представляет собой портал для доступа к ресурсам на веб-сервере. Этот раздел обычно опускается, если веб-сервер, к которому осуществляется доступ, использует стандартные порты протокола HTTP (80 для HTTP и 443 для HTTPS) для предоставления доступа к своим ресурсам. В противном случае порт является обязательной частью URI.
Выше приведена часть, которая должна быть включена в URL-адрес запроса, а ниже приведен конкретный путь ресурса запроса URL-адреса.
Четвертый появившийся路径
/path/to/myfile.html
это путь к ресурсу на веб-сервере. Возьмите первый после порта/
начать?
конец перед номером, каждый из средних/
Оба представляют собой иерархические (подчиненные) отношения. Запрашиваемый ресурс для этого URL-адреса — страница html.
Сразу после пути идет查询参数
?key1=value1&key2=value2
дополнительные параметры, предоставляемые веб-серверу. Если это запрос GET, он обычно имеет параметр URL-адреса запроса. Если это запрос POST, он не будет добавлять параметры непосредственно после пути. Параметры разделены символом &键/值对
список. key1 = value1 — первая пара, key2 = value2 — вторая пара параметров
Сразу после параметра锚点
#SomewhereInTheDocument
является якорем для части самого ресурса. Точка привязки представляет собой тип «закладки» в ресурсе, который дает браузеру указание отображать содержимое в этой «закладке». Например, в HTML-документе браузер будет прокручивать до точки, где определена привязка; в видео- или аудиодокументе браузер перейдет к времени, представленному привязкой. Стоит отметить, что часть после знака #, также известная как идентификатор фрагмента, никогда не отправляется на сервер вместе с запросом.
HTTP-версия
Указывает версию протокола HTTP, используемую пакетом.
заголовок запроса
Эта часть контента является лишь общим введением, контента много, и он будет подробно описан в статье позже.
Выразив стартовую линию, давайте посмотрим на нее еще раз.请求头部
, теперь мы смотрим вверх и находимhttp://www.someSchool.edu/someDepartment/home.index
, взгляните на его заголовок запроса
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
Эта информация заголовка запроса относительно невелика, в первую очередь Host указывает хост, на котором находится объект. Вы можете подумать, что Host не нужен, потому что URL-адрес еще не указывает путь к объекту запроса? Информация, предоставленная этой строкой заголовка,Web 代理高速缓存
обязательный.Connection: close
Указывает, что браузер должен указать серверу использовать非持久连接
. Требуется, чтобы сервер закрыл соединение после отправки объекта ответа.User-agent
: это заголовок запроса, используемый, чтобы сообщить веб-серверу, что тип, используемый браузером,Mozilla/5.0
, который является браузером Firefox.Accept-language
Сообщите веб-серверу, что браузер хочет получить французскую версию объекта, при условии, что сервер поддерживает французский тип, в противном случае будет отправлена версия сервера по умолчанию. Ниже представлены основные поля сущностей (подробности см.developer.Mozilla.org/this-cn/docs/…обучение на официальном сайте MDN)
Существует четыре типа заголовков HTTP-запросов:通用标头
,请求标头
,响应标头
и实体标头
с последующим подробным объяснением.
Общий заголовок
Есть три основных общих заголовка, а именноDate
,Cache-Control
иConnection
Date
Date — это общий заголовок, он может появляться в заголовках запросов и ответов, его основное представление выглядит следующим образом.
Date: Wed, 21 Oct 2015 07:28:00 GMT
Это означает среднее время по Гринвичу, которое на восемь часов медленнее пекинского времени.
Cache-Control
Cache-Control — это общий заголовок, который может появляться в заголовках запросов и ответов. Существует много типов Cache-Control. Хотя это общий заголовок, в заголовке запроса есть некоторые функции. Некоторые из них доступны только в ответах. заголовки. Основные категории可缓存性
,阈值性
,重新验证并重新加载
и其他特性
Кэшируемость — это уникальная функция заголовков ответов, подробно описанная в разделе «Заголовки ответов».
Threshold, мой перевод может быть неточным, его оригинальный английский - Expiration, я перевел его в соответствии с его значением, вы можете почувствовать, что мой перевод имеет смысл, когда увидите эти значения.
-
max-age
: максимальное время, в течение которого ресурс считается действительным, сExpires
В отличие от этого, этот запрос относится к времени заголовка запроса, а Expires относится к заголовку ответа. (заголовок запроса) -
s-maxage
: Переписать заголовки запросов max-age и Expires, которые применимы только к общим кэшам и игнорируются приватными кэшами (я этого не понимаю, прочитайте Cache-Control заголовков ответов и потом разберитесь в них) (заголовки запроса) -
max-stale
: указывает максимальное время ответа, которое может принять клиент, в секундах. (заголовок ответа) -
min-fresh
: указывает, что клиент ожидает, что ответ будет действительным в течение указанного минимального времени. (заголовок ответа)
Connection
Connection решает, закрывать ли сетевое соединение после завершения текущей транзакции (одно трехстороннее рукопожатие и четыре волны). Существует два вида подключения, один из них持久性连接
, то есть сетевое соединение не закрывается после завершения транзакции
Connection: keep-alive
Другой非持久性连接
, то есть закрыть сетевое соединение после завершения транзакции
Connection: close
Другие распространенные заголовки HTTP1.1 следующие:
заголовок сущности
Заголовки объектов — это заголовки HTTP, описывающие содержимое тела сообщения. Заголовки объектов используются в HTTP-запросах и ответах. головаContent-Length
,Content-Language
,Content-Encoding
является главой организации.
- Заголовок объекта Content-Length указывает размер тела объекта в байтах, отправляемого получателю.
- Заголовок объекта Content-Language описывает языки, которые может принимать клиент или сервер, например
Content-Language: de-DE
Content-Language: en-US
Content-Language: de-DE, en-CA
-
Content-Encoding Это еще один проблемный атрибут, этот заголовок объекта используется для сжатия типа мультимедиа. Content-Encoding указывает, какая кодировка применяется к объекту.
Общие кодировки контента:gzip, сжать, выкачать, личность, этот атрибут можно использовать в пакетах запросов и ответных пакетах.
Accept-Encoding: gzip, deflate //请求头
Content-Encoding: gzip //响应头
Вот некоторые поля заголовка объекта
заголовки запросов
В приведенном выше примере атрибутов сообщения запроса относительно немного, вот пример официального сайта MDN.
GET /home.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/testpage.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
Cache-Control: max-age=0
Host
Заголовок запроса хоста указывает доменное имя сервера (для виртуальных хостов) и (необязательно) номер TCP-порта, на котором сервер прослушивает. Если номер порта не указан, порт по умолчанию для запрошенной службы будет использоваться автоматически (например, при запросе URL-адреса HTTP будет автоматически использоваться порт 80).
Host: developer.mozilla.org
вышеAccpet
,Accept-Language
,Accept-Encoding
— это заголовки запросов, относящиеся к согласованию контента, которые мы объясняем ниже.
Referer
Атрибут HTTP Referer является частью заголовка запроса.Когда браузер отправляет запрос на веб-сервер, он обычно приносит Referer, чтобы сообщить серверу, с какой страницы связана веб-страница, чтобы сервер мог получить некоторую информацию для обработки.
Referer: https://developer.mozilla.org/testpage.html
Upgrade-Insecure-Requests
Upgrade-Insecure-Requests — это заголовок запроса, который используется для того, чтобы сообщить серверу, что клиент предпочитает зашифрованные и аутентифицированные ответы.
Upgrade-Insecure-Requests: 1
If-Modified-Since
HTTP-интерфейс If-Modified-Since делает это条件请求
:
- Возвращая 200, сервер отправит запрошенный ресурс со статусом 200 только после последнего изменения ресурса в указанную дату.
- Если запрос не был изменен с самого начала, ответ вернет 304 без какого-либо тела ответа.
If-Modified-Since обычно используется в сочетании с If-None-Match, If-Modified-Since используется для подтверждения достоверности локального ресурса, принадлежащего прокси или клиенту. Получите дату и время обновления ресурса, подтвердив поле заголовкаLast-Modified
Чтобы убедиться.
На народном языке, еслиLast-Modified
После обновления ресурса сервера сервер ответит 200, еслиLast-Modified
Если ресурс с тех пор не обновлялся, возвращается 304.
If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
If-None-Match
Заголовок HTTP-запроса If-None-Match делает запрос условным. Для методов GET и HEAD, только если на сервере нетETag
, сервер отправит обратно запрошенный ресурс со статусом 200. Для других методов, только если окончательный существующий ресурсETag
Запрос будет обработан только в том случае, если он не соответствует ни одному из перечисленных значений.
If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
ETag — это заголовок ответа, описанный ниже.
обсуждение содержания
Механизм согласования содержимого означает, что клиент и сервер в ответ согласовывают содержимое ресурса, а затем предоставляют клиенту наиболее подходящий ресурс. При согласовании содержимого в качестве стандарта оценки будут использоваться язык, набор символов, метод кодирования и т. д. ресурса ответа.
Существует три основных типа согласования контента:
服务器驱动协商(Server-driven Negotiation)
В этом методе согласование содержимого выполняется сервером. Сервер будет автоматически обрабатывать в соответствии с полями заголовка запроса
客户端驱动协商(Agent-driven Negotiation)
В этом методе согласования клиент выполняет согласование содержимого.
透明协商(Transparent Negotiation)
Это комбинация управления сервером и клиентом, и это метод согласования контента между сервером и клиентом.
Существует множество типов согласования контента, основными из которых являютсяAccept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Language.
Accept
HTTP-заголовок Accept-Request рекламирует типы MIME, понятные клиенту.
Так что же такое MIME-типы? Прежде чем ответить на этот вопрос, вы должны сначала понять, что такое MIME.
MIME: MIME (многоцелевые расширения почты Интернета) — это интернет-стандарт для описания типа содержимого сообщений. Сообщения MIME могут содержать текст, изображения, аудио, видео и другие данные, относящиеся к конкретному приложению.
То есть тип MIME на самом деле представляет собой набор типов содержимого сообщения. Так что же такое MIME-типы?
文本文件
: текст/html, текст/обычный, текст/css, приложение/xhtml+xml, приложение/xml
图片文件
: изображение/jpeg, изображение/gif, изображение/png
视频文件
: видео/mpeg, видео/quicktime
应用程序二进制文件
: приложение/октет-поток, приложение/zip
Например, если браузер не поддерживает отображение изображений PNG, то Accept не указывает изображение/png, а указывает типы изображений, такие как изображение/gif и изображение/jpeg, которые могут быть обработаны.
Общий тип MIME также будет соответствоватьq
Используется с этим свойством, что такое q? q представляет вес, давайте посмотрим на пример
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Что это означает? Если вы хотите показатьТип носителя повышает приоритет, затем используйте q= для дополнительного представления значения веса.Когда вес не отображается, значение по умолчанию равно 1.0.Я дам вам таблицу, и вы поймете
q | MIME |
---|---|
1.0 | text/html |
1.0 | application/xhtml+xml |
0.9 | application/xml |
0.8 | * / * |
Другими словами, это порядок размещения, сначала с большими весами, затем с низкими весами,application/xml;q=0.9
представляет собой неделимое целое.
Accept-Charset
Атрибут accept-charset указывает набор символов, принятый сервером для обработки данных формы.
Атрибут accept-charset позволяет указать диапазон наборов символов, которые сервер должен поддерживать, чтобы правильно интерпретировать данные в форме.
Значение этого свойства представляет собой список имен наборов символов, заключенных в кавычки. Если допустимый набор символов не соответствует символам, используемым пользователем, браузер может игнорировать форму или обрабатывать ее по-другому.
Значение по умолчанию для этого свойстваunknown
, представляющий форму в том же наборе символов, что и документ, содержащий форму.
Обычно используются следующие наборы символов: UTF-8 — кодировка символов Unicode, ISO-8859-1 — кодировка символов латинского алфавита.
Accept-Language
Поле заголовка Accept-Language используется для информирования сервера о наборе естественного языка, который может обрабатывать пользовательский агент (ссылаясь на китайский или английский и т. д.), и об относительном приоритете набора естественного языка. Можно указать сразу несколько наборов естественных языков.
Как и поле заголовка Accept, по значению весаq
для указания относительного приоритета.
Accept-Language: en-US,en;q=0.5
Вероятно, мы представим эти типы заголовков запросов. Позже будет статья, в которой подробно будут рассмотрены все заголовки ответов. Ниже приводится сводка заголовков ответов на основе HTTP 1.1.
заголовки ответов
Заголовки ответа — это заголовки HTTP, которые можно использовать в ответах HTTP, что звучит как чушь, но это объясняется именно так. Не все заголовки, которые появляются в ответе, являются заголовками ответа. Есть также некоторые специальные заголовки, о которых мы говорили выше, есть общие заголовки и заголовки сущностей, которые также появляются в заголовках ответов, напримерContent-Length
является заголовком объекта, но в этом случае эти запросы объекта обычно называются заголовками ответа. Давайте возьмем пример в качестве примера, чтобы обсудить с вами заголовок ответа
200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Etag: "c561c68d0ba92bbeb8b0f612a9199f722e3a621a"
Keep-Alive: timeout=5, max=997
Last-Modified: Mon, 18 Jul 2016 02:36:04 GMT
Server: Apache
Set-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secure
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
x-frame-options: DENY
код состояния ответа
Первый должен быть200 OK
, который представляет собой код состояния заголовка ответа HTTP, указывающий на успешное выполнение ответа. Существует множество кодов состояния для заголовков ответов HTTP, и предусмотрены следующие положения:
от2xx
Начало запроса указывает на успешный ответ.
код состояния | значение |
---|---|
200 | успешный ответ |
204 | Запрос успешно обработан, но нет ресурсов для возврата |
206 | В ответ на определенную часть ресурса содержимое сущности, указанной Content-Range. |
от3xx
Все, что начинается с s, указывает на то, что для выполнения запроса требуются дополнительные операции.
код состояния | значение |
---|---|
301 | Постоянное перенаправление, этот код состояния указывает, что URI запрошенного ресурса был переназначен, и в будущем следует использовать существующий URI ресурса. |
302 | Временная переадресация. Этот код состояния указывает, что запрошенному ресурсу был назначен новый URI, и есть надежда, что пользователь (на этот раз) сможет использовать новый URI для доступа. |
303 | Этот код состояния указывает, что, поскольку для ресурса, соответствующего запросу, существует другой URI, для получения запрошенного ресурса следует использовать метод GET. |
304 | Этот код состояния указывает, что когда клиент отправляет условный запрос, сервер разрешает этому запросу доступ к ресурсу, но условие не выполняется. |
307 | Временная переадресация. Этот код состояния имеет то же значение, что и 302 Found. |
от4xx
ответ указывает, что клиент является причиной ошибки.
код состояния | значение |
---|---|
400 | Этот код состояния указывает на наличие синтаксической ошибки в сообщении запроса. При возникновении ошибки необходимо изменить содержимое запроса и повторно отправить запрос. |
401 | Этот код состояния указывает, что для отправленного запроса требуется аутентификационная информация, прошедшая HTTP-аутентификацию (BASIC-аутентификация, DIGEST-аутентификация). |
403 | Этот код состояния указывает, что доступ к запрошенному ресурсу был отклонен сервером. |
404 | Этот код состояния указывает, что запрошенный ресурс не может быть найден на сервере. |
от5xx
Заголовки ответов, начинающиеся с all, указывают на то, что на самом сервере произошла ошибка.
код состояния | значение |
---|---|
500 | Этот код состояния указывает на то, что при выполнении запроса на стороне сервера произошла ошибка. |
503 | Этот код состояния указывает на то, что сервер временно перегружен или отключен для обслуживания и не может сейчас обрабатывать запросы. |
Access-Control-Allow-Origin
Возвращаемый заголовок HTTP может иметь Access-Control-Allow-Origin,Access-Control-Allow-Origin
Указание источника указывает браузеру разрешить доступ к ресурсам из этого источника. else - для запросов без учетных данных*
Подстановочный знак, который указывает браузеру разрешить доступ к ресурсу любому источнику. Например, чтобы разрешить источникhttps://mozilla.org
В коде доступа к ресурсу можно указать:
Access-Control-Allow-Origin: https://mozilla.org
Vary: Origin
Если сервер указывает один источник вместо*
подстановочные знаки, сервер также должен включать в заголовок ответа Vary.Origin
, чтобы указать клиенту, что ответ сервера будет варьироваться в зависимости от значения исходного заголовка запроса.
Keep-Alive
Как мы упоминали выше, заголовки HTTP-сообщений делятся на четыре типа, которые фактически основаны на上下文
классифицировать
Другая классификация основана на代理
Классификация, согласно агенту, будет разделена на端到端头
и逐跳标头
А Keep-Alive представляет время существования непостоянного соединения Connection следующим образом:
Connection: Keep-Alive
Keep-Alive: timeout=5, max=997
Keep-Alive принимает два параметра, которые представляют собой списки параметров, разделенных запятыми, каждый из которых состоит из идентификатора и значения, разделенных знаком равенства =.
timeout
: Указывает минимальное время (в секундах), в течение которого бездействующее соединение должно оставаться открытым.
max
: указывает максимальное количество запросов, которые можно отправить по этому соединению, прежде чем соединение будет закрыто.
Приведенный выше HTTP-код означает, что максимальное время ожидания составляет 5 с, а максимальное количество запросов на подключение — 997.
Server
Заголовок сервера содержит информацию о программном обеспечении, используемом исходным сервером для обработки запроса.
Следует избегать чрезмерно подробных и подробных значений сервера, поскольку они могут раскрывать детали внутренней реализации, что может облегчить злоумышленникам поиск и использование известных брешей в безопасности. Например, написано следующее
Server: Apache/2.4.1 (Unix)
Set-Cookie
Cookie — это еще одно поле содержимого. Мы поговорим о Cookie позже в этой статье. Здесь нам нужно вспомнить поля заголовков, определенные в других RFC, таких как Cookie, Set-Cookie и Content-Disposition. Они не являются полями заголовков HTTP 1.1, но использование остается высоким.
Transfer-Encoding
Поле заголовка Transfer-Encoding указывает метод кодирования, используемый при передаче тела сообщения.
Transfer-Encoding: chunked
Метод кодирования передачи HTTP/1.1 действителен только для группового кодирования передачи.
X-Frame-Options
Поля заголовка HTTP являются саморасширяемыми. Поэтому в приложении веб-серверов и браузеров будут появляться различные нестандартные поля заголовков.
поле заголовкаX-Frame-Options
Он относится к заголовку ответа HTTP и используется для управления отображением содержимого веб-сайта в теге Frame других веб-сайтов. Его основная цель — предотвратить атаки кликджекинга.
Ниже приведена сводка заголовков ответа на основе HTTP 1.1.
Поля заголовка не-HTTP/1.1
Поля заголовков, используемые при обмене данными и взаимодействии по протоколу HTTP, не ограничиваются 47 полями заголовков, определенными в RFC2616. Существуют также поля заголовков, определенные в других RFC, таких как Cookie, Set-Cookie и Content-Disposition, которые также используются очень часто. Эти неформальные поля заголовков описаны в RFC4229 «Регистрации полей HTTP-заголовков».
Сквозные заголовки и заголовки Hop-by-hop
Поля заголовка HTTP будут определять поведение кеширующих прокси и не кеширующих прокси, которые делятся на 2 типа.
одинEnd-to-end
заголовок иHop-by-hop
капитал
Сквозной заголовок
Эти заголовки должны быть отправлены конечному получателю сообщения: запрашивающему серверу или отвечающему клиенту. Промежуточные прокси должны повторно передавать неизмененные заголовки, а кэши должны хранить эту информацию.
Хоп за прыжком (хоп за прыжком) сначала
Заголовки в этой категории действительны только для одной пересылки и больше не будут пересылаться из-за прохождения через кеш или прокси.
Ниже перечислены поля заголовков переходов в HTTP/1.1. За исключением этих 8 полей заголовка, все остальные поля относятся к сквозному заголовку.
Соединение, Keep-Alive, Proxy-Authenticate, Proxy-Authorization, Trailer, TE, Transfer-Encoding, Upgrade
Преимущества и недостатки HTTP
Преимущества HTTP
Простой, гибкий и легко расширяемый
Наиболее важным и выдающимся преимуществом HTTP является то, чтоПростой, гибкий и легко расширяемый.
Протокол HTTP относительно прост, и его основными компонентами являются:header + body
, информация заголовка также представлена в простом текстовом формате, а сообщение HTTP-запроса также может угадывать общее значение в соответствии с английским языком, что снижает порог обучения и позволяет большему количеству людей исследовать и разрабатывать HTTP-приложения.
Таким образом, на простой основе существует больше HTTP-протоколов.灵活
и易扩展
Преимущества.
Каждый основной компонент протокола HTTP, такой как метод запроса, URI, код состояния, фраза причины, поле заголовка и т. д., не был определен, что позволяет разработчикам настраивать, расширять или интерпретировать его по своему усмотрению, предоставляя браузерам и серверам наилучшие возможности. степень доверия и надежности бесплатно.
Широкое применение и зрелая среда
Поскольку он слишком прост и популярен, он широко используется. Поскольку протокол HTTP сам по себе не принадлежит языку, он не ограничивает определенный язык программирования или операционную систему, поэтому, естественно,Межъязыковая, кроссплатформеннаяпревосходство. Более того, из-за своей простой природы его легко реализовать, поэтому почти все языки программирования имеют библиотеки HTTP-вызовов и периферийные инструменты разработки и тестирования.
С развитием мобильного Интернета щупальца HTTP проникли во все уголки мира, от простых веб-страниц до сложных данных JSON и XML, от браузеров на настольных компьютерах до различных приложений, новостей, форумов, магазинов, мобильных игр, вы быть в затруднении, чтобы найти место, которое не использует HTTP.
нет статуса
Фактически безгражданство является как преимуществом, так и недостатком. Поскольку сервер не имеет возможности памяти, ему не требуются дополнительные ресурсы для записи информации о состоянии, что не только проще в реализации, но и снижает нагрузку на сервер, позволяя использовать больше ЦП и памяти для предоставления внешних служб.
Недостатки HTTP
нет статуса
Поскольку у сервера нет памяти, он не может поддерживать несколько шагов подряд事务
работать. Необходимость каждый раз запрашивать идентификационную информацию не только утомительна, но и увеличивает объем ненужной передачи данных. Из этого возникCookie
Технологии.
простой текст
В HTTP-протоколе есть и палка о двух концах, сочетающая преимущества и недостатки, то естьпередача открытого текста. Открытый текст означает, что сообщение в протоколе (точнее, заголовочная часть) использует не бинарные данные, а в простой и читаемой текстовой форме.
По сравнению с бинарными протоколами, такими как TCP и UDP, его преимущества очевидны. Он не требует никаких внешних инструментов. После захвата пакетов с помощью браузера, Wireshark или tcpdump его можно легко просмотреть или изменить невооруженным глазом для нашей разработки и отладки. Работа приносит большое удобство.
Конечно, недостатки тоже очевидны.不安全
, можно отслеживать и шпионить. Поскольку невозможно определить личности двух взаимодействующих сторон, невозможно определить, было ли изменено сообщение.
представление
Производительность HTTP неплохая, но она не полностью адаптирована к современному Интернету, и есть еще много возможностей для улучшения.
Использованная литература:
En. Wikipedia.org/wiki/hyper T…
«Geek Time» — Перспективный HTTP-протокол
developer.Mozilla.org/en-US/docs/…
baike.baidu.com/item/веб-сервер…
baike.baidu.com/item/Сеть доставки контента…
Encyclopedia.Baidu.com/item/HTML/9…
у-у-у. Краткое описание.com/afraid/3 в конце 8 1879…
«Компьютерные сети — нисходящий подход»
«Иллюстрированный HTTP»