Глобальные сети компьютеров. Практическое введение в Internet, E-Mail, FTP, WWW и HTML, программирование для Windows Sockets© Александр Фролов, Григорий ФроловТом 23, М.: Диалог-МИФИ, 1993, 283 стр. 2.1. Введение в протокол TCP/IPВ 8 томе "Библиотеки системного программиста", который называется "Локальные сети персональных компьютеров. Использование протоколов IPX , SPX , NETBIOS " мы рассказали вам о трех наиболее распространенных протоколах, встречающихся в локальных сетях компьютеров. В силу ряда причин эти протоколы не используются в глобальных сетях. Протокол TCP/IP изначально был ориентирован на глобальные сети в предположении, что качество соединительных линий оставляет желать лучшего. С помощью этого протокола вы сможете создавать глобальные сети, в которых компьютеры соединяются между собой самыми разными линиями - от спутниковых до телефонных. Никаких гарантийПочему протокол TCP/IP имеет двойное название? Потому, что TCP/IP - это два разных протокола, которые соотносятся друг с другом так же, как протоколы SPX и IPX . Протокол IP (полное название - Internet Protocol) - это протокол нижнего уровня, который отвечает за передачу пакетов данных в сети. Так же как и протокол IPX , протокол IP является протоколом датаграмм и работает без подтверждений. Последнее означает, что доставка пакетов данных не гарантируется. Не гарантируется так же и то, что пакеты достигнут пункта назначения в той последовательности, в которой они были отправлены. Тем не менее намного удобнее работать с каналом передачи данных, который работает правильно и доставляет все переданные пакеты по назначению и в правильном порядке. Представьте себе, что вы отправили письмо по электронной почте, а до адресата дошли только некоторые отрывки вашего послания, да и те перепутаны местами. Поэтому над протоколом IP работает протокол более высокого уровня TCP (протокол передачи данных Transmission Control Protocol). Послылая и принимая пакеты через протокол IP, протокол TCP гарантирует доставку всех переданных пакетов данных в правильной последовательности. Проткол TCP/IP может служить носителем для других протоколов, например, для протоколов IPX или NETBIOS, а также для служебных протоколов адресации ARP (Address Resolution Protocol ) и протокола межсетевых управляющих сообщений ICMP (Internet Control Message Protocol ). Адреса в сети TCP/IPОдно из удобств протокола IP заключается в том, что с его помощью можно рассылать пакеты данных в широковещательном режиме, когда они достигают всех компьютеров физической сети. Протоколы IPX и NETBIOS также обладают этим свойством. Что же касается протокла TCP, то для передачи данных с его помощью необходимо создать канал связи между компьютерами. Канал создается с использованием протокола IP. Каждый компьютер, подключенный к сети TCP/IP, имеет свой адрес, который представляется 32-разрядным двоичным числом. Этот адрес не должен совпадать с адресами других компьютеров. Помимо компьютеров, к сети могут подключаться и другие устройства, такие, например, как сетевые принтеры. Они также могут иметь свой адрес. Поэтому в дальнейшем для обозначения устройств, подключаемых к сети, мы будем пользоваться термином узел (название, принятое в зарубежной литературе - host). Адрес узла логически разделяется на две части, одна из которых называется идентификатором сети Network ID, а другая - идентификатором узла Host ID (рис. 2.1).
Рис. 2.1. Компоненты адреса TCP/IP Глобальная сеть может объединять много сетей, каждая из которых имеет свой идентификатор Network ID. В каждой сети может располагаться некоторое количество узлов, каждый из которых имеет свой идентификатор Host ID. Такми образом, с помощью пары чисел (Network ID, Host ID) можно адресовать любой узел, подключенный к глобальной сети на базе протокола TCP/IP. Мы, однако, ничего не сказали о количестве разрядов, отведенного для указанных полей из полного 32-разрядного адреса. Дело в том, что существует три класса адресов , обозначаемых буквами A, B и С, для которых используется различная разрядность полей Network ID и Host ID. В сети с адресами класса A (рис. 2.2) для идентификатора сети отводится 8 разрядов. При этом возможные значения номера сети лежат в диапазоне от 1 до 126. Поле идентификатора узла при этом получается 24-разрядным.
Рис. 2.2. Адресация в сети с адресами класса A Очевидно, что сети с адресами класса A - это крупные сети, объединяющие максимально 16777214 узлов. Из-за выбранного диапазона номеров сети таких крупных сетей может быть всего 126. Сетей с адресами класса B может быть намного больше (до 16384), так как для идентификатора таких сетей отводится два байта (рис. 2.3). Причем первый байт может принимать значения в диапазоне от 128 до 191. Для идентификатора узла отводится тоже два байта. В результате к сети с адресами класса B можно подключить до 65534 узлов.
Рис. 2.3. Адресация в сети с адресами класса B И, наконец, больше всего существует сетей с адресами класса C, в которых идентификатор сети задается тремя байтами, а идентификатор узла - одним байтом (рис. 2.4). Таких сетей, объединяющих до 254 узлов каждая, может существовать примерно 2 миллиона (точное значение - 2097151).
Рис. 2.4. Адресация в сети с адресами класса C Адреса TCP/IP принято записывать в виде четырех десятичных чисел, разделенных точкой, например 201.23.1.12. Каждое десятичное число соответствует одному байту 32-разрядного адреса и может принимать значение от 0 до 255. С учетом этих обозначений узлы, например, с адресами класса A могут иметь адреса от 1.w1.w2.w3 до 126.w1.w2.w3. Здесь символами w1, w2 и w3 обозначены числа, которые могут принимать значения от 0 до 255, но с некоторыми ограничениями. А именно, адреса вида n.0.0.0 и n.255.255.255 зарезервированы, соответственно, для обозначения сети с номером n и всех узлов, подключенных к сети n. Ниже мы привели таблицу, в которой для каждого
класса адреса указано возможное начальное
значение первого байта адреса и обозначение сети
в виде четырех десятичных чисел:
Как мы уже говорили, некоторые адреса зарезервированы для специальных нужд:
Когда вы подключаетесь к глобальной сети, фирма, предоставляющая сервис Internet, может выделить для вас постоянный или временный адрес. Кроме того, вы можете получить для себя даже диапазон адресов (с целью организации собственной сети, подключенной к Internet). Для тех, кто лишь изредка работает с Internet, используя модемное соединение, обычно выдается временный адрес, который действует лишь на один сеанс связи. Когда вы в следующий раз подключитесь к Internet, ваш адрес может стать другим. Причина этого заколючается в дефиците адресов IP. Если, например, к серверу подключено десять модемов, с ним одновременно смогут работать десять пользователей, для которых необходимо выделить десять адресов. Но все эти пользователи не будут работать круглосуточно, поэтому можно выделять временно эти десять адресов любым пользователям, работающим через модемное соединение. В результате к серверу сможет подключаться по очереди значительно большее количество пользователей, чем имеется адресов. Если же вы создаете собственный сервер WWW, который должен работать круглосуточно, вы должны обязательно получить постоянный адрес, а при подключении к этому серверу других пользователей (через локальную сеть или модем) - некоторый диапазон адресов. Маска подсетиПри настройке сетевой компоненты TCP/IP вам потребуется указать такой параметр, как маска подсети (subnet mask ). Маска подсети представляет собой 32-разрядное число, которое предназначено для выделения компонент идентификатора сети Network ID и идентификатора узла Node ID из 32-разрядного адреса. Выделение идентификатора сети выполняется простой логической операцией И между адресом и маской подсети. По умолчанию для маски подсети используются
следующие значения (которые зависят от класса
адресов сети):
Для примера возьмем адрес 193.24.2.23. Исходя из значения первого байта, это адрес сети с адресами класса C. Следовательно, для него по умолчанию используется маска сети 255.255.255.0. В этом случае адрес относится к сети 193.24.2.0. Адрес узла в данной сети получается равным 0.0.0.23. Маска подсети может применяться для разделения крупных сетей на подсети. Если, например, у вас есть сеть с адресами класса B, допускающая подключение до 65534 узлов, вы можете разделить ее на несколько подсетей, указывая соответствующие маски подсетей. Например, если для сети 130.10.0.0 с адресами класса B указать маску подсети 255.255.255.0, то сеть будет разделена на 254 подсети с адресами от 130.10.1 до 130.10.254. Каждая из таких подсетей может объединять до 254 узлов. Заметим, что указанная маска должна использоваться в этом случае на всех узлах подсети. Помимо этого, для каждого узла подсети необходимо указывать один и тот же идентификатор сети Network ID. Мосты в сети TCP/IPГлобальная сеть TCP/IP объединяет множество локальных сетей и отдельные компьютеры (узлы), соединенных между собой различным способом с помощью так называемых мостов (routers). Мост обычно создается на базе компьютера, оборудованного несколькими сетевыми адаптерами, а также модемами (если к мосту через телефонные линии подключаются удаленные пользователи). Основная задача, которую выполняет мост, заключается в фильтрации передаваемых по сети пакетов и передаче их из одной сети в другую. Мост разделяет пакеты, циркулирующие в отдельных логических сетях. Таким образом, пакеты передаются только в те сети, для которых они предназначены. Сказанное иллюстрируется на рис. 2.5, где изображены две сети, соединенные мостом. Роль моста здесь выполняет сервер, оборудованный двумя сетевыми адаптерами.
Рис. 2.5. Две сети, соединенные мостом Адреса сетей равны, соответственно, 222.10.10.0 и 222.10.11.0. Адреса узлов, которые в данном случае определены статически, указаны рядом с изображениями соответствующих компьютеров. В сервере, играющем роль моста, установлено два сетевых адаптера, каждый из которых имеет собственный адрес. Заметьте, что адрес 222.10.10.60 относится к первой сети, а адрес 222.10.11.50 - ко второй. Когда узел с адресом 222.10.10.23 передает пакет данных в узел с адресом 222.10.10.26, этот пакет не передается через мост, так как получатель имеет адрес, относящийся к той же самой сети, в которой находится отправитель. Если же узел с адресом 222.10.10.23 пожелает отправить пакет данных в узел с адресом 222.10.11.37, ему потребуется передать этот пакет через мост, который в сети отправителя имеет адрес 222.10.10.60. Сеть TCP/IP позволяет создавать несколько мостов, причем один из них будет использоваться по умолчанию. Если в конфигурацию вашей сети входит мост, при настройке сетевой оболочки вам придется указать адрес указанного выше моста. А зачем, спросите вы, вообще нужны мосты? Как правило, физические сети имеют ограничения на длину сегмента и количество узлов. Например, в сети Ethernet на базе тонкого коаксиального кабеля максимальная длина одного физического сегмента не может превышать 185 метров. Вы можете соединять такие сегменты при помощи репитеров (как это было сказано в 3 томе нашей библиотеки "Персональный компьютер. Шаг за шагом", который называется "Локальные сети персональных компьютеров"), однако таким образом разрешается соединять не более пяти физических сегментов. Соединенные физические сегменты образуют при этом один логический сегмент. Мосты позволяют соединять между собой несклько логических сегментов, в результате чего большинство ограничений снимается. При подключении к сети Internet мостом служит сервер организации, обеспечивающей такое подключение. Доменные имена узловВ то время как компьютеру удобнее работать с числами, человек предпочитает имена. Ареса IP, заданные в виде четырех десятичных чисел, запоминать крайне неудобно. Настраивая сетевую компоненту протокола NETBIOS , вы должны указать имя для своего компьютера, под которым этот компьютер будет виден другим пользователям сети. Об этом мы подробно рассказывали в 8 томе "Библиотеки системного программиста". При использовании протокола TCP/IP у вас тоже есть такая возможность. Среди разных требований, предъявляемых к именам компьютеров, есть одно - имя должно быть уникальным в рамках сети. Если сеть локальная, и в ней всего 10 - 20 компьютеров, с этим обычно не бывает никаких проблем (разве что два однофамильца или родственника попытаются использовать свою фамилию для идентификации компьютера). В глобальной сети, насчитывающей много миллионов компьютеров, выбор имени может стать непростой задачей. В сети Internet эта задача решается с помощью доменной системы имен , имеющей иерархическую структуру. Пример такой структуры показан на рис. 2.6. (указанные на этом рисунке имена узлов являются вымышленными и не имеют отношения к реальной сети Internet).
Рис. 2.6. Пример иерархической доменной структуры имен На этом рисунке в домене с именем org определены домены sample и simple. Домен simple можно считать вложенным доменом по отношению к домену org. В нем определены домены first, ivs и tiger. Во вложенном домене определен домен tiger (имя этого домена совпадает с именем одного из доменов, вложенных в домен simple). Полный доменный адрес формируется справа налево добавлением имен вложенных доменов, разделенных точкой (рис. 2.7).
Рис. 2.7. Полные доменные имена узлов В рамках одного домена вы можете использовать сокращенные имена, опуская имя домена. Например, узлы first.simple.org, ivs.simple.org, tiger.simple.org в домене simple.org можно называть как first, ivs и tiger, соответственно. Имя tiger вы можете использовать в доменах simple.org и first.simple.org, при этом они будут обозначать разные узлы. Таким образом, если узлы имеют одинаковые имена, но принадлежат к разным доменам, конфликт имен возникать не будет (эти узлы всегда будут иметь разные полные доменные адреса). Для отображения доменных имен на адреса IP в сети Internet существует специальная распределенная база данных Domain Name System (DNS ), пользуясь которой узлы могут преобразовывать доменные адреса в численные адреса IP. В процессе настройки сетевой компоненты TCP/IP вы должны указать адрес узла, на котором находится база данных DNS. Лучше всего использовать адрес, полученный в организации, которая подключила вас к Internet, хотя можно использовать и любой другой известный вам адрес. Например, подключившись к сети Internet через GlasNet, вы можете использовать адрес базы данных DNS, принадлежащей Relcom. В таком подключении нет никакого смысла, однако мы рассказали вам об этой возможности для того чтобы подчеркнуть, что база данных DNS является распределенной и вы можете найти ее на большинстве узлов Internet. А почему эта база сделана распределенной? Это нужно для ускорения процесса поиска адреса IP. Представьте себе что получилось бы, если несколько миллионов пользователей сети Internet попытались бы обратиться к одной централизованной базе данных. Соответствующий сервер был бы очень сильно перегружен и фактически работа сети оказалась бы парализованной. Когда создавалась сеть Internet, в
ней было определено несколько доменов верхнего
уровня, разделявших доменные адреса по их
принадлежности к различным организациям:
В дальнейшем по мере развития сети Internet
в ней появились домены верхнего уровня,
принадлежащие различным странам. Приведем для
примера названия некоторых из таких доменов
(полный список вы найдете на сервере
ftp.wisc.edu):
Пользуясь списком имен доменов верхнего уровня вы можете с некоторой вероятностью определить принадлежность адреса к той или иной стране, однако это сработает не всегда. Заметим, что в России до сих пор используются имя домена su , принадлежавшее в прошлом СССР. |