17.5.2. Адресация IPv4

17.5.2. Адресация IPv4

Соединения IPv4 представляют собой кортеж из 4-х элементов (локальный хост, локальный порт, удаленный хост, удаленный порт). До установки соединения необходимо определить каждую его часть. Элементы локальный хост и удаленный хост являются IPv4-адресами. IPv4-адреса — это 32-битные (4-байтовые) числа, уникальные для всей установленной сети. Как правило, они записываются в виде aaa.bbb.ccc.ddd, где каждый элемент адреса является десятичным представлением одного из байтов адреса машины. Первое слева число в адресе соответствует самому значимому байту в адресе. Такой формат для IPv4-адресов известен как десятичное представление с разделителями-точками.

В связи с тем, что большинство компьютеров вынуждено поддерживать работу нескольких параллельных TCP/IP приложений, IP-номер не обеспечивает уникальную идентификацию для соединения на одной машине. Номера портов — это 16-битные числа, которые позволяют однозначно распознавать одну из сторон соединения на данном хосте. Объединение IPv4-адреса и номера порта обеспечивает идентификацию стороны соединения где-либо в пределах одной сети TCP/IP (например, Internet является единой TCP/IP сетью). Две конечные точки соединения образуют полное TCP-соединение, таким образом, две пары, состоящие из IP-номера и номера порта, однозначно определяют TCP/IP соединение в сети.

Распределение номеров портов для различных протоколов производится на основе раздела стандартов Internet, известного как официальные номера портов, который утверждается Агентством по выделению имен и уникальных параметров протоколов Internet (Internet Assigned Numbers Authority, LANA)[128]. Общие протоколы Internet, такие как ftp, telnet и http, имеют свои номера портов. Большинство серверов предусматривают данные службы на присвоенных номерах, что позволяет их легко найти. Некоторые сервера запускаются на альтернативных номерах портов, как правило, для поддержки нескольких служб на одной машине[129]. Поскольку официальные номера портов не изменяются, система Linux просто находит соответствие между именами протоколов (обычно называемых службами) и номерами портов с помощью файла /etc/services.

Все номера портов попадают в диапазон от 0 до 65 535; в системе Linux они разделяются на два класса. Зарезервированные порты с номерами от 0 до 1 024 могут использоваться только процессами, работающими как root. Это позволяет клиентским программам иметь гарантию того, что программа, запущенная на сервере, не является троянским конем, активизированным каким-то пользователем[130].

IPv4-адреса хранятся в структуре struct sockaddr_in, которая определяется следующим образом.

#include <sys/socket.h>

#include <netinet/in.h>

struct sockaddr_in {

 short int sin_family;        /* AF_INET */

 unsigned short int sin_port; /* номер порта */

 struct in_addr sin_addr;     /* IP-адрес */

}

Первым членом должен быть AF_INET, указывающий, что это IP-адрес. Следующий член — это номер порта в сетевом порядке байтов. Последний элемент — это IP-номер машины для данного TCP адреса. IP-номер, хранящийся в sin_addr, должен трактоваться как непрозрачный тип и не иметь возможности прямого доступа.

Если хотя бы одна из переменных sin_port или sin_addr заполнена байтами (обычно функцией memset()), то это указывает на условие "пренебречь". Серверные процессы, как правило, не беспокоятся о том, какой IP-адрес используется для локального соединения. Другими словами, они согласны принимать соединения с любым адресом, имеющимся на данной машине. Если в приложении требуется принимать соединения только на одном интерфейсе, то при этом нужно обязательно указать адрес. Такой адрес иногда называется неустановленным, поскольку он не представляет собой полное определение адреса соединения (для него требуется еще IP-адрес)[131].

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Адресация на базе возможностей

Из книги Основы AS/400 автора Солтис Фрэнк

Адресация на базе возможностей Системный указатель может также содержать сведения о типе операций, которые выполнимы над объектом. Обычно, такая информация называется полномочиями (authority). Указатель, содержащий адрес объекта и полномочия, называется возможностью


Глава 5 Именование и адресация

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Глава 5 Именование и адресация 5.1 Введение Каждый сетевой узел должен иметь имя и адрес. Каким образом производится их присваивание? Для небольшой независимой локальной сети это не проблема, но если количество компьютеров составляет сотни или тысячи, выбор хорошей схемы


22.4.4 Адресация провайдеров

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

22.4.4 Адресация провайдеров В настоящее время для адресов провайдеров предложена простая иерархическая структура: 3 бита n бит m бит o бит 125-n-m-o бит 010 Идентификатор регистратора Идентификатор провайдера Идентификатор подписчика Идентификатор


17.5.3. Адресация IPv6

Из книги Интернет для ваших родителей автора Щербина Александр

17.5.3. Адресация IPv6 В IPv6 используется тот же самый кортеж (локальный хост, локальный порт, удаленный хост, удаленный порт), что и в IPv4, и одни и те же номера портов (16-битные значения).IPv6-адреса локального и удаленного хостов являются 128-битными (16-байтовыми) числами вместо


17.8.1. Манипулирование IPv4-адресами

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

17.8.1. Манипулирование IPv4-адресами Функции inet_ntop() и inet_pton() являются относительно новыми и были введены для того, чтобы один набор функций мог обрабатывать и IPv4-, и IPv6-адреса. До их появления в программах использовались функции inet_addr(), inet_aton() и inet_ntoa(), которые предназначены


Адресация в Интернете

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

Адресация в Интернете Каждый компьютер имеет в Интернете свой уникальный адрес. Это четырехбайтовое слово, которое выглядит примерно так: 175,240,14,37. Людям работать с такими «цифровыми» адресами не очень-то удобно, поэтому для использования «в быту» они по особой схеме,


6.1.3. Протокол TCP/IP и IP-адресация

Из книги Восстановление данных на 100% автора Ташков Петр Андреевич

6.1.3. Протокол TCP/IP и IP-адресация Любому компьютеру в IP-сети (TCP/IP-сети) назначен уникальный адрес, который называется IP-адресом. IP-адрес — это 32-разрядное двоичное число, которое принято записывать в виде четырех десятичных чисел, разделенных точками, например, 111.111.213.232 или


3.6.1. Адресация в Linux

Из книги Операционная система UNIX автора Робачевский Андрей М.

3.6.1. Адресация в Linux Основным для Linux является ставший стандартом для Интернета протокол TCP/IP (Transmission Control Protocol/Internet Protocol, протокол управления передачей/протокол Интернета), который уже установлен, и достаточно его только настроить. Если вы еще не встречались с этим


Геометрия и адресация

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Геометрия и адресация Внутри диска обычно находится целый пакет пластин, расположенных одна над другой, поэтому дорожки можно представить как цилиндр (Cylinder – C). Поверхность каждой стороны каждой пластины обслуживает отдельная головка (Head – H). Любой диск можно условно


Адресация

Из книги автора

Адресация Каждый IP-адрес можно представить состоящим из двух частей: адреса (или идентификатора) сети и адреса хоста в этой сети. Существует пять возможных форматов IP-адреса, отличающихся по числу бит, которые отводятся на адрес сети и адрес хоста. Эти форматы определяют


7.6. Параметры сокетов IPv4

Из книги автора

7.6. Параметры сокетов IPv4 Эти параметры сокетов обрабатываются IPv4 и для них аргумент level равен IPPROTO_IP. Обсуждение пяти параметров сокетов многоадресной передачи мы отложим до раздела


Адреса IPv4 класса D

Из книги автора

Адреса IPv4 класса D Адреса класса D, лежащие в диапазоне от 224.0.0.0 до 239.255.255.255, в IPv4 являются адресами многоадресной передачи (см. табл. А.1). Младшие 28 бит адреса класса D образуют идентификатор группы многоадресной передачи (multicast group ID), а 32-разрядный адрес называется адресом


27.2. Параметры IPv4

Из книги автора

27.2. Параметры IPv4 На рис. А.1 мы показываем параметры, расположенные после 20-байтового заголовка IPv4. Как отмечено при рассмотрении этого рисунка, 4-разрядное поле длины ограничивает общий размер заголовка IPv4 до 15 32-разрядных слов (что составляет 60 байт), так что на параметры


А.2. Заголовок IPv4

Из книги автора

А.2. Заголовок IPv4 Уровень IP обеспечивает не ориентированную на установление соединения (connectionless) и ненадежную службу доставки дейтаграмм (RFC 791 [94]). Уровень IP делает все возможное для доставки IP-дейтаграммы определенному адресату, но не гарантирует, что дейтаграмма будет


А.4. Адресация IPv4

Из книги автора

А.4. Адресация IPv4 Адреса IPv4 состоят из 32 разрядов и обычно записываются в виде последовательности из четырех чисел в десятичной форме, разделенных точками. Такая запись называется точечно-десятичной. Первое из четырех чисел определяет тип адреса (табл. А.1). Исторически


А.5. Адресация IPv6

Из книги автора

А.5. Адресация IPv6 Адреса IPv6 содержат 128 бит и обычно записываются как восемь 16-разрядных шестнадцатеричных чисел. Старшие биты 128-разрядного адреса обозначают тип адреса (RFC 3513 [44]). В табл. А.4 приведены различные значения старших битов и соответствующие им типы