TCP/IP язык общения в Internet

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

Что же это такое - Internet?

Это сеть, объединяющая большое количество компьютеров от огромных мэйнфреймов до персоналок. Объединить столь разношерстные машины - непростая задача, но создатели Internet справились с ней блестяще. Это удалось благодаря используемому в этой сети сетей языку общения компьютеров - TCP/IP.

Язык взаимодействия компьютеров - основа Internet. Именно с его помощью можно передавать информацию между компьютерами различной архитектуры и назначения. Правила компьютерного языка, как и правила любого другого языка, разбиты на несколько групп. Каждая группа называется протоколом. Аналогом грамматики можно считать межсетевой протокол (Internet Protocol - IP). Более сложный протокол, который описывает правильное построение "предложений" на машинном языке, называется протокол управления передачей (Transmission Control Protocol - TCP). Есть и другие протоколы, но основные - это TCP и IP. Именно в их честь сеть Internet иногда называют Сеть TCP/IP.

Чем же хороши эти протоколы и почему они столь популярны?

TCP/IP работает ! ! !

Как же устроен TCP/IP и как с его помощью компьютеры общаются между собой?

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

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

Дитя ядерной угрозы
TCP/IP изначально был предназначен для сети ARPAnet, которая разрабатывалась по заказу Министерства обороны США. Вот как описывает создание ARPAnet журналист Гари Антес (C.H.Anthes):
В один из августовских дней 1968 года на столе у Френка Харта, менеджера консультационной компании по сложным технологиям Bolt Beranek Newman - BBN, появился необычный документ. В нем содержалась просьба предложить проект сети, которая была бы основана на коммутации пакетов и соединила бы расположенные далеко друг от друга компьютеры Министерства обороны США. Харт передал запрос своему коллеге Северо Орнштейну (ответственному за разработку аппаратной части технологии коммутации пакетов) и поинтересовался его мнением. "На следующее утро, - вспоминает Орнштейн, - я пришел и нарисовал на доске у Харта схему. И сказал -Мы обязательно должны построить такую сеть, но не вижу причины, почему бы ею не воспользоваться всем .- Эта фраза, как оказалось, попала в точку".
И они построили такую сеть. Первоначально Internet называлась ARPAnet, так как была разработана агентством Advanced Research Projects Agence (ARPA). В конце 1969 года она объединяла четыре крупнейших вычислительных центра - Калифорнийский университет, Стэнфордский исследовательский институт, Университет Юты и BBN в Кембридже. Позднее к этой сети присоединились многие научные центры США, и в результате получилась одна из крупнейших в то время научных компьютерных сетей - Internet. Но она все-таки была создана по заказу Министерства обороны с вполне конкретными целями.
В шестидесятых годах у Советского Союза и США уже было ядерное оружие, которое еще в середине шестидесятых чуть не привело к глобальной катастрофе. В этих условиях Министерство обороны США, понимая важность согласованных действий различных войск, потребовало разработки вычислительной сети, которая должна была обеспечить связь между всеми войсками даже в случае частичного разрушения линий связи. Это было необходимо, как тогда считали, для успешного ведения боевых действий в условиях ядерной войны. Для этих целей наиболее подходил принцип коммутации пакетов.
Однако в начале в Internet использовался не TCP/IP. Только через пять лет после создания ARPAnet - в 1974 году - студент Гарварда Боб Меткалфи (Bob Metcalfe) в своей диссертации "пакетные сети" описал протокол Ethernet. Сегодня это самый распространенный протокол, используемый в локальных сетях. Именно с его помощью передаются пакеты более сложного протокола TCP/IP. Сам же TCP/IP был сформулирован аспирантом Стэнфордского института только в 1975 году. Он обеспечивал передачу информации по ненадежным сетям. Работал он так: программа-отправитель разбивала информацию на отдельные пакеты и передавала их по сети, а программа-получатель восстанавливала сообщение из отдельных частей. Затем на основе этого протокола были разработаны основные сетевые сервисы - telnet (удаленный доступ), FTP (File Transfer Protocol - протокол передачи файлов) и e-mail (электронная почта). Они обеспечивали передачу файлов и коротких сообщений по сети и даже исполнение команд на удаленном компьютере. Затем были разработаны и более сложные сервисы, типа WWW (World Wide Web - всемирная паутина) с HTTP (HyperText Transfer Protocol - протоколом передачи гипертекста) и
X-Windows (оконная система).
Следует отметить, что отправителю достаточно правильно указать адрес получателя, а вся остальная информация для пересылки сообщения получателю уже находится в сети. Поэтому каждый пакет можно доставить адресату независимо от всех остальных и каждый раз по оптимальному на текущий момент маршруту. Причем по одному каналу могут передаваться пакеты, которые направляются в совершенно различные части сети. Это позволяет более эффективно использовать ресурсы вычислительной сети и обходить ее поврежденные участки.

Одно из достоинств межсетевого протокола состоит в том, что он самодостаточен для передачи информации. Однако "ручная работа" с протоколом IP очень смахивает на изобретение велосипеда каждый раз, когда нужно куда-либо поехать. Поэтому обычно IP используется как основа для более удобных и простых в обращении протоколов. Чего же не хватает IP для полноценной передачи информации?

При использовании IP существуют следующие проблемы:

Oграниченный объем пакета

Стандартная упаковка IP может переносить ограниченный объем информации. Максимальная длина сообщения, помещающегося в один IP- пакет, всего 1500 символов. Представьте, что почта пересылает только сообщения не больше почтовой открытки.

Ненадежность связи

Компьютерная сеть, как и почта, нередко теряет или искажает пакеты информации. Internet, в отличие от почты, способна справиться с этой проблемой, так как информация может размножаться простым копированием;

Несогласованность связей

Пакеты, посланные по компьютерной сети, как и письма, могут прийти к получателю не в той последовательности, в которой они отправлялись. Поэтому получатель должен правильно восстанавливать последовательность полученных пакетов.

Все перечисленные проблемы можно решить с помощью другого протокола Internet - TCP.

Протокол управления передачей (TCP)

Лет пять назад я зарабатывал себе на жизнь сбором популярных в то время компьютеров - Синклеров. Мне заказывали компьютер, давали все детали, и я должен был собрать работающий компьютер. Алгоритм моей работы был прост: я проверял наличие всех деталей, потом тестировал их и впаивал в печатную плату. Если пайка была хорошей, то компьютер "оживал" сразу, и я отдавал его заказчику. Протокол управления передачей IP-пакетов (TCP) работает примерно по тому же алгоритму. Информация разбивается на несколько IP-пакетов (деталей) и передается по сети. Получатель же должен проверить наличие всех пакетов, затем проверить качество каждого пакета (не было ли искажения информации во время передачи) и только потом собрать их вместе, в целое сообщение. Аналогия может показаться странной, но в сборке компьютеров и информационных пакетов есть следующие общие черты:

  • проверка наличия всех элементов;
  • замена утерянных или искаженных элементов;
  • сбор всех частей в единое целое;
  • подтверждение качества сборки.
Программы обслуживания протокола TCP необходимо запускать как на машине отправителя, так и на компьютере получателя. Эти два TCP-модуля, использующие ресурсы обоих компьютеров, контролируют информацию о состоянии связи. Таким образом, протокол TCP обеспечивает гарантированную передачу информации с помощью так называемых TCP-сеансов. Он освобождает программы от необходимости самостоятельно контролировать передачу IP-пакетов и исправлять ошибки. Естественно, надежность TCP требует большой производительности процессора и пропускной способности сети.

Практически, с помощью TCP можно передавать по сети сообщения любой длины. Благодаря проверке пакетов на искажения TCP позволяет передавать пакеты даже по ненадежным сетям. Если пакет информации потеряется или исказится, то получатель запросит его копию. Поскольку сообщение восстанавливается только после получения всех неискаженных пакетов, то последовательность их получения уже не имеет значения.

TCP - это протокол, тесно связанный с IP, но используется для других целей. Если задача IP - передать пакеты от отправителя к получателю, то цель TCP - сделать передачу IP-пакетов наиболее надежной. Так как TCP без IP невозможен, а IP без TCP ненадежен, то эти протоколы часто называют вместе - TCP/IP. Но термин "TCP/IP" обычно подразумевает не просто два описанных протокола. Он охватывает целое семейство протоколов, программ и даже саму сеть. В состав семейства входят протоколы TCP, UDP, ICMP и другие. Кроме того, TCP/IP используют такие широко известные сервисы, например FTP, telnet, X-Windows (многооконный графический интерфейс с пользователем), "r-команды" и многие другие. TCP/IP - это язык межсетевого взаимодействия, язык Internet.

Красив и мрачен

Чем же привлекателен TCP/IP?

Как ни странно, громадной популярностью этот протокол обязан самому факту своего рождения. От заказчика - Министерства обороны - он получил надежность, а от исполнителей - ученых США - открытость.

Надежность передачи информации - одно из основных требований, предъявляемых к компьютерным сетям. В принципе вычислительные сети предназначены именно для того, чтобы предоставлять пользователям доступ к ресурсам и данным других компьютеров. А так как надежную сеть построить достаточно сложно, то часто приходится встраивать в протоколы механизмы поиска и исправления ошибок. В TCP/IP такой механизм есть - контроль за передачей сообщений и повторный запрос при искажениях информации.

Немаловажным фактором для популярности протокола является его масштабируемость, то есть возможность подключения к сети, которую обслуживает протокол, новых компьютеров. Для TCP/IP-сети, в которой при подключении нового компьютера достаточно определить его адрес, размер сети ограничивается только количеством компьютерных адресов. Межсетевой протокол позволяет адресоваться к более чем 4 миллиардам компьютеров. Даже Internet еще не исчерпала столь огромного адресного пространства. В то же время TCP/IP успешно работает и в маленьких сетях с небольшим количеством компьютеров.

Кроме того, программное обеспечение, которое поддерживает TCP/IP, есть практически для всех существующих платформ. Столь широкому распространению этого семейства способствовало два фактора - исторический и финансовый. Поскольку TCP/IP - один из старых протоколов, то для совместимости с уже существующим программным обеспечением многие производители программ вынуждены включать в комплект поставки поддержку TCP/IP. А так как TCP/IP разрабатывался в институтах и университетах США, то вначале он распространялся бесплатно, как некоммерческий продукт. Когда же вычислительная техника нашла свое коммерческое применение, то вокруг TCP/IP накопилось огромное семейство тесно связанных протоколов, и установить, кто же их разработал было невозможно. А нет патента - нет и лицензионных выплат. Именно поэтому программное обеспечение, предназначенное для этого семейства протоколов, достаточно дешево.

Следует отметить, что широкое распространение и дешевизна TCP/IP послужили причиной для разработки многочисленных сервисов. Некоторые известные сервисы разрабатывались сразу для TCP/IP (например, telnet и FTP). Некоторые же были перенесены с других протоколов. Например, сервис электронной почты был предназначен для протокола UUCP (UNIX-UNIX Connect Protocol), а затем перенесен на TCP/IP как SMTP. Сегодня для TCP/IP разработаны практически все необходимые типы сервисов: от электронной почты до гипертекстового протокола, по которому можно передавать информацию практически в любом виде - текстовую, графическую, звуковую, видео и другие.

Однако TCP/IP имеет и некоторые недостатки. Одни из них - обратная сторона достоинств, другие - огрехи реализации. Открытость и масштабируемость протокола порождает его плохую управляемость. Часто после нескольких модернизаций компьютерной сети разобраться в ее работе становится сложно. Но основной недостаток протокола - его плохая защита от подделки и прослушивания.

Слабая защита протокола TCP/IP породила особый класс пользователей - хакеров. Защита протокола подразумевает доступность удаленных данных и неизменность их при транспортировке. В некоторых случаях требуется еще и защита от прослушивания, но таких случаев, как правило, немного. К сожалению, современная реализация TCP/IP не может гарантировать неизменность данных, а иногда даже и их доступность. Поскольку TCP/IP первоначально разрабатывался для Министерства обороны, то предполагалось, что потенциально опасные пользователи просто не будут допущены к компьютерам и линиям связи, по которым передается информация. Кроме того, скорости вычислений на заре вычислительной техники были небольшими, и загружать и без того перегруженные компьютеры механизмами защиты было неразумно. Однако современные вычислительные машины работают достаточно быстро и могут полностью зашифровывать все пакеты информации и вычислять для них электронную подпись, а межсетевой протокол, к сожалению, не предусматривает таких простых средств защиты.

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

Как уже было сказано, TCP/IP разрабатывался для связи между локальными сетями по ненадежным линиям. Для этого в нем есть некоторая избыточность, позволяющая исправлять ошибки. Но если локальная сеть работает достаточно надежно, то избыточность протокола становится обузой. Поэтому TCP/IP слишком неповоротлив в локальных сетях и работает медленно. Хотя задержки, возникающие при использовании этого семейства протоколов, незначительные, но, повторенные огромное количество раз, они могут сильно замедлить работу сети. Кроме того, все пакеты, передаваемые по TCP/IP-сети, имеют одинаковый приоритет. Но встречается ситуация, когда пакет нужно передать за минимальное время. Такое требование возникает при передаче информации в режиме реального времени. К сожалению, TCP/IP не поддерживает такой передачи сообщений, и поэтому, например, в музыкальных сообщениях, которые передаются по TCP/IP-сетям, бывают неприятные паузы.

Следует отметить еще и тот факт, что сеть Internet уже почти исчерпала возможности современной версии TCP/IP. Это выражается в том, что количество компьютерных адресов, на которое рассчитана Internet, уже подходит к концу. Чтобы предотвратить этот так называемый коллапс Internet, который ожидается уже через несколько лет, была создана специальная группа инженеров, которая работает над созданием IPng (Internet Protocol - new genegation) - нового поколения межсетевого протокола. Ожидается, что новая версия сможет устранить самые существенные недостатки старой - плохую защиту, слабое управление и ограниченность адресного пространства. Но переход Internet на новую версию - процесс длительный и мучительный.

FTP (File Transfer Protocol) - протокол пересылки файлов. С помощью этого протокола можно копировать файлы по сети с одного компьютера на другой.
telnet - протокол для исполнения команд на удаленной машине.
rlogin - другой протокол для удаленного исполнения команд.
Он входит в группу "r-команд".
SMTP (Simple Mail Transfer Protocol) - простой протокол пересылки почты -
обеспечивает работу электронной почты.
HTTP (HyperText Transfer Protocol) - протокол передачи гипертекста.
Этот протокол используется для передачи сообщений World Wide Web (WWW).
NNTP (Network News Transfer Protocol) - протокол передачи сетевых новостей
(так называемых телеконференций).
UDP (User Datagram Protocol) - протокол пользовательских дейтаграмм.
Он обычно используется для передачи коротких сообщений.
TFTP (Trivial File Transfer Protocol) - протокол простейшей пересылки файлов.
Он реализует дейтаграммную пересылку файлов, но в результате получается медленнее и дороже, чем по FTP. Обычно его используют для загрузки бездисковых устройств.
DNS (Domain Name Service) - протокол службы имен. Используется
для преобразования имени компьютера из формы домена в машинную (IP-адрес).
NTP (Network Time Protocol) - протокол сетевого времени.
Служба времени - служба синхронизации компьютерных часов.
Эхо - протокол для обратной передачи, предназначен, например,
для подтверждения получения IP-пакета.
GGP (Gateway-Gateway Protocol) - протокол общения шлюзов.
HMP (Host Monitoring Protocol) - протокол непрерывного контроля
за сетевым рабочим компьютером.
EGP (Extended Gateway Protocol) - протокол внешнего шлюза.
ICMP - протокол межсетевых управляющих сообщений - предоставляет процессам
в сети возможность предпочтительного выбора маршрутов пересылки
и других подобных вещей.

Смерть TCP/IP

Количество пользователей Inter-net возрастает очень быстро. Удобство этой сети и ее колоссальные возможности стали основной причиной популярности TCP/IP. Многие ведущие производители программного обеспечения, которые раньше не интересовались глобальными сетями, сейчас уже включили в свои сетевые продукты поддержку TCP/IP. В результате появилась возможность использовать TCP/IP в локальных сетях, где ранее уже использовали продукты этих производителей. Поэтому можно с уверенностью сказать: "TCP/IP - основа для взаимодействия разнородного оборудования".

Основные конкуренты TCP/IP - NetBIOS и IPX (Internetwork Packet Exchange) - не могут похвастаться этим качеством. NetBIOS, разработанный IBM, обеспечивает достаточно большую скорость передачи данных в пределах локальной сети, но не допускает использования маршрутизаторов. Поэтому применять его в сетях большого размера становится невозможно. IPX, разработанный фирмой Novell, хоть и работает в более крупных сетях, но уступает по масштабируемости TCP/IP.

Хотя межсетевой протокол и имеет некоторые недостатки, но его можно считать лучшим из существующих протоколов для передачи информации между локальными сетями и отдельными компьютерами. Кроме того, новое поколение IP, вероятно, сможет решить проблемы старого межсетевого протокола, но переход на новый протокол - задача достаточно сложная. Поэтому существующее семейство протоколов TCP/IP еще послужит верой и правдой своим владельцам. Так что смерти TCP/IP не предвидится еще минимум лет десять.

Валерий Коржов