Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание": 1.2 Об адресах
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
1.2. Об адресах prefer211 15.05.12 в 02:07 |
|
|
Когда Вы отправляете письмо, то указываете адрес получателя в той форме, которую предусмотрела почтовая служба. Прежде чем поговорить с кем-нибудь по телефону, вы передаете системе связи нужный телефонный номер. Подобным образом, чтобы одна программа могла связаться с другой, она должна сообщить сети некоторую информацию, идентифицирующую другую программу. В наборе протоколов TCP/IP для идентификации программы отведены два информационных поля: интернет-адрес, используемый протоколом IP, и номер порта, дополняющий адрес и интерпретируемый транспортным протоколом (TCP или UDP). Ostrolist 17.05.12 в 22:21 |
+2 | |
|
Интернет-адреса - это двоичные числа. В соответствии с двумя стандартизированными версиями протокола IP, интернет-адреса существуют в двух формах. Наиболее распространенной является четвертая версия протокола (IPv4, [12]), тогда как шестая версия (IPv6, [5]) лишь только начинает входить в употребление. Адреса IPv4 состоят из 32 битов, что дает возможность идентифицировать около 4 миллиардов отдельных назначений - определённо недостаточно для современного Интернета (число это может показаться большим, но вследствие того, как выделяются адреса, многие из них растрачиваются понапрасну). В настоящий момент более половины всего адресного пространства IPv4 уже распределено. По этой причине была разработана шестая версия протокола IP - IPv6. Адреса IPv6 состоят из 128 битов. Ostrolist 18.05.12 в 07:04 |
||
|
1.2.1 Запись IP-адресов prefer211 18.05.12 в 02:17 |
||
|
Для представления интернет-адресов людьми, в отличие от программ, используются два различных соглашения - в соответствии с двумя версиями протокола IP. Адреса IPv4 принято писать в виде группы из четырех десятичных чисел, разделенных точками (например, 10.1.2.3). Такое представление адреса получило название dotted-quad notation (четырехкомпонентная система записи адресов с точками). Каждое из четырех чисел представляет содержимое одного байта интернет-адреса и может принимать значения в диапазоне от 0 до 255. Ostrolist 18.05.12 в 07:35 |
+2 | |
|
В то же самое время для представления 16 байтов адресов IPv6 используются группы шестнадцатеричных чисел, разделенные двоеточиями (например, 2000:fdb8:0000:0000:0001:00ab:853c:39a1). Каждая группа чисел представляет два байта адреса, причём начальные нули могут быть опущены, так что пятую и шестую группы в вышеупомянутом примере можно записать просто как :1:ab:. Кроме того, состоящие только из нулей группы могут быть полностью опущены, при том что двоеточия, отделяющие эти группы от остальных частей адреса, должны быть сохранены. В конечном итоге, наш адрес может быть записан в следующем виде: 2000:fdb8::1:00ab:853c:39a1. Ostrolist 18.05.12 в 07:56 |
||
|
Формально, каждый интернет-адрес относится к связи между хостом и его сетевым интерфейсом. Хост может иметь несколько интерфейсов, например, быть одновременно связанным с проводной (Ethernet) и беспроводной (WiFi) сетями. Так как каждое из подобных сетевых соединений принадлежит единому хосту, то интернет-адрес может идентифицировать хост так же хорошо, как и эти соединения. Однако, обратное высказывание неверно, потому что один хост может иметь множество интерфейсов, каждый из которых может иметь множество адресов (в действительности, один интерфейс может одновременно иметь IPv4 и IPv6-адреса). Ostrolist 18.05.12 в 13:10 |
||
|
1.2.2 Имея дело с двумя версиями IP prefer211 18.05.12 в 02:20 |
||
|
Когда была завершена работа над первым изданием этой книги, протокол IPv6 применялся не так уж широко. Сегодня же большинство систем способны поддерживать работу с IPv6 "прямо из коробки". Чтобы сгладить переход с IPv4 на IPv6, многие системы могут одновременно работать с обоими версиями протокола. В таких случаях, каждый сетевой интерфейс (соединение с каналом) способен иметь по меньшей мере один IPv4 и один IPv6 адрес. Ostrolist 18.05.12 в 13:17 |
||
|
Существование сразу двух версий протокола IP усложнило жизнь для программистов сокетов. Теперь при создании сокета вам придется делать выбор, какую из версий протокола взять в качестве основной. Так как же создать приложение, работающее с обоими версиями? К счастью, поддерживающие обе версии протокола системы способны обеспечивать нужное взаимодействие, позволяя сокетам IPv6 общаться как с приложениями IPv6, так и IPv4. Разумеется, адреса IPv4 и IPv6 совершенно разные, однако, адреса IPv4 могут быть преобразованы в адреса IPv6. Преобразованные IPv4 адреса формируются добавлением в начало адреса конструкции ::ffff:. К примеру, преобразованный адрес 132.3.23.7 выглядит как ::ffff:132.3.23.7. Для удобства восприятия, последние четыре байта записываются в привычном виде с разделением точками. Более детально взаимодействие протоколов будет обсуждаться в главе 3. Ostrolist 18.05.12 в 13:37 |
||
|
К сожалению, само по себе обладание интернет-адресом IPv6 не является достаточным для взаимодействия с любым другим IPv6 хостом в Интернете. Для этого вам также необходимо договориться с вашим интернет-провайдером о предоставлении службы пересылки IPv6. Ostrolist 18.05.12 в 13:41 |
||
|
1.2.3 Номера портов prefer211 18.05.12 в 02:18 |
||
|
Мы уже упоминали ранее, что для доставки сообщения конкретной программе используются две части адреса. Номер порта в протоколах TCP и UDP всегда интерпретируется применительно к интернет-адресу. Возвращаясь к упоминавшимся ранее аналогиям, номер порта соответствует номеру комнаты в большом здании, расположенном по определённому адресу. Ostrolist 18.05.12 в 16:08 |
||
|
Почтовая служба использует адрес здания для доставки письма до общего почтового ящика, после чего тот, кто извлекает почту из ящика, уже ответственен за распределение писем по соответствующим комнатам внутри здания. Или представьте организацию с внутренней телефонной системой: чтобы поговорить с работником такой организации, вы сначала набираете основной номер организации для соединения с ее телефонной системой, после чего можете набрать дополнительный номер сотрудника, с которым хотите поговорить. Ostrolist 18.05.12 в 16:19 |
||
|
В этих аналогиях адрес здания и основной номер организации представляют интернет-адрес, тогда как номер комнаты и добавочный номер сотрудника соответствуют номеру порта. Формат номера порта одинаков и в IPv4, и в IPv6 - 16-битовое беззнаковое двоичное число. Таким образом, диапазон возможных портов лежит между 1 и 65 535 (порт 0 зарезервирован). Ostrolist 18.05.12 в 16:26 |
||
|
1.2.4 Специальные адреса prefer211 18.05.12 в 02:18 |
||
|
В каждой из версий протокола IP есть адреса, выделенные для специальных целей. Одним из таких адресов, который весьма полезно знать, является адрес обратной связи (loopback address), всегда назначенный специальному интерфейсу обратной связи - виртуальному устройству, которое просто возвращает передаваемые пакеты информации обратно отправителю. Интерфейс обратной связи оказывается очень полезным при тестировании, так как отправленные на него пакеты незамедлительно возвращаются и попадают прямо к своему адресату. Более того, данный интерфейс присутствует на каждом хосте и может быть использован, даже если компьютер не имеет кроме него никаких других интерфейсов (т.е. не подсоединен к сети). Адрес обратной связи для IPv4 - 127.0.0.1 (в действительности, любой IPv4 адрес, начинающийся с 127 должен действовать таким образом), а для IPv6 - 0:0:0:0:0:0:0:1 (или просто ::1). Ostrolist 18.05.12 в 18:01 |
||
|
Другая группа адресов IPv4 зарезервированная для специального назначения, включает адреса для "личного использования". Эта группа включает в себя все IPv4 адреса, начинающиеся с 10 или 192.168, а так же те, чей первый номер 172 и второй в диапазоне от 16 до 31. (Здесь отсутствует соответствующий класс для IPv6). Эти адреса были первоначально предназначены для использования в частных сетях, которые не являются частью глобальной сети Интернет. Сегодня они используются в домах и малых офисах, которые подключены к интернету через NAT (Network Address Translation - преобразование сетевых адресов). BioForceGun 22.05.12 в 04:13 |
||
|
Подобные механизмы действуют как маршрутизатор, преобразовывая (переписывая) адреса и порты в пакетах и пересылая их. Если быть более точным, NAT создает соответствие между парами "персональный адрес - порт" на одном своем интерфейсе и "публичный адрес - порт" на другом. Это позволяет небольшим группам хостов (например, состоящим в домашней сети) совместно использовать единственный публичный IP-адрес. Ostrolist 22.05.12 в 12:18 |
||
|
Значение данных адресов, зарезервированных для частного использования, в том, что они недоступны из глобальной сети Интернет. Если в дальнейшем вы решите опробовать приведенной в этой книге код на машине, имеющей адрес такого класса (например, внутри вашей домашней сети), и попытаетесь связаться с другим хостом, не имеющим подобного адреса, скорее всего, вы потерпите неудачу. Разве что в том случае, если соединение устанавливает хост с частным адресом, у вас есть некоторый шанс на успех. Ostrolist 22.05.12 в 12:30 |
||
|
Родственный классу частных адресов класс канальных адресов содержит адреса для автоматического конфигурирования. Для IPv4 это адреса, начинающиеся с 169.254, а для IPv6 - любые адреса, начальной 16-битовой частью которых является FE80, FE90, FEA0 или FEB0. Данные адреса могут использоваться для связи только между хостами одной сети и маршрутизаторы не будут пересылать пакеты, предназначенные для таких адресов. Ostrolist 22.05.12 в 12:44 |
||
|
Наконец, еще один класс представляет многоадресную рассылку. В то время как регулярный IP (иногда называемый "индивидуальным") адрес обращается в одно место, многоадресная рассылка потенциально может обращаться к произвольному числу адресатов. Многоадресная рассылка является главной темой, которая будет кратко рассмотрена в главе 6. В IPv4 адреса для многоадресной рассылки в классическом виде имеют первый номер в диапазоне от 224 до 239. В IPv6 адрес начинается с FF. BioForceGun 22.05.12 в 04:32 |
