Онлайн узнать айпи: 2ip.ru | DDoS protection
Содержание
Узнать свой ip адрес онлайн
Перед пользователем компьютера или сети Интернет иногда встает вопрос, как узнать IP адрес устройства, своего или чужого. Причин для этого может быть несколько, например, необходимость соединить с компьютером удаленное устройство. Чужой IP адрес позволит узнать местонахождение сетевого собеседника, но далеко не всегда.
4 способа узнать IP адрес
Каждое устройство имеет свой идентификатор, но определение IP адреса не всегда поможет идентифицировать конкретного пользователя, чаще всего у него окажется адрес его локальной сети, так называемый динамический, он принадлежит провайдеру, который выделяет пользователю один из своих свободных адресов. Состоит адрес из 4-х цифр, значений варьируются от 0 до 256, существует 5 классов таких адресов:
- A – крупные сети общего пользования.
- B – сети среднего размера, например, внутренние сети РЖД или Газпрома.
- C — небольшие локальные сети.
- D – отдельные группы машин.
- E – зарезервированы.
Для решения задачи «прописки» нового устройства в своем компьютере достаточно информации об адресе локальной сети, проверить IP адрес можно в настройках компьютера. Но существуют и другие способы определить IP-адрес.
В компьютере
Ответ на вопрос, как узнать IP-адрес компьютера Windows, очень прост. В меню Пуск нужно зайти в Панель управления и найти значок «Сетевые подключения для Windows XP». Там можно будет узнать IP адрес локальной сети и использовать его для решения технических задач по настройке оборудования, например, камер видеонаблюдения.
Узнать статический адрес
Некоторые пользователи сети заказывают у провайдера такую платную услугу как статический адрес, он присваивается компьютеру и не меняется. В Windows 7 узнать IP-адрес статического характера можно, пройдя следующим путем: сеть и интернет → центр управления сетями и общим доступом → изменение параметров адаптера. Потребуется найти активное подключение →свойство → протокол tcp/ip 4. Именно здесь будет возможен просмотр IP-адреса статического характера.
Специализированные сервисы
Но часто бывает необходимо узнать и внешний IP адрес, это потребуется для проверки работоспособности proxy-серверов или VPN подключений, даст возможность увидеть протокол работы устройства — IPv4 или IPv6. Быстрым способом узнать ваш IP адрес станет использование специализированного сайта, поддерживающего этот сервис. Сайт www.vpnside.com/ru, предоставляет данную возможность.
Программы
Еще одним ответом на вопрос, где найти IP-адрес, станет установка специального программного обеспечения. Скачав и установив один из таких продуктов, например, Get my IP, можно будет быстро узнать и локальный и внешний адреса компьютера.
Имея информацию, как узнать IP адрес Windows 10 или XP, умея узнать внешний адрес можно решить и технические проблемы, связные с настройкой программ или оборудования или, при необходимости сменить его, если новый идентификатор компьютера поможет расширить возможности пользователя.
Как узнать IP-адрес игрового сервера
IP-адрес игрового сервера: как подключиться к игровому серверу с помощью Steam
Как узнать чей-то IP-адрес в онлайн-игре
Часто задаваемые вопросы — IP-адрес игрового сервера
Вывод
Как правило, онлайн-игры требуют от игроков подключения к серверу, который находится где-то в облаке, а затем отправки и получения данных через Интернет. С помощью этого метода игровой сервер сохраняет данные игрока и обновляет их, чтобы другие игроки могли видеть все действия на сервере в режиме реального времени.
Чтобы установить это соединение, компьютер игрока должен подключиться к игровому серверу, чтобы игрок мог в конечном итоге найти IP-адрес игрового сервера.
Существует множество инструментов, которые вы можете использовать для получения IP-адреса игрового сервера на коммерческом рынке. Однако среди всех этих инструментов есть простая команда DOS, которую можно использовать для получения IP-адреса игрового сервера.
Встроенная командная строка Windows, также называемая «cmd», предоставляет инструмент под названием «netstat», который может сделать то же самое, что вам нужно, в один миг. Самый простой и простой способ сделать это — закрыть все программы, использующие сеть (например, Outlook, Skype, YouTube и т. д.), и запустить «netstat n» из командной строки DOS.
Нет необходимости закрывать все приложения, но это облегчит процесс для тех пользователей, которые не знакомы с инструментом определения IP-адреса игрового сервера. Затем вы увидите список всех подключенных служб удаленного доступа и их IP-адреса, чтобы вы могли идентифицировать свой игровой сервер.
IP-адрес игрового сервера: как подключиться к игровому серверу с помощью Steam
Хотите знать, как узнать IP-адрес игрового сервера? Это руководство проведет вас через простые шаги, чтобы легко найти и войти на ваш новый игровой сервер. Некоторые игры, такие как Rust или Ark, имеют встроенную функцию поиска сервера, которая может помешать вам сразу увидеть сервер. Чтобы решить эту проблему, вы можете использовать браузер Steam из клиента Steam для поиска и добавления своих серверов.
Выполните следующие действия, чтобы подключиться к игровому серверу через клиент Steam:
Обратите внимание, что браузер сервера Steam не совместим со следующими играми, но вы можете подключиться к своему IP-адресу прямо из самой игры:
- Террария
- Звездный
Как узнать чей-то IP-адрес в онлайн-игре
Вы можете найти чей-то IP-адрес в онлайн-игре, только если другое устройство включено, подключено к P2P-серверу, подобному вашему, и не имеет игрового VPN-сервера или прокси-сервера, скрывающего его.
Если вы хотите найти чужой IP-адрес или устройство, к которому вы подключены, перейдите в командную строку и выполните команду «netstat -an». Это покажет список всех устройств, с которыми ваш компьютер / рабочий стол обменивается данными на определенном сервере.
Часто задаваемые вопросы — IP-адрес игрового сервера
Сначала перейдите в меню «Пуск» и введите cmd в строке поиска. Когда вы закончите, нажмите Enter. Вы увидите черно-белое окно. В этом окне введите ipconfig /all и нажмите Enter. Вы увидите пробел между переключателем /all и командой ipconfig. Ваш номер IP-адреса будет IPv4.
Окно: найдите cmd или введите cmd во время выполнения, чтобы открыть командную строку. После открытия введите «ping», а затем IP-адрес сервера без порта. При нажатии Enter на сервер отправляются четыре пинга с временем отклика. Пинг от 1 до 80 это хорошо и не влияет на игру.
Вот лучшие DNS-серверы для игр в 2022 году:
- QUAD9 DNS 9.9.9.9 149.112.112.112.
- Verisign 64.6.64.6 64.6.65.6.
- Основной DNS Google 8.8. 8.8 и Среднее 8.8. 4.4.
- OpenDNS 208.67.222.222 208.67.220.220.
- Альтернативный DNS 76.76.19.19 76.223.122.150.
Вывод
На этом заканчивается наше руководство о том, как посмотреть IP-адрес игрового сервера или найти его. Процесс довольно прост, если вы используете для этого наше пошаговое руководство.
Как вы уже знаете, геймер подключается к облачному серверу для онлайн-игр. Эти игровые серверы регулярно обновляют данные игроков, чтобы другие могли проверить их в режиме реального времени.
Для установления этого соединения игрокам необходимо найти IP-адрес игрового сервера, что они могут сделать, выполнив шаги, описанные выше!
Изучение IP-адресации Онлайн-класс
- Все темы
- Технологии
- Сетевое и системное администрирование
- Администрирование сервера
Предварительный просмотр
С Кевином Уоллесом
Нравится 1381 пользователям
Продолжительность: 36м
Уровень мастерства: Начинающий
Выпущено: 9/6/2019
Начать бесплатную пробную версию на 1 месяц
Детали курса
Изучите основы IP-адресации с нематематической точки зрения. Преподаватель Кевин Уоллес углубляется в назначение IP-адресов — как IPv4, так и IPv6 — в современных сетях, исследует форматы и характеристики этих адресов и показывает, как настроить и проверить IP-адрес. Кевин рассказывает, как эти адреса могут быть назначены статически или динамически. Кроме того, он углубляется в роль, которую играют серверы системы доменных имен (DNS).
Навыки, которые вы приобретете
IP-адресация
Познакомьтесь с инструктором
Кевин Уоллес
CCIEx2 Lifetime Emeritus # 7945 (Ent. Infrastructure & Collaboration)
Отзывы учащихся
539 оценок
Общий рейтинг рассчитывается на основе среднего значения представленных оценок. Оценки и обзоры могут быть отправлены только тогда, когда неанонимные учащиеся завершат не менее 40% курса. Это помогает нам избежать поддельных отзывов и спама.
5 звезд
Текущее значение: 443
82%
4 звезды
Текущее значение: 77
14%
3 звезды
Текущее значение: 18
3%
2 звезды
Текущее значение: 1
<1%
1 звезда
Текущее значение: 0
0%
Содержание
Что включено
- Проверьте свои знания
1 тест - Учитесь на ходу
Доступ на планшете и телефоне
Похожие курсы
1ч 31м
Изучение подсетей
Скачать курсы
Используйте приложение LinkedIn Learning для iOS или Android и смотрите курсы на своем мобильном устройстве без подключения к Интернету.
Изучите концепции IP-адресов с помощью модуля Python ipaddress — настоящий Python
Модуль Python ipaddress
— недооцененная жемчужина стандартной библиотеки Python. Вам не нужно быть полноценным сетевым инженером, чтобы иметь доступ к IP-адресам в дикой природе. IP-адреса и Сети повсеместно используются в разработке программного обеспечения и инфраструктуре. Они поддерживают то, как компьютеры, ну, обращаются друг к другу по .
Обучение на практике — эффективный способ освоить IP-адреса. Модуль ipaddress
позволяет вам делать это, просматривая и манипулируя IP-адресами как объектами Python. В этом руководстве вы лучше разберетесь с IP-адресами, используя некоторые функции Python ipaddress 9.Модуль 0090.
В этом руководстве вы узнаете:
- Как работают IP-адреса , как в теории, так и в коде Python
- Как IP-сети представляют группы IP-адресов и как вы можете проверить отношения между двумя
- Как модуль Python
ipaddress
умело использует классический шаблон проектирования, чтобы вы могли делать больше с меньшими затратами
Чтобы продолжить, вам просто нужен Python 3. 3 или выше, начиная с ipaddress
был добавлен в стандартную библиотеку Python в этой версии. Примеры в этом руководстве были созданы с использованием Python 3.8.
IP-адреса в теории и на практике
Если вы помните только одно понятие об IP-адресах, то запомните следующее: IP-адрес — это целое число. Эта часть информации поможет вам лучше понять, как функционируют IP-адреса и как они могут быть представлены в виде объектов Python.
Прежде чем приступить к написанию какого-либо кода на Python, может быть полезно увидеть, как эта концепция конкретизируется математически. Если вы здесь только для нескольких примеров того, как использовать ipaddress
, то вы можете перейти к следующему разделу, посвященному использованию самого модуля.
Удалить рекламу
Механика IP-адресов
Выше вы видели, что IP-адрес сводится к целому числу. Более полное определение состоит в том, что IPv4-адрес — это 32-разрядное целое число, используемое для представления хоста в сети. Термин хост иногда используется как синоним адреса.
Отсюда следует, что существует 2 32 возможных IPv4-адресов, от 0 до 4,294 967 295 (где верхняя граница 2 32 - 1). Но это учебник для людей, а не для роботов. Никто не хочет пинговать IP-адрес 0xdc0e0925
.
Более распространенный способ выражения IPv4-адреса — использование четырехточечной нотации , состоящей из четырех десятичных чисел, разделенных точками:
220.14.9.37
Однако не сразу очевидно, какое целое число представляет собой адрес 220.14.9.37
. Формально можно сломать IP-адрес 220.14.9.37
на четыре компонента октета :
>>>
>>> ( ... 220*(256**3) + ... 14 * (256 ** 2) + ... 9 * (256 ** 1) + ... 37*(256**0) ... ) 36915
Как показано выше, адрес 220.14.9.37
представляет целое число 3 691 907 365. Каждый октет представляет собой байт или число от 0 до 255. Учитывая это, вы можете сделать вывод, что максимальный адрес IPv4 равен 255.255.255.255
(или FF.FF.FF.FF
в шестнадцатеричной записи), а минимум 0.0.0.0
.
Далее вы увидите, как модуль Python ipaddress
выполняет это вычисление за вас, позволяя вам работать с удобочитаемой формой и позволять арифметике адресов происходить вне поля зрения.
Модуль Python
ipaddress
Чтобы продолжить, вы можете получить внешний IP-адрес вашего компьютера для работы с ним в командной строке:
$ curl -sS ifconfig.me/ip 220.14.90,37
Это запрашивает ваш IP-адрес с сайта ifconfig.me, который можно использовать для отображения массива сведений о вашем соединении и сети.
Примечание : В интересах технической корректности вполне возможно, что это не собственный публичный IP-адрес вашего компьютера. Если ваше соединение находится за маршрутизатором с NAT, то его лучше рассматривать как IP-адрес «агента», через который вы выходите в Интернет.
Теперь откройте Python REPL. Вы можете использовать IPv4Address
для создания объекта Python, который инкапсулирует адрес:
>>>
>>> из IP-адреса импортировать IPv4-адрес >>> адрес = IPv4-адрес("220.14.9.37") >>> адрес IPv4-адрес('220.14.9.37')
Передача str
, например "220.14.9.37"
, в конструктор IPv4Address
является наиболее распространенным подходом. Однако класс также может принимать другие типы:
>>>
>>> IPv4-адрес (36915) # Из int IPv4-адрес('220.14.9.37') >>> IPv4Address(b"\xdc\x0e\t%") # Из байтов (упакованная форма) IPv4-адрес('220.14.9.37')
Хотя построение из удобочитаемой строки str
, вероятно, является более распространенным способом, вы можете увидеть ввод байт
, если вы работаете с чем-то вроде данных пакета TCP.
Описанные выше преобразования возможны и в другом направлении:
>>>
>>> интервал (адрес) 36915 >>> адрес запакован б'\xdc\x0e\t%'
В дополнение к возможности двустороннего ввода и вывода для различных типов Python, экземпляры IPv4Address
также хэшируются . Это означает, что вы можете использовать их в качестве ключей в типе данных сопоставления, таком как словарь:
>>>
>>> хеш(IPv4Address("220.14.9.37")) 4035855712965130587 >>> количество_соединений = { ... IPv4-адрес("220.14.9.37"): 2, ... IPv4Address("100.201.0.4"): 16, ... IPv4-адрес("8.240.12.2"): 4, ... }
Вдобавок ко всему, IPv4Address
также реализует методы, которые позволяют проводить сравнения с использованием базового целого числа:
>>>
>>> IPv4-адрес ("220.14.9.37") > IPv4-адрес ("8.240.12.2") Истинный >>> адреса = ( ... IPv4-адрес ("220.14.9.37"), ... IPv4-адрес ("8.240.12.2"), ... IPv4-адрес ("100.201.0.4"), ... ) >>> для отсортированных (адресов): ... печать (а) ... 8.240.12.2 100.201.0.4 220.14.9.37
Вы можете использовать любой из стандартных операторов сравнения для сравнения целочисленных значений адресных объектов.
Примечание . В этом руководстве основное внимание уделяется адресам Интернет-протокола версии 4 (IPv4). Существуют также адреса IPv6, которые являются 128-битными, а не 32-битными и выражаются в более заголовочной форме, такой как 2001:0:3238:dfe1:63::fefb
. Поскольку арифметика адресов в основном одинакова, в этом руководстве из уравнения исключена одна переменная и основное внимание уделяется адресам IPv4.
Модуль ipaddress
имеет более гибкую фабричную функцию, ip_address()
, который принимает аргумент, представляющий адрес IPv4 или IPv6, и делает все возможное, чтобы вернуть экземпляр IPv4Address
или IPv6Address
соответственно.
В этом руководстве вы перейдете к делу и создадите адресные объекты с IPv4Address
напрямую.
Как вы видели выше, сам конструктор для IPv4Address
короткий и приятный. Когда вы начинаете объединять адреса в группы или сети, все становится интереснее.
Удаление рекламы
IP-сети и интерфейсы
Сеть — это группа IP-адресов. Сети описываются и отображаются как непрерывные диапазоны адресов. Например, сеть может состоять из адресов с 192.4.2.0
по 192.4.2.255
, сеть содержит 256 адресов.
Вы можете распознать сеть по ее верхнему и нижнему IP-адресу, но как вы можете отобразить это с более кратким соглашением? Вот где на помощь приходит нотация CIDR.
Обозначение CIDR
Сеть определяется с использованием сетевого адреса плюс префикс в нотации бесклассовой междоменной маршрутизации (CIDR) :
>>>
>>> из IP-адреса импортировать IPv4Network >>> сеть = IPv4Network("192.4.2.0/24") >>> net.num_addresses 256
Нотация
CIDR представляет сеть как
Префикс маршрутизации можно найти с помощью свойства .prefixlen
:
>>> net.prefixlen 24
Давайте сразу перейдем к примеру. Адрес 192.4.2.12
находится в сети 192.4.2.0/24
? Ответ в этом случае — да, потому что первые 24 бита 192.4.2.12
— это первые три октета ( 192.4.2
). С префиксом /24
вы можете просто отрезать последний октет и увидеть, что части 192.4.2.xxx
совпадают.
На другом изображении префикс /24
транслируется в сетевую маску , которая, как следует из названия, используется для маскирования битов в сравниваемых адресах: 924-й бит (остановитесь здесь!)
|_________________________|
|
Эти биты совпадают
Выше последние 8 битов 192.4.2.12
маскируются (с 0
) и игнорируются при сравнении. Еще раз, IP-адрес Python
избавляет вас от математической гимнастики и поддерживает идиоматическое тестирование членства:
>>>
>>> сеть = IPv4Network("192.4.2.0/24") >>> IPv4Address("192.4.2.12") в сети Истинный >>> IPv4-адрес("192.4.20.2") в сети ЛОЖЬ
Это стало возможным благодаря перегрузке операторов, благодаря которой IPv4Network
определяет __contains__()
, чтобы разрешить тестирование членства с использованием оператора в
.
В нотации CIDR 192.4.2.0/24
часть 192.4.2.0
представляет собой сетевой адрес , который используется для идентификации сети:
>>>
>>> сетевой.сетевой_адрес IPv4-адрес('192.4.2.0')
Как вы видели выше, сетевой адрес 192.4.2.0
можно рассматривать как ожидаемый результат, когда маска применяется к IP-адресу хоста:
11000000 00000100 00000010 00001100 # IP-адрес хоста 11111111 11111111 11111111 00000000 # Маска сети, 255. 255.255.0 или /24 11000000 00000100 00000010 00000000 # Результат (по сравнению с сетевым адресом)
Когда вы думаете об этом таким образом, вы можете увидеть, как префикс /24
на самом деле переводится в настоящую 9.0089 IPv4-адрес :
>>>
>>> net.prefixlen 24 >>> сетевая маска IPv4-адрес('255.255.255.0') # 11111111 11111111 11111111 00000000
На самом деле, если вам это интересно, вы можете построить IPv4Network
напрямую из двух адресов:
>>>
>>> Сеть IPv4("192.4.2.0/255.255.255.0") Сеть IPv4('192.4.2.0/24')
Выше, 192.4.2.0
— это сетевой адрес, а 255.255.255.0
— маска сети.
На другом конце спектра в сети находится ее конечный адрес, или широковещательный адрес , который является единственным адресом, который можно использовать для связи со всеми хостами в сети:
.
>>>
>>> сетевой.широковещательный_адрес IPv4-адрес('192. 4.2.255')
Есть еще один момент, который стоит упомянуть о сетевой маске. Чаще всего вы увидите длину префикса, кратную 8:
.
Длина префикса | Количество адресов | Сетевая маска |
---|---|---|
8 | 16 777 216 | 255.0.0.0 |
16 | 65 536 | 255.255.0.0 |
24 | 256 | 255.255.255.0 |
32 | 1 | 255.255.255.255 |
Однако допустимо любое целое число от 0 до 32, хотя и реже:
>>>
>>> сеть = IPv4Network("100.64.0.0/10") >>> net.num_addresses 4194304 >>> сетевая маска IPv4-адрес('255.192.0.0')
В этом разделе вы увидели, как создать экземпляр IPv4Network
и проверить, находится ли в нем определенный IP-адрес. В следующем разделе вы узнаете, как перебирать адреса в сети.
Удалить рекламу
Зацикливание на сетях
Класс IPv4Network
поддерживает итерацию, что означает, что вы можете перебирать его отдельные адреса в цикле для
:
>>>
>>> сеть = IPv4Network("192.4.2.0/28") >>> для адреса в сети: ... печать (адрес) ... 192.4.2.0 192.4.2.1 192.4.2.2 ... 192.4.2.13 192.4.2.14 192.4.2.15
Аналогично, net.hosts()
возвращает генератор, который выдаст адреса, показанные выше, за исключением сетевых и широковещательных адресов:
>>>
>>> h = net.hosts() >>> тип(ч) <класс 'генератор'> >>> следующий(ч) IPv4-адрес('192.4.2.1') >>> следующий(ч) IPv4-адрес('192.4.2.2')
В следующем разделе вы познакомитесь с концепцией, тесно связанной с сетями: подсетью.
Подсети
Подсеть является подразделением IP-сети:
>>>
>>> small_net = IPv4Network("192.0.2.0/28") >>> big_net = IPv4Network("192. 0.0.0/16") >>> small_net.subnet_of(big_net) Истинный >>> big_net.supernet_of(small_net) Истинный
Выше, small_net
содержит только 16 адресов, которых достаточно для вас и нескольких кабинок вокруг вас. И наоборот, big_net
содержит 65 536 адресов.
Распространенный способ создания подсетей — взять сеть и увеличить длину ее префикса на 1. Возьмем пример из Википедии:
.
Подсети сети IPv4 (источник изображения)
Этот пример начинается с /24
сеть:
сеть = сеть IPv4 («200.100.10.0/24»)
Создание подсетей путем увеличения длины префикса с 24 до 25 включает сдвиг битов, чтобы разбить сеть на более мелкие части. Это немного математически волосато. К счастью, IPv4Network
упрощает задачу, потому что .subnets()
возвращает итератор по подсетям:
>>>
>>> для sn в net.subnets(): ... печать (SN) ... 200.100.10.0/25 200.100.10.128/25
Вы также можете указать . subnets()
, каким должен быть новый префикс. Чем выше префикс, тем больше и меньше подсетей:
.
>>>
>>> для sn в net.subnets(new_prefix=28): ... печать (SN) ... 200.100.10.0/28 200.100.10.16/28 200.100.10.32/28 ... 200.100.10.208/28 200.100.10.224/28 200.100.10.240/28
Помимо адресов и сетей, есть третья основная часть модуля ipaddress
, которую вы увидите далее.
Хост-интерфейсы
И последнее, но не менее важное: модуль Python ipaddress
экспортирует класс IPv4Interface
для представления хост-интерфейса. Хост-интерфейс — это способ описать в одной компактной форме как IP-адрес хоста, так и сеть, в которой он находится:
.
>>>
>>> из IP-адреса импортировать IPv4Interface >>> ifc = IPv4Interface("192.168.1.6/24") >>> ifc.ip # IP-адрес хоста IPv4-адрес('192.168.1.6') >>> ifc.network # Сеть, в которой находится IP-адрес хоста Сеть IPv4('192.168.1.0/24')
выше, 192. 168.1.6/24
означает «IP-адрес 192.168.1.6
в сети 192.168.1.0/24
».
Примечание : В контексте компьютерных сетей интерфейс также может относиться к сетевому интерфейсу , чаще всего сетевой интерфейсной карте (NIC). Если вы когда-либо использовали инструмент ifconfig
(*nix) или ipconfig
(Windows), то вы можете знать его по имени, например eth0
, en0
или ens3
. Эти два типа интерфейсов не связаны между собой.
Иными словами, IP-адрес сам по себе не говорит вам, к какой сети (сетям) относится этот адрес, а сетевой адрес представляет собой группу IP-адресов, а не один. Интерфейс IPv4Interface
предоставляет возможность одновременного выражения с помощью нотации CIDR IP-адреса одного хоста и его сети.
Удалить рекламу
Специальные диапазоны адресов
Теперь, когда вы знаете как об IP-адресах, так и о сетях на высоком уровне, также важно знать, что не все IP-адреса одинаковы — некоторые из них особенные.
Администрация адресного пространства Интернета (IANA) в тандеме с Инженерной группой Интернета (IETF) контролирует распределение различных диапазонов адресов . Реестр адресов специального назначения IPv4 IANA — это очень важная таблица, в которой указано, что определенные диапазоны адресов должны иметь особое значение.
Типичным примером является частный адрес . Частный IP-адрес используется для внутренней связи между устройствами в сети, которая не требует подключения к общедоступному Интернету. Следующие диапазоны зарезервированы для частного использования:
Диапазон | Количество адресов | Сетевой адрес | Широковещательный адрес |
---|---|---|---|
10.0.0.0/8 | 16 777 216 | 10.0.0.0 | 10.255.255.255 |
172.16.0.0/12 | 1 048 576 | 172. 16.0.0 | 172.31.255.255 |
192.168.0.0/16 | 65 536 | 192.168.0.0 | 192.168.255.255 |
Случайно выбранный пример: 10.243.156.214
. Итак, откуда вы знаете, что этот адрес является частным? Вы можете подтвердить, что он попадает в диапазон 10.0.0.0/8
:
>>>
>>> IPv4Address("10.243.156.214") в IPv4Network("10.0.0.0/8") Истинный
Второй специальный тип адреса — 9.0091 link-local адрес, доступный только из данной подсети. Примером может служить служба синхронизации времени Amazon, которая доступна для инстансов AWS EC2 по локальному IP-адресу 169.254.169.123
. Если ваш экземпляр EC2 находится в виртуальном частном облаке (VPC), вам не нужно подключение к Интернету, чтобы сообщить своему экземпляру, который сейчас час. Блок 169.254.0.0/16 зарезервирован для локальных адресов:
>>>
>>> timesync_addr = IPv4Address("169. 254.169.123") >>> timesync_addr.is_link_local Истинный
Выше вы можете видеть, что один из способов подтвердить, что 10.243.156.214
является частным адресом, — это проверить, находится ли он в диапазоне 10.0.0.0/8
. Но модуль Python ipaddress
также предоставляет набор свойств для проверки того, является ли адрес особым типом:
.
>>>
>>> IPv4Address("10.243.156.214").is_private Истинный >>> IPv4Address("127.0.0.1").is_loopback Истинный >>> [i for i in dir(IPv4Address) if i.startswith("is_")] # свойства "is_X" ['is_global', 'is_link_local', 'is_loopback', 'is_multicast', 'is_private', 'зарезервировано', 'is_unspecified']
Следует отметить, что в отношении .is_private
используется более широкое определение частной сети, чем три диапазона IANA, показанные в таблице выше. Модуль Python ipaddress
также объединяет другие адреса, выделенные для частных сетей:
.
-
0. 0.0.0/8
используется для «этот хост в этой сети». -
127.0.0.0/8
используется для адресов обратной связи. -
169.254.0.0/16
используется для локальных адресов, как обсуждалось выше. -
198.18.0.0/15
используется для оценки производительности сетей.
Это не исчерпывающий список, но он охватывает наиболее распространенные случаи.
Модуль Python
ipaddress
под капотом
В дополнение к документированному API, исходный код CPython для модуля ipaddress
и его IPv4Address
дает отличное представление о том, как вы можете использовать шаблон под названием композиция , чтобы предоставить вашему собственному коду идиоматический API.
Основная роль композиции
Модуль ipaddress
использует объектно-ориентированный шаблон, называемый композиция . Его класс IPv4Address
представляет собой составной , который обертывает простое целое число Python. В конце концов, IP-адреса — это, по сути, целые числа.
Примечание : Честно говоря, 9Модуль 0089 ipaddress также использует здоровую дозу наследования, в основном для уменьшения дублирования кода.
Каждый экземпляр IPv4Address
имеет квази-частный атрибут ._ip
, который сам является int
. Многие другие свойства и методы класса управляются значением этого атрибута:
.
>>>
>>> адрес = IPv4-адрес ("220.14.9.37") >>> адрес__ip 36915
Атрибут ._ip
на самом деле отвечает за создание внутр.(адрес)
. Цепочка вызовов такова, что int(my_addr)
вызывает my_addr.__int__()
, который IPv4Address
реализует как просто my_addr._ip
:
Если вы спросите об этом разработчиков CPython, они могут сказать вам, что . _ip
— это деталь реализации . Хотя в Python нет ничего действительно частного, подчеркивание в начале означает, что ._ip
является квази-частным, а не частью общедоступного IP-адреса 9.0090 API и могут быть изменены без предварительного уведомления. Вот почему более стабильно извлекать базовое целое число с помощью
int(addr)
.
Однако с учетом всего вышесказанного именно лежащий в основе ._ip
дает классам IPv4Address
и IPv4Network
их магию.
Удалить рекламу
Расширение
IPv4-адрес
Вы можете продемонстрировать мощь лежащего в основе ._ip
целого числа, расширив до 9.0092 класс адресов IPv4:
из IP-адреса импорта IPv4Address класс MyIPv4 (IPv4Address): def __and__(я, другой: IPv4Address): если не экземпляр (другой, (int, IPv4Address)): поднять NotImplementedError вернуть self. __class__(int(self) & int(other))
Добавление .__and__()
позволяет использовать двоичный оператор AND ( &
). Теперь вы можете напрямую применить сетевую маску к хосту IP:
>>>
>>> адрес = MyIPv4 ("100.127.40.32") >>> маска = MyIPv4("255.192.0.0") # Префикс A/10 >>> адрес и маска Мой IPv4('100.64.0.0') >>> addr & 0xffc00000 # шестнадцатеричный литерал для 255.192.0.0 Мой IPv4('100.64.0.0')
Выше, .__and__()
позволяет вам использовать либо другой IPv4Address
, либо int
непосредственно в качестве маски. Поскольку MyIPv4
является подклассом IPv4Address
, проверка isinstance()
в этом случае вернет True
.
Помимо перегрузки операторов, вы также можете добавить совершенно новые свойства: 901]", "", binary_repr), 2) на строка 14 состоит из двух частей:
- Удаляет из входной строки все, кроме нулей и единиц.
- Он анализирует результат, предполагая основание 2, с
int(
., 2)
Использование .binary_repr()
и .from_binary_repr()
позволяет вам преобразовывать и создавать из str
единиц и нулей в двоичной записи:
>>>
>>> MyIPv4 ("220.14.9.37").binary_repr '11011100.00001110.00001001.00100101' >>> MyIPv4("255.255.0.0").binary_repr # Маска сети A/16 '11111111.11111111.00000000.00000000' >>> MyIPv4.from_binary_repr("11011100 00001110 00001001 00100101") Мой IPv4('220.14.9.37')
Это всего лишь несколько способов, демонстрирующих, как использование шаблона IP-as-integer может помочь вам расширить функциональные возможности IPv4Address
с помощью небольшого дополнительного кода.
Заключение
В этом руководстве вы увидели, как модуль Python ipaddress
позволяет вам работать с IP-адресами и сетями, используя общие конструкции Python.
Вот несколько важных моментов, которые вы можете забрать:
- IP-адрес, по сути, представляет собой целое число , и это лежит в основе того, как вы можете выполнять ручные арифметические операции с
адреса и как классы Python изipaddress
разработаны с использованием композиции.