Главная страница


 

Протоколы передачи данных в сети

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

Иногда я буду называть Интернет Сетью с большой буквы ,в отличие от сети с маленькой буквы, которой обозначается вообще любая сеть, локальная или глобальная. Тут ситуация сходна со словом галактика: наша галактика называется Галактикой с прописной буквы , а галактика " c о строчной буквы соответствует любой другой звездной системе подобных размеров . На самом деле , сходство Сети и Галактики идет несколько дальше орфографии , и , я думаю , вы скоро также проникнетесь этой мыслью.

Необходимость некоторой стандартизации возникла, чуть ли не с самого момента воз­никновения компьютерных сетей. Действительно, подчас одной сетью объединены компьютеры, работающие под управлением не только различных операционных сис­тем, но нередко имеющие и совершенно различную архитектуру процессора, органи­зацию памяти и т. д. Именно для того, чтобы обеспечивать возможность передачи между такими компьютерами, и предназначены всевозможные протоколы. Давайте рассмотрим этот вопрос чуть подробнее.
Разумеется, для разных целей существуют различные протоколы. К счастью, нам не нужно иметь представление о каждом из них — достаточно знать только тот, который мы будем использовать в Web-программировании. Таковым для нас является прото­ кол TCP (Transmission Control Protocol — Протокол управления передачей
данных), а точнее, протокол HTTP (Hypertext Transfer Protocol — Протокол передачи гипертек­ста), базирующийся на TCP. Протокол HTTP как раз и задействуется браузерами и Web-серверами.
Заметьте, что уже в самом начале первой главы я упомянул о том, что один протокол может использовать в своей работе другой. В мире Интернета эта ситуация является совершенно обычной. Чаще всего каждый из протоколов, участвующих в передаче данных по сети, реализуется в виде отдельного и по возможности независимого про­граммного обеспечения или драйвера. Среди них существует некоторая иерархия, когда один протокол является всего лишь "надстройкой" над другим, тот, в свою оче­редь — над третьим, и т. д. до самого "низкоуровневого" драйвера, работающего уже непосредственно на физическом уровне с сетевыми картами или модемами. На рис. 1.1 приведена примерная схема того, что происходит при отправке запроса брау­зером пользователя на некоторый Web-сервер в Интернете. Прямоугольниками обо­значены программные компоненты: драйверы протоколов и программы-абоненты (последние выделены жирным шрифтом), направление передачи данных указано стрелками. Конечно, в действительности процесс гораздо более сложен, но нам сей­час нет необходимости на этом останавливаться.
Обратите внимание, что в пределах каждой системы протоколы на схеме расположе­ны в виде "стопки", один над другим. Такая структура обуславливает то, что часто семейство протоколов обмена данными в сети Интернет называют стеком TCP / IP (стек в переводе с английского как раз и обозначает "стопку").


Рис. 1.1. Организация обмена данными в Интернете


Каждый из протоколов в идеале "ничего не знает" о том, какой протокол "стоит над ним". Например, протокол IP (который обеспечивает несколько более простой сервис по сравнению с TCP) не использует возможности протокола TCP, а TCP, в свою очередь, "не догадывается" о существовании протокола HTTP (именно его задействует браузер и понимает Web-сервер, на схеме протокол HTTP не обозначен).
Применение такой организации позволяет заметно упростить ту часть операционной системы, которая отвечает за поддержку работы с сетью. А я тем временем прошу вас не пугаться. Нас будет интересовать в конечном итоге всего лишь протокол самого высокого уровня, "возвышающийся" над всеми остальными протоколами, т. е. HTTP и то, как он взаимодействует с протоколом TCP.


Семейство TCP/IP
Как мы уже знаем, в сети Интернет в качестве основного выбирается протокол TCP, хотя, конечно, этот выбор обусловлен скорее историческими причинами, нежели его действительными преимуществами (впрочем, преимуществ у TCP также предоста­точно). Он ни в коей мере не претендует на роль низкоуровневого — наоборот, в свою работу он вовлекает другие протоколы, например, IP (в свою очередь, IP также базируется на услугах, предоставляемых некоторыми другими протоколами). Прото­колы TCP и IP настолько сильно связаны, что принято объединять их в одну группу под названием семейство TCP / IP (в него включается также протокол UDP, который мы рассматривать не будем). Ниже приводятся основные особенности протокола TCP, входящего в семейство.
Корректная доставка данных до места назначения гарантируется — разумеется, если такая доставка вообще возможна. Даже если связь не вполне надежна (на­пример, на линии помехи оттого, что в кабель попала вода, замерзшая зимой и ра­зорвавшая оболочку провода), "потерянные" фрагменты данных посылаются сно­ва и снова до тех пор, пока вся информация не будет передана.
Передаваемая информация представлена в виде потока — наподобие того, как осуществляется обмен с файлами практически во всех операционных системах. Иными словами, мы можем "открыть" соединение и затем выполнять с ним те же самые операции, к каким мы привыкли при работе с файлами. Таким образом, программы на разных машинах (возможно, находящихся за тысячи километров друг от друга), подключенных к Интернету, обмениваются данными так же не­принужденно, как и расположенные на одном компьютере.
TCP/IP устроен так, что он способен выбрать оптимальный путь распространения сигнала между передающей и принимающей стороной, даже если сигнал проходит через сотни промежуточных компьютеров. В последнем случае система выбирает путь, по которому данные могут быть переданы за минимальное время, основыва­ясь при этом на статистическую информацию работы сети и так называемые таб­лицы маршрутизации.
При передаче данные разбиваются на фрагменты — пакеты, которые и доставля­ются в место назначения по отдельности. Разные пакеты вполне могут следовать различными маршрутами в Интернете (особенно если их путь пролегает через десятки серверов), но для всех них гарантирована правильная "сборка" в месте на­значения (в нужном порядке). Как уже упоминалось, принимающая сторона в слу­чае обнаружения "недосдачи" пакета запрашивает передающую систему, чтобы та передала его еще раз. Все это происходит незаметно для программного обеспече­ния, эксплуатирующего TCP/IP.
В Web-программировании нам вряд ли придется работать с TCP/IP напрямую (разве что в очень экзотических случаях) — обычно можно использовать более высокоуров­невые "языки", например, HTTP, служащий для обмена информацией между серве­ром и браузером.



Рейтинг@Mail.ru
Используются технологии uCoz