Общий контекст статьи таков
Я полагаю, что после введения в предыдущие две статьи читатели имеют предварительное представление о компьютерных сетях. Затем мы будем классифицировать и вводить различные уровни протоколов. Мы по-прежнему вводим его сверху вниз. Такое введение легче для читателей. чтобы лучше принять и усвоить (прямо говоря, проще понравиться моим статьям и сбежать).
В обычных условиях пользователей не слишком волнует, как на самом деле работают сетевые приложения, но мы программисты, поэтому мы просто применяемЧжу Вэй сказал в предложении: Как вы думаете, программисты компьютерных сетей не понимают, вы указываете на пользователей Интернета, чтобы понять?? Есть ли вкус внутри?
Прикладной уровень относится к уровням 5, 6 и 7 стандартной модели OSI, которыесеансовый уровень, уровень представления, прикладной уровень.
Когда мы будем вводить, мы будем использовать стандартную модель OSI, потому что она охватывает больше уровней, так что вы также можете углубить свое понимание модели TCP/IP.
Концепции прикладного уровня
Определение протоколов прикладного уровня
В настоящее время все больше и больше приложений используют сеть для связи, эти приложения включают веб-браузер, удаленный вход в систему, электронную почту, передачу файлов, загрузку файлов и т. д. Протоколы на уровне приложений представляют собой правила и стандарты для такого поведения.
应用层协议(application layer protocol)
Определяет, как процессы приложений в разных конечных системах передают сообщения друг другу. В общем случае будет определено следующее
- Тип сообщения, которым обмениваются: сообщение запроса или соответствующее сообщение.
- Объяснение полей сообщения: подробное описание каждого поля в сообщении.
- Семантика полей сообщения: что означает каждое поле сообщения
- Когда и как процессы отправляют сообщения и ответы
Архитектура прикладного уровня
应用层体系结构
На английском языке это Архитектура приложений, которая относится к структуре прикладного уровня.Вообще говоря, прикладной уровень имеет две основные архитектуры.
- клиент-серверная архитектура
- Одноранговая архитектура (архитектура P2P)
Давайте сначала поговорим о концепции клиент-серверной архитектуры.
В клиент-серверной архитектуре всегда есть хост, который называется服务器(Server)
, что обеспечивает от客户(client)
оказание услуг. Наш самый распространенный серверWeb 服务器
, веб-сервер обслуживает浏览器
запрос.
Когда веб-сервер получает запрос пользователя через браузер, он проходит через ряд операций по предоставлению информации или страниц приложению через браузер. Этот шаблон известен как шаблон клиент-сервер.
Есть два момента, на которые следует обратить внимание
- В модели клиент-сервер клиенты обычно не взаимодействуют друг с другом.
- Серверы обычно имеют фиксированные общеизвестные IP-адреса, обеспечивающие доступ.
Модель клиент-сервер обычно имеет место, когда количество клиентов резко возрастает, так что один сервер не может выполнить большое количество клиентских запросов. Для этого обычно необходимо иметь большое количество хостов.数据中心(data center)
, используемый для отслеживания всех запросов пользователей.
Напротив, P2P или одноранговая архитектура очень мало зависит от таких центров обработки данных, потому что в архитектуре P2P приложения взаимодействуют напрямую между двумя хостами, которые называются对等方
, в отличие от центральной сетевой системы с центральным сервером, каждый клиент одноранговой сети является не только узлом, но и выполняет функцию сервера. Общие приложения архитектуры P2P:Обмен файлами, видеоконференции, VoIPЖдать.
Одной из самых больших особенностей P2P является то, что扩展性(self-scalability)
, потому что важной целью сети P2P является предоставление всем клиентам возможности предоставлять ресурсы, получать ресурсы, совместно использовать пропускную способность, пространство для хранения и т. д. Следовательно, когда к системе присоединяется больше узлов и поступает больше запросов, емкость всей системы также увеличивается. Это недоступно в клиент-серверной структуре с фиксированным набором серверов, что является масштабируемостью P2P.
связь процесса
Выше мы упомянули две архитектуры: одна — модель клиент-сервер, а другая — модель одноранговой сети P2P. Все мы знаем, что компьютер позволяет запускать несколько приложений одновременно, нам кажется, что эти приложения работают одновременно, так как же они взаимодействуют?
С точки зрения операционной системы, общение на самом деле进程(process)
а не программы. Процесс можно рассматривать как программу, работающую в конечной системе. Когда несколько процессов выполняются в одной и той же конечной системе, они взаимодействуют друг с другом с помощью механизма межпроцессного взаимодействия. Правила связи между процессами определяются операционной системой.
Интерфейс между процессом и компьютерной сетью
Компьютеры огромны и сложны, как и компьютерные сети. Приложение не может состоять только из одного процесса. Это также согласованная операция нескольких процессов. Однако как взаимодействуют процессы, распределенные между несколькими конечными системами? На самом деле между каждым процессом будет套接字(socket)
Программный интерфейс существует, сокет — это внутренний интерфейс приложения, приложение может отправлять или получать данные через него и может выполнять такие операции, как открытие, чтение, запись и закрытие, как файл.
Простая аналогия между сокетами и сетевыми процессами на примере: процесс можно сравнить с домом, а его сокет эквивалентен двери дома.Когда процесс хочет общаться с другими процессами, он выталкивает сообщение Outside the door. , а затем перенесите сообщение в другой дом через транспортное устройство и войдите в дом через дверь для использования.
На следующем рисунке представлена блок-схема связи через сокеты.
Как видно из рисунка, Socket принадлежит хосту или сервисному процессу内部接口
, управляемый разработчиком приложения, связь между двумя конечными системами будет передаваться в буфер TCP другой конечной системы через буфер TCP по сети, а сокет считывает сообщение из буфера TCP для внутреннего использования заявление.
Сокеты — это программируемый интерфейс для создания сетевых приложений, поэтому сокеты также известны как интерфейс между приложением и сетью.
应用程序编程接口(Application Programming Interface,API)
. Разработчик приложения может управлять внутренними деталями сокета, но не может управлять передачей транспортного уровня, может быть выбран только транспортный протокол транспортного уровня, а также могут быть выбраны параметры передачи транспортного уровня, такие как максимальная буферизация и максимальная длина пакета Ожидание .
адресация процесса
Выше мы упоминали, что сетевые приложения отправляют сообщения друг другу, так как же узнать, куда следует отправлять сообщения? Есть ли какой-то механизм, который позволяет вам узнать, куда вы можете отправить его? Это похоже на то, как если вы хотите отправить электронное письмо, вы написали содержимое, но не знаете, куда его отправить, поэтому в настоящее время должен быть механизм, чтобы узнать адрес другой стороны, этот механизм может идентифицировать только адрес другой стороны, такой адрес, которыйIP地址
. Мы подробно обсудим содержание IP-адресов в следующих статьях, а сейчас нам нужно только знать, что IP является 32-битной величиной и может однозначно идентифицировать адрес любого хоста в Интернете.
Достаточно ли просто знать IP-адрес? Мы знаем, что на компьютере может работать несколько сетевых приложений, так как же определить, какое сетевое приложение принимает отправленное сообщение? Так что в это время также необходимо знать сетевое приложение端口号(port number)
. Например, веб-приложение должно быть помечено портом 80, а программа почтового сервера — 25.
Как приложения выбирают службы доставки
Мы знаем, что приложение относится к четырехуровневому интернет-протоколу.应用层
протокол, и четырехуровневый протокол должны помогать друг другу выполнять совместную работу. Что ж, на данный момент у нас есть только протокол прикладного уровня, нам нужно отправить сообщение, как мы отправим сообщение? Как будто ты знаешь, где твой пункт назначения, как ты туда доберешься? Пешком, автобусом, метро или такси?
Приложение отправляет сообщение交通工具
Есть также много вариантов, мы можем выбрать изНадежность передачи данных, пропускная способность, синхронизация и безопасностьЧтобы рассмотреть, вот особенности, которые необходимо учитывать.
数据传输是否可靠
Мы обсуждали ранее, что пакеты будут иметь проблемы с потерей пакетов в компьютерных сетях.Серьезность проблемы потери пакетов связана с характером сетевого приложения.Если есть проблема в процессе электронной почты, передачи файлов, удаленного хоста , передача веб-документов, потеря данных могут иметь очень серьезные последствия. Если это похоже на онлайн-игру, влияние видеоконференций с участием нескольких человек может быть относительно небольшим. Ввиду этого надежность передачи данных также является первым вопросом, который необходимо рассмотреть. Следовательно, если протокол предоставляет такую услугу для обеспечения доставки данных, считается, что он обеспечивает可靠数据传输(reliable data transfer)
, приложения, допускающие потерю данных, называются容忍丢失的应用(loss-tolerant application)
.
吞吐量
В предыдущей статье мы ввели понятие пропускной способности, то есть скорости, с которой процесс-отправитель может доставлять биты процессу-получателю во время передачи данных в сетевых приложениях. Приложения с требованиями к пропускной способности называются带宽敏感的应用(bandwidth-sensitive application)
. Приложения, чувствительные к полосе пропускания, предъявляют особые требования к пропускной способности, в то время как弹性应用(elastic application)
Доступная пропускная способность может быть использована в большей или меньшей степени в зависимости от пропускной способности, доступной в данный момент.
定时
Что означает тайминг? Время может гарантировать, что отправка и получение двух приложений в сети могут быть завершены в течение заданного времени.Это также фактор, который приложение должно учитывать при выборе транспортной услуги.Звучит естественно, и ваше сетевое приложение должно отправлять и получать пакеты.Понятие времени, например, в игре, вы не можете отправить пакет данных в течение длительного времени, а другая сторона толкнула вышку, а вы все еще застряли посреди дороги.
安全性
Наконец, выбор протокола доставки должен предоставлять приложению одну или несколько служб безопасности.
Транспортные услуги, которые может предоставить Интернет
После разговора о выборе транспортных услуг пришло время поговорить о том, какие услуги может предоставить Интернет. Фактически Интернет предоставляет приложениям два протокола транспортного уровня, а именно:UDP
иTCP
, ниже приведены требования к выбору некоторых сетевых приложений, вы можете выбрать соответствующий протокол транспортного уровня в соответствии с вашими потребностями.
применение | данные потеряны | пропускная способность | чувствительный ко времени |
---|---|---|---|
передача файлов | нельзя потерять | эластичность | Не чувствительный |
электронная почта | нельзя потерять | эластичность | Не чувствительный |
веб-документ | нельзя потерять | эластичность | Не чувствительный |
Интернет-телефония/видеоконференции | толерантность к потерям | эластичность | Чувствительный, 100 мс |
Потоковое аудио/видео | толерантность к потерям | эластичность | чувствительный, несколько секунд |
интерактивная игра | толерантность к потерям | эластичность | Да, 100 мс |
сообщение со смартфона | нельзя потерять | эластичность | Это не имеет значения |
Поговорим о сценариях применения этих двух транспортных протоколов.
TCP
TCP
Характеристики сервисной модели в основном включают следующее:
- услуга, ориентированная на соединение
После отправки дейтаграммы прикладного уровня TCP позволяет клиенту и серверу обмениваться управляющей информацией транспортного уровня друг с другом. Этот процесс рукопожатия должен напомнить клиенту и серверу, что они должны быть готовы принимать дейтаграммы. После этапа рукопожатияTCP 连接(TCP Connection)
Установлено. Это полнодуплексное соединение, т.е.Процессы на обеих сторонах соединения могут одновременно отправлять и получать сообщения по этому соединению.. Когда приложение завершит отправку сообщения, соединение должно быть разорвано.
- надежная передача данных
Процесс связи может полагаться на TCP для доставки всех отправленных данных в правильном порядке без ошибок. Приложения могут полагаться на TCP для доставки одного и того же потока байтов в сокет получателя без потери байтов и избыточности.
- контроль перегрузки
Управление перегрузкой TCP не обязательно приносит прямую пользу процессу связи, но может принести пользу Интернету в целом. Когда сеть между получателем и отправителем перегружена, управление перегрузкой TCP подавляет процесс отправки (клиент или сервер), мы подробно обсудим управление перегрузкой позже.
UDP
UDP
это легкий протокол доставки, который предоставляет только минимальные услуги. UDP не требует установления соединения, поэтому перед обменом данными между двумя процессами не выполняется рукопожатие. UDP также не гарантирует, будет ли пакет передан на сервер, это похоже на невмешательство лавочника. Кроме того, пакеты, поступающие на принимающий процесс, также могут поступать не по порядку.
Ниже приведены протоколы, выбранные некоторыми приложениями, перечисленными в таблице выше.
применение | протокол прикладного уровня | Поддерживаемое соглашение о доставке |
---|---|---|
электронная почта | SMTP | TCP |
удаленный доступ к терминалу | Telnet | TCP |
Web | HTTP | TCP |
передача файлов | FTP | TCP |
потоковое мультимедиа | HTTP | TCP |
Интернет-телефония | SIP, RTP | TCP или UDP |
протокол прикладного уровня
Давайте сосредоточимся на более важных прикладных протоколах на прикладном уровне.
WWW и HTTP
万维网(WWW, World Wide Web)
Это система, которая отображает информацию в Интернете в виде гипертекста, то есть в Сети. Клиент, используемый для отображения результатов WWW, называется веб-браузером.В браузере нам не нужно обращать внимание на то, на каком сервере находится контент, к которому мы хотим получить доступ, нам нужно только знать контент, к которому мы хотим получить доступ.
WWW определяет еще три важных понятия, эти понятия в основном
-
URI
, который определяет средства и места для доступа к информации -
HTML
, который определяет представление информации -
HTTP
, который определяет спецификацию доступа к WWW
URI / URL
URI
Полное название — (Uniform Resource Identifier), китайское название — Uniform Resource Identifier, которое можно использовать для уникальной маркировки ресурсов в Интернете.
URL
Полное название (Uniform Resource Locator), китайское название — Uniform Resource Locator, как мы его обычно называем.网址
, который на самом деле является подмножеством URI.
URI включает в себя не только URL, но и URN (Uniform Resource Name), и связь между ними следующая:
URI больше не ограничивается идентификацией Интернет-ресурсов, его можно использовать в качестве идентификатора для всех ресурсов.
HTML
HTML, известный как язык гипертекстовой разметки, является языком идентификации. Он включает в себя ряд этикеток. С помощью этих тегов можно унифицировать формат документа в сети, а разрозненные интернет-ресурсы соединить в логическое целое. Текст HTML — это описательный текст, состоящий из команд HTML, которые могут описывать текст, графику, анимацию, звуки, таблицы, ссылки и многое другое.
HTTP
Протокол прикладного уровня в ИнтернетеHTTP(HyperText Transfer Protocol, HTTP)
, протокол передачи гипертекста, основной протокол Интернета. Ниже нам нужно понять несколько основных концепций HTTP.
страница в Интернете
Веб-страницы также называютсяWeb Page
, который состоит из объектов,对象(object)
Проще говоря, это файл.Этот файл может быть HTML-файлом, изображением, Java-приложением и т. д. Все это можно найти по URI. Веб-страница содержит множество объектов, и можно сказать, что веб-страница представляет собой набор объектов.
браузер
Так же, как основные почтовые ящики используют протокол передачи электронной почтыSMTP
Точно так же браузер является основным носителем, использующим протокол HTTP.Что касается браузеров, сколько вы можете придумать? Да, с быстрым развитием браузеров после войны Netscape, браузеры, появившиеся до сих пор, в основном включают:
веб сервер
Официальное название веб-сервера называетсяWeb Server
, веб-сервер может предоставлять документы веб-клиентам, таким как браузеры, а также может размещать файлы веб-сайтов для просмотра во всем мире; он может размещать файлы данных для загрузки во всем мире. В настоящее время тремя наиболее распространенными веб-серверами являются Apache, Nginx и IIS.
CDN
Полное название CDNContent Delivery Network
,Сейчас内容分发网络
, который применяет технологии кэширования и прокси в протоколе HTTP для ответа на запрос клиента вместо исходного сайта. CDN — это сеть, построенная на базе существующей сети, опирающаяся на пограничные серверы, развернутые в разных местах, чтобы пользователи могли использовать балансировку нагрузки, распределение контента, планирование и другие функциональные модули центральной платформы.就近
Получите нужный вам контент, уменьшите перегрузку сети и улучшите скорость отклика пользователя и количество попаданий. Ключевые технологии CDN:内容存储
и分发技术
.
Например, если вы собираетесь купить книгу на Amazon, вы можете купить ее только через веб-сайт для покупок, а затем отправить домой из Соединенных Штатов. нужно отправить через США. , книга может быть доставлена вам в кратчайшие сроки из Китая.
WAF
WAF — это сеть应用程序防护系统(Web Application Firewall,简称 WAF)
, который представляет собой метод выполнения серии HTTP/HTTPS安全策略
для обеспечения защиты веб-приложений на уровне приложений防火墙
, который специально обнаруживает HTTP-трафик и представляет собой технологию безопасности для защиты веб-приложений.
WAF обычно располагается перед веб-сервером и может предотвращать такие атаки, как SQL-инъекции и межсайтовые сценарии.В настоящее время широко используется проект с открытым исходным кодом ModSecurity, который можно полностью интегрировать в Apache или Nginx.
WebService
WebService — это веб-приложение,WebService — это технология удаленного вызова на разных языках программирования и платформах операционных систем..
WebService – это спецификация разработки службы приложений, определенная W3C. Она использует архитектуру клиент-сервер master-slave, обычно использует WSDL для определения интерфейсов службы и использует протокол HTTP для передачи сообщений XML или SOAP.Технология архитектуры сервисов на основе Web (HTTP), который может работать как во внутренней сети, так и во внешней сети после должной защиты.
HTTP
HTTP — это соглашение и спецификация для передачи текста, изображений, аудио, видео и других гипертекстовых данных между двумя точками в компьютерном мире. HTTP — это протокол прикладного уровня, который использует TCP в качестве протокола транспортного уровня, поскольку документы и данные, по нашему мнению, являются важной информацией и не могут быть потеряны.
Процесс ответа на HTTP-запрос
Давайте рассмотрим процесс HTTP-запрос-ответ на примере. Мы предполагаем, что 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 或磁盘)
объект полученWoohoo. какая-то школа. квота / некоторые уходят М…В ответном сообщении 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-запрос, который мы описали выше, является своего рода非持久链接
, потому что каждый раз, когда TCP закрывает TCP-соединение после доставки сообщения, каждое TCP-соединение передает только одно сообщение запроса и сообщение ответа.
Непостоянные соединения имеют некоторые缺点
.
- Во-первых, для каждого запрошенного объекта должно быть установлено и поддерживаться новое соединение.
- Во-вторых, для каждого такого соединения выделение буферов TCP и поддержка переменных TCP как на клиенте, так и на сервере создает серьезную нагрузку на веб-сервер. Потому что веб-сервер может обслуживать сотни или даже тысячи клиентских запросов одновременно.
В случае постоянных соединений HTTP 1.1 сервер сохраняет TCP-соединение открытым после отправки ответа. Между одним и тем же клиентом и сервером последующие сообщения запроса и ответа могут быть отправлены по одному и тому же соединению. Как правило, HTTP-сервер должен закрывать соединение, если оно не использовалось по истечении определенного (настраиваемого) интервала времени.
Формат HTTP-сообщения
Мы описали процесс ответа на HTTP-запрос выше. Думаю, вы лучше понимаете HTTP. Давайте рассмотрим формат HTTP-сообщения.
Протокол HTTP в основном состоит из трех частей:
-
起始行(start line)
: основная информация, описывающая запрос или ответ; -
头部字段(header)
: Используйте форму ключ-значение для более подробного описания сообщения; -
消息正文(entity)
: фактически передаваемые данные, которые не обязательно представляют собой простой текст, но могут быть двоичными данными, такими как изображения и видео.
где стартовая строка и поля заголовка и становятся请求头
или响应头
, вместе именуемыеHeader
; тело сообщения также называется сущностью, называемойbody
. Протокол HTTP предусматривает, что каждое отправляемое сообщение должно иметь заголовок, номожет не иметь тела, то есть информация заголовка является обязательной, а информация объекта необязательна. И между заголовком и телом должна быть пустая строка (CRLF). Если вы используете изображение для представления HTTP-запроса, я думаю, что оно должно быть следующим
Если его немного уточнить, то он выглядит следующим образом
Это изображение требует внимания, если вы используетеGET
метод, тело объекта отсутствует, если вы используетеPOST
метод, будет сущность. Когда пользователь отправляет форму, HTTP-клиенты обычно используют метод POST, в отличие от HTML-форм, которые обычно извлекаются с использованием метода GET. Метод HEAD аналогичен методу GET, за исключением того, что метод HEAD не возвращает объект.
Давайте посмотрим на ответное сообщение HTTP.
Можно видеть, что между сообщением запроса и ответным сообщением различается только заголовок запроса, а остальная информация одинакова.
Строка запроса сообщения запроса:
GET /some/page.html HTTP/1.1
Ответное сообщение:
HTTP/1.1 200 OK
Файлы cookie и сеансы
HTTP-протокол — это无状态协议
, то есть каждый раз, когда сервер получает запрос от клиента, это совершенно новый запрос, и сервер не знает историческую запись запроса клиента; основная цель сеанса и файла cookie — компенсировать отсутствие состояния Природа HTTP.
Что такое сессия
Клиент запрашивает сервер, и сервер открывает блок для этого запроса内存空间
, этот объект является объектом сеанса, структура храненияConcurrentHashMap
. Сеанс компенсирует природу HTTP без сохранения состояния, и сервер может использовать сеанс для хранения некоторых записей операций клиента во время того же сеанса.
Сессия, как определить, одна ли это сессия
Когда сервер получает запрос в первый раз, он открывает пространство сеанса (создает объект сеанса), генерирует идентификатор сеанса и отправляет запрос клиенту для его установки через **Set-Cookie: JSESSIONID=XXXXXXX* * команда в заголовке ответа Cookie response После того, как клиент получит ответ, на локальном клиенте будет установлена информация о cookie **JSESSIONID=XXXXXXX **, а время истечения срока действия cookie — это конец сеанса браузера;
Затем каждый раз, когда клиент отправляет запрос на тот же веб-сайт, заголовок запроса будет содержать информацию о файлах cookie (включая sessionId), а затем сервер считывает информацию о файлах cookie в заголовке запроса и получает значение с именем JSESSIONID и получает на этот раз SessionId запроса.
Недостатки сеанса
Сессионный механизм имеет недостаток, например, сервер А хранит сессию, то есть после балансировки нагрузки, если трафик А резко возрастает в течение определенного периода времени, он будет переадресован на Б для доступа, но сервер Б этого не делает. не хранить сеанс A, что приведет к сбою сеанса.
Что такое файлы cookie
Файлы cookie в протоколе HTTP включаютWeb Cookie
и浏览器 Cookie
, представляющий собой небольшой фрагмент данных, который сервер отправляет веб-браузеру. Файл cookie, отправленный сервером в браузер, сохраненный браузером и отправленный на сервер со следующим запросом. Обычно он используется, чтобы определить, исходят ли два запроса от одного и того же браузера, например, если пользователь остается в системе.
Механизм HTTP Cookie является дополнением и улучшением протокола HTTP без сохранения состояния.
Файлы cookie в основном используются для следующих трех целей.
会话管理
Логин, корзина, счет в игре или что-то еще, что сервер должен помнить.
个性化
Пользовательские настройки, темы и другие настройки
追踪
Записывайте и анализируйте поведение пользователей
Раньше файлы cookie использовались для общего хранения данных на стороне клиента. Хотя это законно, поскольку это единственный способ хранения данных на стороне клиента, сегодня рекомендуются современные API-интерфейсы хранилища. Файлы cookie отправляются с каждым запросом, поэтому они могут снизить производительность (особенно при мобильных подключениях для передачи данных).
Создать файлы cookie
При получении HTTP-запроса от клиента сервер может отправить ответSet-Cookie
заголовки, файлы cookie обычно сохраняются браузером, а затем файлы cookie отправляются на сервер вместе с заголовками HTTP.
Set-Cookie и заголовок Cookie
Set-Cookie
Заголовок ответа HTTP отправляет файл cookie с сервера пользовательскому агенту. Ниже приведен пример отправки файла cookie
Этот заголовок говорит клиенту сохранить файл cookie
Теперь при каждом новом запросе к серверу браузер будет отправлять все ранее сохраненные файлы cookie обратно на сервер, используя заголовок Cookie.
Существует два типа файлов cookie: файлы cookie сеанса и постоянные файлы cookie. Если файл cookie не содержит даты истечения срока действия, он считается файлом cookie сеанса. Сеансовые файлы cookie хранятся в памяти, никогда не записываются на диск и после этого безвозвратно теряются при закрытии браузера. Если файл cookie содержит有效期
, рассматривайте его как постоянный файл cookie. В дату, указанную сроком действия, файл cookie будет удален с диска.
ДругойCookie的 Secure 和 HttpOnly 标记
, следующее представит
Сеансовые файлы cookie
В приведенном выше примере создается файл cookie сеанса. В файле cookie сеанса есть функция, согласно которой файл cookie будет удален при закрытии клиента, поскольку он не указываетExpires
илиMax-Age
инструкция.
Однако веб-браузеры могут использовать восстановление сеанса, в результате чего большинство файлов cookie сеанса остаются постоянными, как если бы браузер никогда не закрывался.
Постоянные файлы cookie
Срок действия постоянных файлов cookie не истекает при закрытии клиента, а вместо этого特定日期(Expires)
или特定时间长度(Max-Age)
Истекший. Например
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
Дебаты о печенье
Хотя файлы cookie могут упростить действия пользователя в Интернете, использование файлов cookie вызывает споры, поскольку многие считают это нарушением прав пользователей. Благодаря сочетанию файлов cookie и предоставленной пользователем информации об учетной записи веб-сайты могут больше узнать о пользователях.
веб-кэш
Web 缓存(Web cache)
также называемый代理服务器(proxy server)
, который представляет собой сетевой объект, представляющий HTTP-сервер для удовлетворения потребностей пользователей. Веб-кеш имеет свой собственный磁盘存储空间
, и сохранит недавно запрошенный объект в памяти, как показано на следующем рисунке.
Веб-кэш можно настроить в браузере пользователя. После настройки пользователь не будет сначала обращаться к исходному серверу. Необходимо получить доступ к прокси-серверу, чтобы определить, существует ли запрошенный объект. Если прокси-сервер не существует, прокси-сервер затем запросит исходный сервер.Сервер возвращает объект клиенту, сохраняя объект на своем собственном дисковом пространстве.
Здесь важно отметить, что архитектура клиента и исходного сервера
客户-服务器
режиме, а прокси-сервер можно использовать не только как сервер, но и как клиент.
Прокси-серверы, как правило,ISP(Internet Service Provider)
,поставка. Обратите внимание, что это не старомодная партия. . . Интернет-провайдер также является оператором, о котором мы часто говорим, знаете ли.
Итак, зачем вам прокси-сервер? Я полагаю, что после прочтения приведенного выше описания вы сможете примерно угадать его роль.
- Во-первых, прокси-сервер может значительно сократить время отклика на запросы клиентов и быстрее отвечать пользователям.
- Во-вторых, прокси-сервер может уменьшить трафик канала доступа учреждения к сети, уменьшить пропускную способность сети и снизить затраты оператора.
- Затем прокси-сервер может снять нагрузку с исходного сервера, повысив производительность приложения.
DASH
Из приведенного выше описания мы знаем, что HTTP может передавать обычные файлы, аудио и видео.Эта передаваемая информация в совокупности называетсяMIME
тип. При доставке видео HTTP передает видео только как объект, а объект на самом деле является файлом, а файл может быть представлен URL-адресом в HTTP. Когда пользователь просматривает видео, клиент устанавливает TCP-соединение с сервером и отправляет запрос GET на URL-адрес, а затем, когда сервер отвечает клиенту, клиент кэширует определенное количество байтовых данных, когда данные превышает заданный порог В течение ограниченного времени клиентское приложение начинает воспроизведение видео.
Одним из ограничений этого подхода является то, что для каждого клиента все клиенты получают одинаковое кодирование видео, несмотря на пропускную способность, доступную каждому клиенту. Это приводит к потере пропускной способности. Это эквивалентно тому, что я, будучи 2-мегабитной сетью и 50-мегабитным оптоволокном, оба получают одинаковое видеокодирование, начинают воспроизводить видео с почти одинаковой задержкой, так почему я должен платить за 50-мегабитное оптоволокно?
Чтобы улучшить это явление, HTTPDASH
, ДЭШDynamic Adaptive Streaming HTTP
, который динамически адаптируется к потоку. Его идея заключается в том, что для разных сетей трафика битовые данные, которые могут быть переданы, также различны.DASH позволяет клиентам использовать разные скорости передачи данных в Интернете для воспроизведения видео с разными скоростями кодирования.. Для пользователей 3G и оптоволокна естественно выбирать передачу битовых данных с разной скоростью, чтобы максимально использовать полосу пропускания.
CDN
С увеличением числа пользователей доступа в Интернет видео постепенно становится узким местом для передачи битов и вызывает большой спрос у пользователей. Для интернет-видеокомпании самый простой способ предложить услуги потоковой передачи на начальном этапе — создать единую大规模数据中心
. Все видео кэшируется в центре обработки данных и транслируется напрямую из центра обработки данных в мир. Но есть три проблемы с этим подходом
- Если клиент находится далеко от центра обработки данных, пакет между сервером и клиентом охватывает множество каналов связи и, возможно, многих интернет-провайдеров, так куда же идет воспроизведение вашего видео?
- Каждый раз, когда видеоданные повторно доставляются клиенту, это приведет к серьезной трате пропускной способности сети, и видеокомпания будет платить за пропускную способность повторно.
- Проблема единой точки отказа, когда центр видеоданных не работает или другие аварии, напрямую приводит к тому, что видео не может воспроизводиться в глобальном масштабе.
Чтобы справиться с круглосуточной бесперебойной раздачей видео пользователям по всему миру, почти все крупные видеокомпании используют内容分发网(Content Distribution Network, CDN)
. CDN управляет серверами, распределенными по нескольким географическим точкам, кэшируя различные видео, аудио, файлы и т. д. на каждом сервере.
Политика выбора содержимого CDN
CDN управляет серверами, распределенными по нескольким географическим местоположениям, хранит копии видео на своих серверах и все попытки направить каждый запрос пользователя в расположение CDN, обеспечивающее наилучшее взаимодействие с пользователем. Итак, как сервер решает эту проблему? На самом деле есть два принципа размещения серверов
-
深入
, его основная цель — быть ближе к пользователю за счет уменьшения количества ссылок и маршрутизаторов между конечным пользователем и кластером CDN, тем самым улучшая задержку и пропускную способность, воспринимаемые пользователем. -
邀请做客
, принцип заключается в том, чтобы приглашать интернет-провайдеров в качестве гостей путем создания больших кластеров в небольшом количестве (например, 10) ключевых местоположений, а дизайн с приглашением на хост обычно требует меньших затрат на обслуживание и управление по сравнению с принципом углубленного проектирования.
Рабочий процесс CDN
CDN может быть专用 CDN(private CDN)
, т. е. принадлежит самому контент-провайдеру, другая CDN第三方 CDN(third-party CDN)
, который распространяет контент от имени нескольких поставщиков контента.
Давайте поговорим о рабочем процессе CDN, как показано на следующем рисунке.
-
Пользователь хочет получить доступ к содержимому указанного веб-сайта
-
Сначала пользователь инициирует запрос к локальному DNS и LDNS, LDNS передаст запрос на DNS-сервер веб-сайта, а DNS-сервер веб-сайта вернет адрес авторитетного сервера CDN веб-сайта в LDNS.
-
Сервер LDNS отправит второй запрос полномочному серверу CDN веб-сайта, надеясь получить адрес сервера распространения контента веб-сайта, а CDN веб-сайта отправит адрес сервера распространения контента CDN на локальный DNS-сервер.
-
Локальный DNS-сервер отправит пользователю адрес сервера распространения содержимого CDN веб-сайта.
-
После того, как пользователь узнает адрес сервера раздачи контента CDN сайта, никаких дополнительных операций не требуется, а устанавливается TCP-соединение напрямую с сервером раздачи контента CDN сайта и выдается HTTP GET-запрос.Если используется DASH-поток, блоки с разными тарифами будут выбираться по разным версиям URL для пользователей.
Стратегия выбора кластера CDN
Ядром любого развертывания CDN является集群选择策略(cluster selection strategy)
, механизм, который динамически направляет клиентов к серверному кластеру или центру обработки данных в CDN. Простая стратегия заключается в назначении клиентов地理上最为临近(geographically closest)
кластер. Эта стратегия выбора игнорирует изменение задержки и доступной полосы пропускания в зависимости от времени пути в Интернете и всегда назначает один и тот же кластер конкретному клиенту.实时测量(real-time measurement)
, который выполняет периодические проверки на основе показателей задержки и потери пакетов между кластерами и клиентами.
Протокол службы каталогов Интернета DNS
Только подумайте, сколькими способами мы, люди, можем идентифицировать себя? Его можно идентифицировать по удостоверению личности, по номеру карты социального страхования или по водительскому удостоверению.Хотя у нас есть различные методы идентификации, в определенных обстоятельствах один метод идентификации может быть более подходящим чем другой метод. Хосты в Интернете, как и люди, могут быть идентифицированы с использованием различных методов идентификации. Один из способов идентифицировать хост в Интернете — использовать его主机名(hostname)
,какwww.facebook.com, www.google.comЖдать. Но это то, как мы, люди, помним, маршрутизаторы этого не понимают, маршрутизаторы любят фиксированную длину, иерархические структуры.IP地址
, так что, помните, что такое IP?
IP-адрес теперь выражается просто и представляет собой 4-байтовую структуру со строгой иерархической структурой. Например121.7.106.83
IP-адрес, где можно использовать каждый байт.
разделенный, показывая0 - 255
десятичное число. (Конкретный IP будет обсуждаться позже)
Однако маршрутизатору нравится разрешать IP-адрес, но мы, люди, легко запоминаем веб-адрес, так как же маршрутизатор преобразует IP-адрес в знакомый нам веб-адрес? тогда нужноDNS
Появился.
Полное имя DNSDomain Name System,DNS
, представляющий собой слоистыйDNS 服务器(DNS server)
Реализована распределенная база данных; это также протокол прикладного уровня, который позволяет хостам запрашивать распределенные базы данных. DNS-серверы обычно работаютBIND(Berkeley Internet Name Domain)
Программное обеспечение для UNIX-машин. Протокол DNS работает наUDP
Выше используйте порт 53.
Базовый обзор DNS
Подобно HTTP, FTP и SMTP, протокол DNS также является протоколом прикладного уровня.客户-服务器
Этот режим работает между взаимодействующими конечными системами, и пакеты DNS передаются между взаимодействующими конечными системами через следующий сквозной транспортный протокол. Но DNS — это не приложение, которое имеет дело непосредственно с пользователями. DNS — это основная функция пользовательских приложений и другого программного обеспечения в Интернете.
DNS, как правило, не является автономным протоколом, он обычно используется другими протоколами прикладного уровня, включая HTTP, SMTP и FTP, для преобразования вводимых пользователем имен хостов в IP-адреса.
Ниже описан процесс разрешения DNS на примере, аналогично тому, что делает браузер после ввода URL-адреса.
вы вводите в браузереwww.someschool.edu/index.htmlЧто происходит, когда? Чтобы разрешить хосту пользователя отправлять сообщение HTTP-запроса на веб-серверwww.someschool.edu, пройдет следующие операции
- Клиент, выполняющий приложение DNS на том же пользовательском хосте
- Браузер извлекает имя хоста из указанного выше URL.www.someschool.edu, и передать это имя хоста клиенту приложения DNS
- DNS-клиент отправляет запрос, содержащий имя хоста, на DNS-сервер.
- DNS-клиент в конечном итоге получит ответное сообщение, содержащее IP-адрес целевого хоста.
- Как только браузер получает IP-адрес целевого хоста, он может инициировать TCP-соединение с процессом HTTP-сервера на порту 80 этого IP-адреса.
Помимо предоставления IP-адреса для преобразования имени хоста, DNS также предоставляет следующие важные услуги.
-
主机别名(host aliasing)
, хост со сложным именем хоста может иметь один или несколько других псевдонимов, например, хост с именем relay1.west-coast.enterprise.com будет иметь как enterprise.com, так иwww.enterprise.comдва псевдонима хоста для , в данном случае relay1.west-coast.enterprise.com, также известный как规范主机名
, а псевдонимы хостов легче запомнить, чем канонические имена хостов. Приложения могут вызывать DNS для получения канонического имени хоста, соответствующего псевдониму хоста и IP-адресу хоста. -
邮件服务器别名(mail server aliasing)
, и аналогичным образом приложение электронной почты также может вызывать DNS для разрешения предоставленного имени хоста. -
负载分配(load distribution)
, DNS также используется для распределения нагрузки между резервными серверами. загруженные сайты, такие какcnn.com
Он избыточно распределяется по нескольким серверам, каждый из которых работает между разными конечными системами, каждая из которых имеет свой IP-адрес. Из-за этих избыточных веб-серверов набор IP-адресов связан с одним и тем же каноническим именем хоста. Набор этих IP-адресов хранится в базе данных DNS. Поскольку клиент каждый раз делает HTTP-запрос, циклический перебор DNS распределяет нагрузку между всеми этими резервными веб-серверами.
Обзор работы DNS
DNS — это сложная система, мы здесь только для того, чтобы изучить основные аспекты ее работы, вот общий обзор того, как работает DNS.
Предположим, какое-то приложение, работающее на хост-компьютере пользователя, например, веб-браузер или программа для чтения почты, должно преобразовывать имена хостов в IP-адреса. Эти приложения будут вызывать DNS-клиент и указывать имя хоста, которое необходимо перевести. После того, как DNS на пользовательском хосте получит его, он будет использовать UDP для отправки сообщения DNS-запроса в сеть через порт 53. Через некоторое время DNS на пользовательском хосте получит ответное сообщение DNS, соответствующее имени хоста. . Итак, с точки зрения хоста пользователя, DNS подобен черному ящику, вы не можете видеть, что происходит внутри него. Но на самом деле черный ящик, реализующий службу DNS, очень сложен: он состоит из большого количества DNS-серверов, распределенных по всему миру, и протокола прикладного уровня, который определяет, как DNS-сервер взаимодействует с хостом запроса.
Одним из первых простых проектов DNS было использование DNS-сервера в Интернете. Сервер будет содержать все сопоставления. Это集中式
Этот дизайн не подходит для современного Интернета, поскольку в Интернете огромное и постоянно растущее количество хостов, этот централизованный дизайн будет иметь следующие проблемы.
-
单点故障(a single point of failure)
, если DNS-сервер выйдет из строя, то вся сеть будет парализована. -
通信容量(traaffic volume)
, один DNS-сервер должен обрабатывать все DNS-запросы, количество которых может исчисляться миллионами или десятками миллионов. -
远距离集中式数据库(distant centralized database)
, это невозможно для одного DNS-сервера邻近
Для всех пользователей предполагается, что DNS-сервер в США не может использоваться для запроса в Австралии, где запрос запроса должен проходить по низкоскоростному и перегруженному каналу, что вызывает серьезную задержку. -
维护(maintenance)
, затраты на обслуживание огромны, а также требуются частые обновления.
Следовательно, DNS не может быть спроектирован централизованно и вообще не имеет масштабируемости, поэтому он принимает分布式设计
, поэтому характеристики этой конструкции следующие
Распределенная иерархическая база данных
Во-первых, первая проблема, которую необходимо решить при распределенном проектировании, — это масштабируемость DNS-серверов, поэтому DNS использует большое количество DNS-серверов, их организационная модель, как правило, иерархична и распределена по всему миру.Ни один DNS-сервер не может отображать все хосты в Интернете.. Вместо этого эти сопоставления распределяются по всем DNS-серверам.
Вообще говоря, существует три типа DNS-серверов:根 DNS 服务器
,顶级域(Top-Level Domain, TLD) DNS 服务器
и权威 DNS 服务器
. Иерархическая модель этих серверов показана на следующем рисунке.
Предположим, теперь DNS-клиент хочет знатьwww.amazon.comIP-адрес, то как указанный выше сервер доменных имен разрешает его? Сначала клиент свяжется с одним из корневых серверов, который вернет домен верхнего уровня.com
IP-адрес сервера TLD. Затем клиент связывается с одним из этих серверов TLD, который возвращает IP-адрес уполномоченного сервера для amazon.com. Наконец, клиент связывается с одним из авторитетных серверов amazom.com, которыйwww.amazom.comВозвращает свой IP-адрес.
Давайте теперь обсудим иерархию вышеуказанных серверов доменных имен.
-
根 DNS 服务器
, существует более 400 корневых серверов имен по всему миру, эти корневые серверы имен управляются 13 различными организациями. Список и организацию корневых серверов имен можно найти по адресуroot-servers.org/, корневой сервер имен предоставляет IP-адрес сервера TLD. -
顶级域 DNS 服务器
, существует сервер TLD или кластер серверов для каждого из доменов верхнего уровня, таких как com, org, net, edu и gov, а также для всех национальных доменов uk, fr, ca и jp. Список всех доменов верхнего уровня см.tld-list.com/. Сервер TDL предоставляет IP-адрес авторитетного DNS-сервера. -
权威 DNS 服务器
, которые имеют общедоступные узлы в Интернете, такие как веб-серверы и почтовые серверы, организации которых должны предоставлять доступные записи DNS, сопоставляющие имена этих узлов с IP-адресами. Эти DNS-записи размещаются на официальном DNS-сервере организации.
Как правило, иерархическая структура серверов доменных имен в основном состоит из трех вышеперечисленных.Кроме того, существует еще один важный тип DNS-сервера, который本地 DNS 服务器(local DNS server)
. Строго говоря, локальный DNS-сервер не принадлежит к вышеуказанной иерархии, но локальный DNS-сервер имеет решающее значение. У каждого интернет-провайдера (интернет-провайдера), например, у частного или институционального интернет-провайдера, есть локальный DNS-сервер. Когда хост подключается к интернет-провайдеру, интернет-провайдер предоставляет IP-адрес хоста, который имеет IP-адреса одного или нескольких своих локальных DNS-серверов. Получив доступ к сетевому соединению, пользователь может легко определить IP-адрес DNS-сервера. Когда хост делает DNS-запрос, запрос отправляется на локальный DNS-сервер, который действует как прокси и перенаправляет запрос в иерархию DNS-серверов.
Кэш DNS
DNS 缓存(DNS caching)
Иногда называемый кешем преобразователя DNS, это временная база данных, поддерживаемая операционной системой, которая содержит записи доступа для последних веб-сайтов и других интернет-доменов. Другими словами, кэширование DNS — это просто технология, означающая, что компьютер кэширует загруженные ресурсы, чтобы обеспечить высокую скорость отклика, и на него можно напрямую и быстро ссылаться при повторном доступе. Так как же работает кэширование DNS?
Рабочий процесс кэширования DNS
Прежде чем браузер сделает запрос во внешний мир, компьютер перехватывает каждый запрос и ищет имя домена в базе данных кэша DNS, которая содержит список последних доменных имен и адресов, рассчитанных DNS для них при первом запросе. .
DNS-записи и сообщения
Все DNS-серверы, совместно реализующие распределенную базу данных DNS, хранят资源记录(Resource Record, RR)
, RR обеспечивает сопоставление имен хостов с IP-адресами. Каждое ответное сообщение DNS будет содержать одну или несколько записей ресурсов. Записи RR используются для ответа на запросы клиентов.
Запись ресурса представляет собой 4-кортеж, содержащий следующие поля
(Name, Value, Type, TTL)
Существуют разные типы RR, ниже приведена сводная таблица различных типов RR.
Тип DNS-записи | объяснять |
---|---|
Запись | Записи узла IPv4 для сопоставления доменных имен с адресами IPv4 |
записи АААА | Записи узла IPv6 для сопоставления доменных имен с адресами IPv6 |
CNAME-запись | Записи псевдонимов, используемые для сопоставления псевдонимов доменных имен DNS. |
MX-записи | Почтовый обменник для сопоставления доменных имен DNS с почтовыми серверами |
PTR-записи | Указатель для обратного просмотра (IP-адрес для разрешения доменного имени) |
SRV записи | Записи SRV для сопоставления доступных услуг. |
DNS-сообщение
DNS имеет два типа сообщений, одно — сообщение запроса, другое — ответное сообщение, и эти два сообщения имеют одинаковый формат, ниже приведен формат сообщения DNS.
Формат сообщения поясняется ниже
-
Первые 12 сообщений
首部区域
, то есть область заголовка имеет 12 байт, а первое поле (идентификатор) представляет собой 16-битное число, используемое для идентификации запроса. Этот идентификатор копируется в ответное сообщение на запрос, чтобы клиент мог использовать его для сопоставления отправленного запроса с полученным ответом. Поле флага содержит несколько флагов.Поле флага представлено как 1 бит, который используется для указания того, является ли сообщение сообщением с 0-запросом или сообщением с 1-ответом. -
问题区域
Содержит информацию о текущих запросах. Эта область включает в себя: 1) поле имени, содержащее имя запрашиваемого хоста; 2) поле типа, указывающее тип вопроса, который задается об имени, например, связан ли адрес хоста с именем (тип A). ) или с именем, связанным с почтовым сервером (введите MX). -
В ответе DNS-сервера зона ответа содержит ресурсную запись для первоначально запрошенного имени. Как упоминалось выше, запись DNS RR является четверной, и тип в кортеже будет иметь разные типы. Поле ответа ответного пакета может содержать несколько RR, поэтому имя хоста может иметь несколько IP-адресов.
-
权威区域
Содержит записи с других авторитетных серверов -
附加区域
Другие полезные записи включены.
Для подробного ознакомления с конкретными записями DNS я напишу статью, посвященную этому.
Распространение файлов P2P
Используются протоколы, которые мы обсуждали выше HTTP, SMTP, DNS.客户-服务器
режим, который в значительной степени зависит от серверов инфраструктуры, которые всегда включены. иP2P
Это режим клиент-клиент с минимальной зависимостью от постоянно включенных серверов инфраструктуры.
Полное название P2PPeer-to-peer, P2P
, представляет собой компьютерную сеть с распределенной архитектурой. В системе P2P все компьютеры и устройства называются пирами, и они обмениваются работой друг с другом. Каждый узел в одноранговой сети равен любому другому узлу. В сети нет ни привилегированных пиров, ни устройства основного администратора.
В некотором смысле, одноранговая сеть — это самая эгалитарная сеть в компьютерном мире. Все одноранговые узлы равны, и каждый одноранговый узел имеет те же права и обязанности, что и другие одноранговые узлы. Пир является одновременно клиентом и сервером.
Практически каждый ресурс, доступный в одноранговой сети, совместно используется одноранговыми узлами без какого-либо центрального сервера. Общими ресурсами в сети P2P могут быть такие вещи, как использование процессора, емкость дискового хранилища или пропускная способность сети.
Для чего используется P2P
Основная цель P2P — совместное использование ресурсов и помощь компьютерам и устройствам в совместной работе для предоставления определенных услуг или выполнения определенных задач. Как упоминалось ранее, P2P используется для совместного использования различных вычислительных ресурсов, таких как пропускная способность сети или дисковое пространство. Однако наиболее распространенным примером одноранговой сети является обмен файлами в Интернете. Одноранговые сети отлично подходят для обмена файлами, поскольку они позволяют компьютерам, подключенным к ним и т. д., получать и отправлять файлы одновременно.
BitTorrent
Является основным протоколом, используемым P2P.
Роль P2P-сетей
Сети P2P имеют некоторые особенности, которые делают их полезными
- Полностью уйти в автономный режим очень сложно, даже если один из пиров выходит из строя, другие пиры продолжают работать и обмениваться данными. Чтобы сеть P2P (одноранговая) перестала работать, необходимо отключить все одноранговые сети. Одноранговые сети хорошо масштабируются. Добавить новых одноранговых узлов легко, потому что вам не нужно выполнять какую-либо централизованную настройку на центральном сервере.
- Когда дело доходит до обмена файлами, чем больше одноранговая сеть, тем она быстрее. Хранение одного и того же файла на многих одноранговых узлах в сети P2P означает, что когда кому-то нужно загрузить файл, он загружается из нескольких мест одновременно.
TELNET
TELNET, также известный как удаленный вход в систему, представляет собой протокол прикладного уровня, который предоставляет пользователям возможность контролировать работу удаленных хостов на локальном компьютере. Например, как показано на рисунке ниже
Хост А может напрямую обращаться к хосту Б через протокол TELNET.
TELNET использует TCP-соединение для отправки текстовых команд на хост через соединение и выполнения их на хосте.
Следующие условия должны быть соблюдены при использовании протокола TELNET для удаленного входа в систему.
- Должен быть известен IP-адрес или доменное имя удаленного хоста.
- Логин и пароль должны быть известны
Удаленный вход через TELNET обычно использует порт 23.
Рабочий процесс TELNET выглядит следующим образом
- Локальный хост устанавливает соединение с удаленным хостом.Это соединение фактически является TCP-соединением.Пользователю необходимо знать IP-адрес или доменное имя указанного хоста.
- Как только соединение с удаленным хостом будет установлено, символы, вводимые на локальном хост-терминале, будут начинаться с
NVT(Net Virtual Terminal)
форме на удаленный хост, процесс фактически отправляет пакет на удаленный хост. - После того, как удаленный хост примет пакет данных, сгенерированный вывод будет отправлен на локальный хост в виде пакета данных в формате NVT, включая эхо входной команды и результат выполнения команды.
- Наконец, локальный хост-терминал разрывает соединение с удаленным хостом, что фактически является процессом отключения TCP.
SSH
У TELNET есть очень очевидный недостаток, то есть в процессе отправки пакетов данных между хостом и удаленным хостом он передается открытым текстом без какого-либо защитного шифрования.Плохая вещь, для безопасности данных мы обычно используемSSH
Войти удаленно.
SSH — это зашифрованная система удаленного входа в систему. Использование SSH может шифровать содержимое связи, даже если пакет данных перехвачен и перехвачен, содержащаяся информация не может быть расшифрована.Кроме того, SSH имеет некоторые другие функции.
- SSH может использовать более надежные механизмы аутентификации.
- SSH может пересылать файлы
- SSH может использовать переадресацию портов
端口转发(Port forwarding)
— это метод, используемый SSH для защищенной сетевой связи. SSH может использовать технологию переадресации портов для передачи пакетов других протоколов TCP/IP.При использовании этого метода SSH устанавливает безопасный канал передачи между клиентом и сервером для других служб.Переадресация портов — это механизм пересылки сообщений, полученных на определенный номер порта, на указанный IP-адрес и номер порта..
FTP
FTP(File Transfer Protocol,文件传输协议)
Это один из протоколов прикладного уровня. Протокол FTP состоит из двух компонентов, которые делятся на FTP-сервер и FTP-клиент. FTP-сервер используется для хранения файлов, и пользователи могут использовать FTP-клиент для доступа к ресурсам, расположенным на FTP-сервере, по протоколу FTP.
Поскольку эффективность передачи по FTP очень высока, он обычно используется для передачи больших файлов по сети.
По умолчанию протокол FTP использует два порта TCP, 20 и 21, где 20 используется для передачи данных, а 21 — для передачи управляющей информации. Когда передача файла выполняется на FTP порту TCP № 21, каждый раз будет устанавливаться TCP-соединение для передачи данных.После завершения передачи данных соединение для передачи данных также будет разорвано, и команда будет продолжена на управляющем соединении. или обработка ответов.
SMTP
Протокол предоставления услуг электронной почты называетсяSMTP(Simple Mail Transfer Protocol)
, SMTP также использует протокол TCP на транспортном уровне.
На заре электронной почты TCP-соединение устанавливалось непосредственно между хостом-отправителем и хостом-получателем. После того, как отправитель составит письмо, он сохранит его на диске, а затем установит TCP-соединение с хостом-получателем и отправит почту на диск хоста-получателя. Когда отправитель отправляет сообщение, он удаляет его с локального диска. Если хост-получатель не может получить его из-за особых обстоятельств, отправитель подождет некоторое время, а затем отправит повторно.
Хотя этот метод может гарантировать целостность и достоверность электронной почты, он не подходит для современного Интернета, потому что ранняя электронная почта могла быть отправлена только в Интернете, который явно недостаточно развит.
Для этого предлагается邮件服务器
Концепция чего-либо. Почтовый сервер представляет собой ядро всей почтовой системы. У каждого получателя будет邮箱(mailbox)
существует. Почтовый ящик пользователя управляет отправленными ему сообщениями и поддерживает их.
Типичный процесс отправки электронной почты начинается с пользовательского агента отправителя, перемещается на почтовый сервер отправителя, затем на почтовый сервер получателя, где он распространяется на почтовый ящик получателя. Когда пользователь получателя хочет прочитать почту из почтового ящика, его почтовый сервер аутентифицирует пользователя. Если сообщение, отправленное отправителем, не может быть должным образом доставлено на сервер получателя, пользовательский агент отправителя сохраняет сообщение в报文队列(message queue)
и попробуйте отправить его позже, обычно каждые 30 минут, если отправка не удалась через некоторое время, сервер удалит сообщение в очереди сообщений и уведомит отправителя по электронной почте.
Теперь, когда вы знаете общий процесс отправки почты между двумя почтовыми серверами, как SMTP отправляет почту с почтового сервера Алисы на почтовый сервер Боба? В основном делится на следующие три этапа
-
建立连接
: на этом этапе SMTP-клиент запрашивает TCP-соединение с сервером через порт 25. Как только соединение установлено, SMTP-сервер и клиент начинают объявлять друг другу свои собственные доменные имена и в то же время подтверждать доменные имена друг друга. -
邮件传送
: После установления соединения начните передачу почты. SMTP полагается на TCP для доставки сообщений без ошибок на почтовый сервер получателя. SMTP-клиент передает исходный адрес, адрес назначения и конкретное содержимое электронной почты на SMTP-сервер, а SMTP-сервер отвечает соответствующим образом и получает электронное письмо. -
连接释放
: SMTP-клиент выдает команду выхода, сервер отвечает после обработки команды, а затем закрывает TCP-соединение.
MIME-тип
В начале электронные письма в Интернете могли обрабатывать только текстовый формат, а затем постепенно расширились до типов MIME, о которых мы также кратко упоминали выше.MIME(Multipurpose Internet Mail Extensions)
Является ли использование типа расширения электронной почты Интернета.
Это интернет-стандарт, который расширяет стандарт электронной почты для поддержки многих форматов.
- Язык гипертекстовой разметки text .html text/html
- xml документ .xml текст/xml
- Обычный текст .txt текст/обычный
- PNG изображение .png изображение/png
- GIF графика .gif изображение/gif
- Графика JPEG .jpeg, .jpg изображение/jpeg
- Файлы AVI .avi видео/x-msvideo и т.д.
постскриптум
В статье рассматриваются многие протоколы прикладного уровня, включая протоколы HTTP, DNS, SMTP, FTP, TELNET и т. д.
Мы используем эти протоколы прикладного уровня в нашей повседневной работе. Мы не только пользователи, но и программисты. Мы должны их понимать. Я нарисовал для вас несколько диаграмм, чтобы помочь вам лучше понять эти протоколы. За упрощением стоит сложность. И пугающая спецификация стандарты и комплексное развитие.
Если статья хорошо написана, я надеюсь, что читатели и друзья смогут лайкнуть, посмотреть, поделиться и оставить сообщение. Это будет мотивацией для меня продолжать обновлять статью, а также мотивацией для меня увеличивать число поклонников. Надеюсь. вы можете поддержать это.
Ответьте cxuan под публичным аккаунтом с тем же именем, что и у моего программиста cxuan, чтобы получить следующие PDF-файлы, написанные мной от руки.