- Что такое WWW?
- Что такое W3C?
- Какие существуют уровни модели OSI?
- Что такое TCP/IP?
- Что такое UDP?
- Чем отличаются TCP и UDP?
- Что такое протокол передачи данных? Какие протоколы вы знаете?
- Что такое HTTP и HTTPS? Чем они отличаются?
- Что такое FTP?
- Чем отличаются методы GET и POST?
- Что такое MIME тип?
- Что такое Web server?
- Что такое Web application?
- Что такое Application server?
- Чем отличаются Web server и Application server?
- Что такое AJAX? Как принципиально устроена эта технология?
- Что такое WebSocket?
- Что такое JSON?
- Что такое JSON схема?
- Что такое cookies?
- Что такое «сессия»?
- Что такое «авторизация» и «аутентификация»? Чем они отличаются?
WWW, World Wide Web (Всемирная паутина) — распределённая система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключённых к Интернету. Для обозначения этого термина также используют слово web.
W3C, World Wide Web Consortium (Консорциум Всемирной паутины) — организация, разрабатывающая и внедряющая технологические стандарты для WWW.
W3C разрабатывает для Интернета единые принципы и стандарты, называемые «рекомендациями» (W3C Recommendations), которые затем внедряются производителями программ и оборудования. Таким образом достигается совместимость между программными продуктами и аппаратурой различных компаний.
# | Уровень (layer) | Тип данных (PDU) | Функции | Примеры |
---|---|---|---|---|
7 | Прикладной (application) | - | Доступ к сетевым службам | HTTP, FTP |
6 | Представительский (представления) (presentation) | - | Представление и шифрование данных | ASCII, JPEG |
5 | Сеансовый (session) | - | Управление сеансом связи | RPC, PAP |
4 | Транспортный (transport) | Сегменты(segment) / Дейтаграммы(datagram) | Прямая связь между конечными пунктами и надежность | TCP, UDP |
3 | Сетевой (network) | Пакеты (packet) | Определение маршрута и логическая адресация | IP, AppleTalk |
2 | Канальный (data link) | Биты (bit) / Кадры (frame) | Физическая адресация | Ethernet, IEEE 802.2, L2TP |
1 | Физический (physical) | Биты (bit) | Работа со средой передачи, сигналами и двоичными данными | USB, витая пара |
TCP/IP - это два основных сетевых протокола Internet. Часто это название используют и для обозначения сетей, работающих на их основе.
IP (Internet Protocol) - маршрутизируемый протокол, отвечающий за IP-адресацию, маршрутизацию, фрагментацию и восстановление пакетов. В его задачу входит продвижение пакета между сетями – от одного маршрутизатора до другого и тех пор, пока пакет не попадет в сеть назначения. В отличие от протоколов прикладного и транспортного уровней, протокол IP разворачивается не только на хостах, но и на всех шлюзах (маршрутизаторах). Этот протокол работает без установления соединения и без гарантированной доставки.
В настоящее время используются следующие две версии протокола IP:
- IPv6 — IP-адрес имеет разрядность 128 бит и записывается в виде восьми 16-битных полей, с использованием шестнадцатеричной системы счисления и с возможностью сокращения двух и более последовательных нулевых полей до
::
, например:2001:db8:42::1337:cafe
- IPv4 — IP-адрес имеет разрядность 32 бита и записывается в виде четырех десятичных чисел в диапазоне 0 … 255 через точку, например:
192.0.2.34
.
TCP (Transfer Control Protocol) - протокол, обеспечивающий надежную, требующую логического соединения связь между двумя компьютерами. Отвечает за установление соединения, упорядочивание посылаемых пакетов и восстановление пакетов, потерянных в процессе передачи.
Стек протоколов TCP/IP включает в себя четыре уровня:
- канальный уровень (link layer) - например Ethernet, IEEE 802.11 Wireless Ethernet, физическая среда и принципы кодирования информации
- сетевой уровень (Internet layer) - например IP
- транспортный уровень (transport layer) - например TCP, UDP
- прикладной уровень (application layer) - например HTTP, FTP, DNS
TCP-соединение двух узлов начинается с handshake (рукопожатия):
- Узел A посылает узлу B специальный пакет
SYN
— приглашение к соединению - B отвечает пакетом
SYN-ACK
— согласием об установлении соединения - A посылает пакет
ACK
— подтверждение, что согласие получено
После этого TCP соединение считается установленным и приложения, работающие в этих узлах, могут посылать друг другу пакеты с данными.
В заголовке TCP/IP пакета указывается:
- IP-адрес отправителя
- IP-адрес получателя
- Номер порта
UDP, User Datagram Protocol (Протокол пользовательских датаграмм) — протокол, который обеспечивает доставку без требований соединения с удаленным модулем UDP и обязательного подтверждения получения.
К заголовку IP-пакета UDP добавляет всего четыре поля по 2 байта каждое:
- поле порта источника (source port)
- поле порта пункта назначения (destination port)
- поле длины (length)
- поле контрольной суммы (checksum)
Поля «порт источника» и «контрольная сумма» не являются обязательными для использования в IPv4. В IPv6 необязательно только поле «порт отправителя».
UDP используется DNS, SNMP, DHCP и другими приложениями.
TCP — ориентированный на соединение протокол, что означает необходимость «рукопожатия» для установки соединения между двумя хостами. Как только соединение установлено, пользователи могут отправлять данные в обоих направлениях.
- Надёжность — TCP управляет подтверждением, повторной передачей и тайм-аутом сообщений. Производятся многочисленные попытки доставить сообщение. Если оно потеряется на пути, сервер вновь запросит потерянную часть. В TCP нет ни пропавших данных, ни (в случае многочисленных тайм-аутов) разорванных соединений.
- Упорядоченность — если два сообщения последовательно отправлены, первое сообщение достигнет приложения-получателя первым. Если участки данных приходят в неверном порядке, TCP отправляет неупорядоченные данные в буфер до тех пор, пока все данные не могут быть упорядочены и переданы приложению.
- Тяжеловесность — TCP необходимо три пакета для установки соединения перед тем, как отправить данные. TCP следит за надёжностью и перегрузками.
- Потоковость — данные читаются как поток байтов, не передается никаких особых обозначений для границ сообщения или сегментов.
UDP — более простой, основанный на сообщениях протокол без установления соединения. Протоколы такого типа не устанавливают выделенного соединения между двумя хостами. Связь достигается путём передачи информации в одном направлении от источника к получателю без проверки готовности или состояния получателя.
- Ненадёжность — когда сообщение посылается, неизвестно, достигнет ли оно своего назначения — оно может потеряться по пути. Нет таких понятий как подтверждение, повторная передача, тайм-аут.
- Неупорядоченность — если два сообщения отправлены одному получателю, то порядок их достижения цели не может быть предугадан.
- Легковесность — никакого упорядочивания сообщений, никакого отслеживания соединений и т. д. Это лишь транспортный уровень.
- Датаграммы — пакеты посылаются по отдельности и проверяются на целостность только если они прибыли. Пакеты имеют определенные границы, которые соблюдаются после получения, то есть операция чтения на получателе выдаст сообщение таким, каким оно было изначально послано.
- Отсутствие контроля перегрузок — для приложений с большой пропускной способностью существует шанс вызвать коллапс перегрузок, если только они не реализуют меры контроля на прикладном уровне.
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.
Наиболее известные протоколы передачи данных:
- HTTP (Hyper Text Transfer Protocol)
- FTP (File Transfer Protocol)
- POP3 (Post Office Protocol)
- SMTP (Simple Mail Transfer Protocol)
- TELNET (TErminaL NETwork)
HTTP, HyperText Transfer Protocol (Протокол передачи гипертекста) — протокол прикладного уровня передачи данных.
Основой HTTP является технология «клиент-сервер»:
- Потребители (клиенты), которые инициируют соединение и посылают запрос;
- Поставщики (серверы), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.
Для идентификации ресурсов HTTP использует глобальные URI.
HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ».
Структура протокола:
- Стартовая строка (starting line) — определяет тип сообщения;
- Заголовки (headers) — характеризуют тело сообщения, параметры передачи и прочие сведения;
- Тело сообщения (message body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.
Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа.
HTTPS, HyperText Transfer Protocol Secure — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, что обеспечивает защиту от атак, основанных на прослушивании сетевого соединения (при условии, что будут использоваться шифрующие средства и сертификат сервера проверен и ему доверяют).
Различия HTTP и HTTPS:
-
HTTPS является расширением HTTP.
-
HTTP использует не зашифрованное соединение. Соединение по HTTPS поддерживает шифрование.
-
Работа по HTTP быстрей и менее ресурсоёмко, т.к. шифрование HTTPS требует дополнительных затрат.
-
Порты по умолчанию: в случае HTTP это TCP-порт
80
, для HTTPS - TCP-порт443
.
FTP, File Transfer Protocol (Протокол передачи файлов) — протокол передачи файлов между компьютерами в сети TCP. С его помощью можно подключаться к FTP-серверам, просматривать содержимое их каталогов и загружать файлы с сервера или на сервер. Протокол построен на архитектуре «клиент-сервер» и использует разные сетевые соединения для передачи команд и данных между клиентом и сервером.
По умолчанию использует TCP-порт 21
.
GET передает данные серверу используя URL, тогда как POST передает данные, используя тело HTTP запроса. Длина URL ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать через GET. POST может отправлять гораздо большие объемы данных. Лимит устанавливается web-server и составляет обычно около 2 Mb.
Передача данных методом POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя, в отличии от URL, который виден почти всегда. Иногда это преимущество превращается в недостатком - вы не сможете послать данные за кого-то другого.
MIME, Multipurpose Internet Mail Extension (Многоцелевые расширения Интернет-почты) — спецификация для передачи по сети файлов различного типа: изображений, музыки, текстов, видео, архивов и др. В HTML указание MIME-типа используется при передаче данных форм и вставки на страницу различных объектов.
Web server (Веб-сервер) — сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы. Так называют как программное обеспечение, выполняющее функции web-сервера, так и непосредственно компьютер, на котором это программное обеспечение работает.
Web-серверы могут иметь различные дополнительные функции, например:
- автоматизация работы web-страниц;
- ведение журнала обращений пользователей к ресурсам;
- аутентификация и авторизация пользователей;
- поддержка динамически генерируемых страниц;
- поддержка HTTPS для защищённых соединений с клиентами.
Наиболее известные web-серверы:
- Apache
- Microsoft IIS
- nginx
Web application (Веб-приложение) - клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — web-сервер. Логика web application распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, а обмен информацией происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому web application является кроссплатформенным сервисом.
Application Server (Сервер приложений) — программа, представляющая собой сервер, который занимается системной поддержкой приложений и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Может работать как полноценный самостоятельный web-сервер или быть поставщиком страниц для другого web-сервера. Обеспечивает обмен данными между приложениями и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего приложения, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
Наиболее известные серверы приложений Java:
- Apache Tomcat
- Jetty
- JBoss
- GlassFish
- IBM WebSphere
- Oracle Weblogic
Понятие web server относится скорее к способу передачи данных (конкретно, по протоколу HTTP), в то время как понятие Application server относится к способу выполнения этих самых приложений (конкретно, удаленная обработка запросов клиентов при помощи каких-то программ, размещенных на сервере). Эти понятия нельзя ставить в один ряд. Они обозначают разные признаки программы. Какие-то программы удовлетворяют только одному признаку, какие-то - нескольким сразу.
Apache Tomcat умеет выполнять приложения? Да, значит он является application server. Apache Tomcat умеет отдавать данные по HTTP? - Да. Следовательно он является web server.
Возьмите какую-нибудь базу данных, в которой на хранимых процедурах описана сложная логика и можно в ответ на SQL-запросы отправлять даже sms. Такую базу данных можно назвать application server, но web server - уже нет, потому что все это не работает с клиентом по HTTP протоколу.
Возьмите чистый Apache, в котором не включены никакие модули для поддержки языков программирования. Он умеет отдавать только статичные файлы и картинки по протоколу HTTP. Это web server, но не application server. Включите модуль для поддержки PHP и разместите там программу на PHP, которая делает запросы к базе данных и динамически формирует страницы. Теперь Apache стал и application server.
AJAX, Asynchronous Javascript and XML (Асинхронный Javascript и XML) — подход к построению интерактивных пользовательских интерфейсов web-приложений, заключающийся в «фоновом» обмене данными браузера и web-сервера. В результате, при обновлении данных web-страница не перезагружается полностью и web-приложения становятся быстрее и удобнее.
При использовании AJAX:
- Пользователь заходит на web-страницу и взаимодействует с каким-нибудь её элементом.
- Скрипт на языке JavaScript определяет, какая информация необходима для обновления страницы.
- Браузер отправляет соответствующий запрос на web-сервер.
- Web-сервер возвращает только ту часть документа, на которую пришёл запрос.
- Скрипт вносит изменения с учётом полученной информации (без полной перезагрузки страницы).
AJAX базируется на двух основных принципах:
- использование технологии динамического обращения к серверу «на лету» (без перезагрузки страницы полностью) через динамическое создание:
- дочерних фреймов;
- тега
<script>
; - тега
<img>
.
- использование DHTML для динамического изменения содержания страницы;
AJAX не является самостоятельной технологией, это концепция использования нескольких смежных технологий:
- (X)HTML, CSS для подачи и стилизации информации;
- DOM-модель, операции над которой производятся Javascript на стороне клиента, для обеспечения динамического отображения и взаимодействия с информацией;
- XMLHttpRequest или другой транспорт (IFrame, SCRIPT-тег, ...) для асинхронного обмена данными с web-сервером;
- JSON или любой другой подходящий формат (форматированный HTML, текст, XML, ...) для обмена данными.
WebSocket — протокол полнодуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и web-сервером в режиме реального времени.
Протокол WebSocket определяет две URI схемы
ws:
- нешифрованное соединениеwss:
- шифрованное соединение
JSON, JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript.
JSON представляет собой (в закодированном виде) одну из двух структур:
- Набор пар «ключ:значение»;
- Упорядоченный набор значений.
Ключом может быть только строка (регистрозависимая: имена с буквами в разных регистрах считаются разными).
В качестве значений могут быть использованы:
- Объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки
{ }
. Ключ описывается строкой, между ним и значением стоит символ:
. Пары ключ-значение отделяются друг от друга запятыми; - Массив (одномерный) — упорядоченное множество значений. Массив заключается в квадратные скобки
[ ]
. Значения разделяются запятыми. - Число;
- Литералы
true
,false
иnull
; - Строка — упорядоченное множество из нуля или более символов Unicode, заключенное в кавычки
" "
. Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты\
, или записаны шестнадцатеричным кодом в кодировке UTF-8 в виде\uFFFF
.
JSON Schema — один из языков описания структуры JSON-документа, используя синтаксис JSON.
Это самоописательный язык: при его использовании для обработки данных и описания их допустимости могут использоваться одни и те же инструменты сериализации/десериализации.
Сookies («куки») — небольшой фрагмент данных, отправленный web-сервером и хранимый на устройстве пользователя. Всякий раз при попытке открыть страницу сайта, web-клиент пересылает соответствующие этому сайту cookies web-серверу в составе HTTP-запроса. Применяется для сохранения данных на стороне пользователя и на практике обычно используется для:
- аутентификации пользователя;
- хранения персональных предпочтений и настроек пользователя;
- отслеживания состояния сеанса доступа пользователя;
- ведения разнообразной статистики.
Сессия – промежуток времени между первым и последним запросами, которые пользователь отправляет со своего устройства на сервер сайта. Завершается сессия в случае, если со стороны пользователя не поступало запросов в течение определенного промежутка времени или же при обрыве связи.
Аутентификация - это проверка соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации (отпечатки пальцев, цвет радужки, голос и тд.), в простейшем случае - с помощью имени входа и пароля.
Авторизация - это проверка и определение полномочий на выполнение некоторых действий (например, чтение файла) в соответствии с ранее выполненной аутентификацией.
Очевидно, что это разные понятия, но при этом без первого не может быть второго и наоборот. То есть имея разрешение на работу, вы не сможете оказаться на рабочем месте без предъявления пропуска, равно как и нет смысла в демонстрации пропуска, если вы не планируете работать. Именно тот факт, что одного не бывает без другого, и вызывает у людей заблуждение, что это одно и то же.