среда, 1 мая 2013 г.

Основы интернет-технологий

Это шпаргалка для тех, кто "много знает, но ничего не помнит":



Введение

WWW - коллекция HTML-документов (была изобретена в 1990-х гг.). HTTP - основной протокол, используемый в интернете. Протоколы - стандарты (правила), которые определяют, каким образом будут обмениваться данными различные программы. Серверы - компьютеры, которые владеют файлами, из которых и состоит интернет. Интернет - самая большая в мире компьютерная сеть. Браузер - программа, выполняющаяся на компьютере пользователя и позволяющая отображать файлы, найденные в сети. 

Большинство веб-страниц создаются при помощи языка HTML. Инструкции HTML включают:
- текст (plain text),
- разметка (с помощью тегов),
- ссылки на другие документы, рисунки, видео, веб-страницы.

Запрос к серверу и ответ сервера

URL (Uniform Resource Locator).

Как удаленный компьютер может достучаться до конкретной программы на вашем компьютере? Ведь программ много, а IP-адресов мало. Для этого и придумали порты. Порт - набор цифр. Программа может "открыть" порт - т.е. заявить во всеуслышание что-то типа "если придет информация на порт 5190 - знайте, это для меня". "Закрыть" порт - значит взять свои слова обратно. 

Каждое HTTP-сообщение состоит из 3 частей:
- стартовая строка,
- заголовок,
- тело сообщения. 

Стартовая строка запроса выглядит так: Метод URI HTTP/Версия. Например:
GET /wiki/HTTP HTTP/1.0

Наиболее распространенные методы: GET и POST. URI определяет путь к запрашиваемому документу. 

Заголовки имеют следующий формат: имя: значение. Наиболее популярные заголовки: 

Host: www.example.com
User-Agent: chrome

Host в заголовке указывается потому, что на одном сервере может быть несколько веб-сайтов. User-Agents могут помочь отфильтровать спамеров.

Стартовая строка ответа сервера имеет следующий формат: HTTP/Версия КодСостояния Пояснение. Например: HTTP/1.1 200 OK. Наиболее популярные коды состояний: 

2xx - все отработало хорошо, 
3xx - нужно еще кое-что сделать, 
4xx - ошибка со стороны браузера, 
5xx - ошибка со стороны сервера.

Наиболее частыми заголовками HTTP-ответов являются следующие (см. пример ниже):

HTTP/1.1 200 OK
Date: Tue Mar 2012 04:33:33 GMT
Server: Apache /2.2.3
Content-type: text/html
Content-length: 1539 

Date - обязательный заголовок, server - может представлять полезную информацию для хакеров, поэтому этот заголовок может либо отсутствовать, либо содержать недостоверную информацию.

Ответы сервера могут быть статическими (файлы, например, картинки) или динамическими (конструируемыми находящимися на сервере приложениями на лету веб-страницами). В наши дни ответы в основном динамические. Веб-приложение это просто программа, работающая на сервере через протокол http и генерирующая динамический контент, запрашиваемый браузером. 

Об устройстве Интернета

Сети бывают локальные (в пределах одного или группы расположенных рядом зданий), муниципальные и глобальные. Глобальная сеть охватывает значительную географическую территорию (например, континент). Каждый провайдер имеет свою местную сеть, состоящую из маршрутизаторов и линий связи. Если местом назначения передаваемых данных является хост, обслуживаемый данным провайдером, то он непосредственно передается этому хосту, в противном случае данные передаются оператору сетевой магистрали.


 Магистральные операторы владеют высокоскоростными международными магистральными сетями (магистралями), которые связывают между собой различных провайдеров. Иногда большие корпорации и хостинговые компании имеют свои собственные серверные фермы, напрямую подключенные к магистралям. Такие фермы обслуживают десятки тысяч запросов к веб-страницам в секунду. Обычно такие фермы устанавливаются в помещениях, сдаваемых в аренду магистральными операторами, в которых непосредственно располагаются магистральные маршрутизаторы.

Маршрутизатор (или роутер) - сетевое устройство, пересылающее пакеты данных между различными сегментами сети, принимающий решения о пересылке на основе информации о топологии сети и определенных правил, заданных администратором. Обычно маршрутизатор использует адрес получателя, указанный в данных, и определяет по таблице маршрутизации путь, по которому следует передать данные. Если в таблице маршрутизации для адреса нет описания маршрута, данные отбрасываются. Таблица маршрутизации - файл или база данных, которая обычно включает адрес сети получателя, адрес следующего узла, куда нужно отправить данные, метрику - числовой показатель, задающий предпочтительность маршрута. Таблица маршрутизации может составляться двумя способами: 1) статическая маршрутизация - записи в таблице вводятся и изменяются вручную, 2) динамическая - записи обновляются автоматически с помощью одного или нескольких протоколов маршрутизации.

Модель OSI

Модель OSI - модель взаимодействия сетевых протоколов (7 уровней, верхний - прикладной, нижний - физический). Как работают протоколы согласно этой модели? Данные попадают на прикладной уровень, к ним добавляется еще один заголовок. На следующем уровне добавляется еще один заголовок и т.д. (также данные могут дробиться на более мелкие куски) и так до физического уровня. Получившаяся совокупность данных отправляется в сеть. Другая машина, получив кусок этих данных, начинает убирать заголовки. На каких-то уровнях может быть ожидание и сбор из нескольких кусков данных одного куска. Также данные могут отвергаться (например, если MAC-адрес устройства / IP-адрес не соответствует требуемому, или вычисленная контрольная сумма полученных данных не соответствует заявленному значению). Получившиеся данные без служебной информации добираются до прикладного уровня. Отметим, что передача данных не обязательно должна начинаться и заканчиваться 7 уровнем, например, компьютер использует все 7 уровней, а маршрутизатор только 3 нижних уровня. Уровни с прикладного по канальный (LLC) реализованы на уровне программ, уровни канального (MAC) и физического - на уровне железа.

Вкратце пробежимся по уровням OSI. 

7. Прикладной уровень. Осуществляет связь пользовательских приложений с сетью: просмотр веб-страниц (HTTP), передача и прием почты (SMTP, POP3), прием и получение файлов (FTP) и т.д.

6. Уровень представления. Преобразует файлы в биты. Этот файл работает со стандартами изображений (JPEG, GIF и т.д.), кодировок, музыки и видео (MPEG) и т.д.

5. Сеансовый - организует сеанс связи между компьютерами. Хорошим примером служат аудио- и видео-конференции, на этом уровне устанавливается, каким кодеком будет кодироваться сигнал, причем этот кодек должен присутствовать на обеих машинах. 

4. Транспортный уровень обеспечивает надежность передачи данных от отправителя к получателю. Если вы общаетесь с помощью веб-камеры со своим другом, то здесь надежная доставка каждого бита переданного изображения не нужна. Если потеряется несколько бит из потокового видео, вы даже этого не заметите. Надежная доставка нужна при закачке архива, отправке пароля на сервер, чтении текста с веб-страницы. 2 протокола:  UDP и TCP. UDP протокол передает данные без установления соединения, не подтверждает доставку данных и не делает повторы. TCP протокол делает все наоборот и поэтому гарантирует целостность и правильность загруженных данных. Данные: сегменты

3. Сетевой уровень определяет путь, по которому данные будут переданы. Данные: пакеты. На этом уровне работают маршрутизаторы и IP-протокол. IP адреса называются логическими.

Задачей IP-протокола является обеспечение возможности каждому хосту посылать в любую сеть пакеты, которые будут независимо передвигаться к пункту назначения. IP-пакет состоит из заголовка и текстовой части. Заголовок включает: 

- версия протокола, 
- поле, указывающее на длину заголовка (т.к. заголовок содержит необязательную часть переменной длины),
- идентификатор, позволяющий хосту-получателю определить, какому пакету принадлежит полученный фрагмент (все фрагменты одного пакета имеют одинаковые значения идентификаторов),
- время жизни пакета (гарантирует, что пакет не будет блуждать по сети вечно).

2. Канальный уровень - нужен для взаимодействия сетей на физическом уровне. Устройства канального уровня: коммутаторы, концентраторы. Делится на 2 подуровня: LLC - взаимодействие с верхним уровнем, MAC - взаимодействие с нижним уровнем. Пример: в компьютере имеется сетевая карта (или какой-то другой адаптер). Для взаимодействия с ней существует драйвер Драйвер - верхний подуровень канального уровня, через который можно связаться с нижними уровнями, а точнее с микропроцессором (железо) - нижний подуровень. Пример протокола: PPP (Point-to-Point) - протокол для связи двух компьютеров напрямую. Данные: кадры.

1. Физический уровень. Протоколы: Bluetooth, Wi-Fi, медные провода и т.д. Здесь биты преобразуются в импульсы и наоборот. 

От сетевой модели OSI модель TCP/IP отличается количеством уровней. Сетевая модель TCP/IP была разработана значительно ранее модели OSI. Модель TCP/IP сформировывалась уже на существующих протоколах, а вот OSI - наоборот, сначала была создана модель, а потом протоколы под нее. Вкратце, уровни 7-4 OSI соответствуют "уровню приложений" модели TCP-IP, уровни 2-1 OSI соответствуют "уровню доступа к сети".

DNS

Служба доменных имен (DNS) относится к прикладному уровню модели TCP-IP. Переводит IP-адреса в более удобочитаемый формат, а также обеспечивает независимость от физического IP-адреса хоста (если владелец сайта сменит хост, вы этого даже не заметите). Доменом называют множество хостов, объединенных в логическую группу. Когда приложение, запущенное на машине клиента, хочет обратиться к хосту по имени, то это имя передается распознавателю, который запущен на клиентской машине. Распознаватель обращается с запросом к одному из локальных DNS серверов. Если DNS сервер не имеет информации о запрашиваемом домене, он посылает сообщение с запросом серверу домена более высокого уровня. Для повышения эффективности обработки запросов DNS-серверы часто кэшируют информацию.

Прочее

Front-end отвечает за получение ввода (входной информации) в любых формах от пользователя и обработку полученной информации в ту форму, которую back-end способен использовать. Front-end — это интерфейс между пользователем и back-end’ом. Примеры языков и библиотек front-end: HTML, CSS,Javascript, jQuery. Примеры языков и библиотек back-end: python, фреймворк Django, SQLite.

При загрузке веб-страницы браузер загружает картинки, стили и другие файлы параллельно.  Но количество одновременных "потоков" для одного хоста ограничено. То есть,  если у вас на странице 50 объектов,  то браузер начнет грузить сначала первые 5, потом следующие 5 и так пока все не загрузит. Поэтому если положить картинки сайта на другой домен - то веб-страницы сайта будут загружаться быстрее, т.к. вырастет число хостов, соответственно и вырастет количество одновременных соединений.




Комментариев нет:

Отправить комментарий