Что такое IP-адрес?

Ответ

IP-адрес (Internet Protocol address) — это уникальный числовой идентификатор, назначаемый каждому устройству (хосту) в компьютерной сети, использующей протокол IP для связи. Он служит двум основным целям: идентификации хоста и адресации его местоположения в сети, позволяя маршрутизаторам направлять пакеты данных от источника к получателю.

Версии IP

  1. IPv4 (Internet Protocol version 4):

    • Формат: 32-битное число, обычно записываемое в десятичном виде с точками (dotted-decimal), например, 192.168.1.1.
    • Пространство адресов: Около 4.3 миллиарда уникальных адресов, что привело к их истощению.
    • Пример в бинарном виде: 11000000.10101000.00000001.00000001 = 192.168.1.1.
  2. IPv6 (Internet Protocol version 6):

    • Формат: 128-битное число, записываемое в шестнадцатеричном виде, разделённое двоеточиями, например, 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Допускается сокращение нулевых групп (2001:db8:85a3::8a2e:370:7334).
    • Пространство адресов: Практически неисчерпаемо (3.4×10^38 адресов).
    • Решает проблемы IPv4: Встроенная безопасность (IPsec), автоматическая конфигурация, более эффективная маршрутизация.

Классификация IP-адресов

Категория Описание Пример (IPv4) Назначение
Публичный (Public) Глобально уникальный адрес в интернете. Назначается провайдером (ISP). 8.8.8.8 (Google DNS) Общение в глобальной сети Интернет.
Приватный (Private) Адрес для использования внутри локальной сети (LAN). Не маршрутизируется в интернете. 192.168.0.1, 10.0.0.1, 172.16.0.1 Общение между устройствами в домашней или офисной сети. Для выхода в интернет используется NAT.
Динамический (Dynamic) Временно назначаемый адрес. Может меняться при переподключении. Большинство адресов у домашних пользователей. Экономия пула адресов у провайдера.
Статический (Static) Постоянно закреплённый за устройством адрес. Адреса серверов, VPN-шлюзов. Когда устройству необходим постоянный известный адрес.
Loopback Специальный адрес для тестирования сетевого стека на самом устройстве. 127.0.0.1 (localhost) Отладка сетевых приложений без реальной сети.

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

Python: получение IP-адреса хоста (может вернуть локальный адрес)

import socket

# Способ 1: Получение локального IP-адреса машины
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
print(f"Имя хоста: {hostname}")
print(f"Локальный IP-адрес: {local_ip}")  # Например, 192.168.1.5

# Способ 2: Более надежный способ получить внешний IP (через публичный сервис)
# Требует подключения к интернету и использования сторонних библиотек, например requests.

Важные сопутствующие технологии:

  • NAT (Network Address Translation): Позволяет множеству устройств в приватной сети использовать один публичный IP-адрес для выхода в интернет.
  • DHCP (Dynamic Host Configuration Protocol): Протокол для автоматической выдачи динамических IP-адресов и других сетевых параметров устройствам в сети.
  • DNS (Domain Name System): Система, преобразующая человекочитаемые доменные имена (например, google.com) в машинно-читаемые IP-адреса.

Ответ 18+ 🔞

А, слушай, про IP-адреса, да? Ну это, блядь, такая хуйня, типа паспортный стол для твоего компа или телефона в этой всемирной паутине. Представь, что интернет — это город, а каждый девайс — квартира. Так вот IP-адрес — это твой точный адрес, куда почтальоны-маршрутизаторы будут таскать пакеты с данными. Без него нихуя не найдёшь и не отправишь, чистая правда.

Две версии, два сценария, ёпта

  1. IPv4 — это наш старый, добрый, но уже слегка обоссанный стандарт. Типа как «Жигули» в мире адресов. Циферок всего 32 бита, записываются вот так: 192.168.1.1. Адресов получилось около 4.3 миллиарда — казалось бы, овердохуища! Ан нет, все разобрали, кончились, пиздец. В бинарном виде это вообще песня: 11000000.10101000.00000001.00000001. Красота!

  2. IPv6 — это уже новенькое, навороченное, чтоб у всех хватило. Тут уже не 32 бита, а 128, блядь! Записывается шестнадцатеричными цифрами через двоеточие: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Можно нули сокращать, будет 2001:db8:85a3::8a2e:370:7334. Адресов тут столько, что хватит на каждую песчинку на планете, и ещё останется. И безопасность встроенная, и всё при нём. Но внедряется, блядь, со скрипом, как всё новое.

А теперь, сука, классификация, кто есть кто

Категория Объяснение на пальцах Пример (IPv4) Зачем нужен
Публичный (Public) Твой лицейский адрес в большом интернете. Выдаёт провайдер. Уникальный, как отпечатки пальцев. 8.8.8.8 (DNS от Гугла) Чтобы тебя могли найти из любой точки мира.
Приватный (Private) Адресок внутри твоей домашней сети. В интернете его нихуя не видно. Как номер комнаты в общежитии. 192.168.0.1, 10.0.0.1 Для общения между компом, телеком и ноутом дома. Наружу выходят через одного общего «вышибалу» — NAT.
Динамический Временная прописка. Сегодня один адрес, завтра — другой. Как койко-место в хостеле. У большинства домашних юзеров Провайдеры так экономят свои адреса, жмоты, блядь.
Статический Постоянная хата. Адрес за тобой закреплён навечно. Сервера, VPN-шлюзы Нужно, когда к тебе должны всегда стучаться по одному и тому же адресу.
Loopback Адрес для шизофреников, прости господи. Обращение самому к себе. 127.0.0.1 (localhost) Чтобы потестить сетевое приложение, когда интернет нахуй не нужен или не работает.

Ну и как с этим в коде баловаться?

Python: пытаемся выпытать у системы наш IP

import socket

# Способ 1: Спросим у системы напрямую
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
print(f"Имя хоста: {hostname}")
print(f"Локальный IP-адрес: {local_ip}")  # Чаще всего выдаст что-то вроде 192.168.1.5

# Способ 2: Узнать свой внешний, публичный адрес
# Тут уже без интернета и сторонних библиотек (типа requests) — нихуя не выйдет.
# Спросишь у какого-нибудь внешнего сервиса: «Эй, сука, а с какого я адреса к тебе пришёл?»

И ещё, блядь, парочка терминов, без которых нихуя не понять:

  • NAT (Преобразование сетевых адресов) — это такая магия. У тебя дома 5 устройств с приватными адресами, а провайдер дал один публичный. NAT — это швейцар на выходе, который запоминает, кто куда что отправил, и раздаёт ответы обратно. Хитрая жопа, но работает.
  • DHCP — это добрый дядя в твоей локальной сети, который автоматически раздаёт всем устройствам динамические IP-адреса, маски шлюзы. Сидишь — и хуй с ним, не надо ничего прописывать вручную.
  • DNS — это телефонный справочник интернета. Ты пишешь в браузере youtube.com, а DNS быстренько лезет в базу и говорит: «Ага, это, сука, IP-адрес такой-то!». Без него пришлось бы запоминать цифры, пиздец.