← Назад к вопросам

Что такое ip адрес?

1.0 Junior🔥 91 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

IP адрес (Internet Protocol address)

IP адрес — это уникальный цифровой идентификатор устройства в компьютерной сети. Он позволяет устройствам находить друг друга и обмениваться данными в интернете. IP адрес работает на сетевом уровне (Layer 3) модели OSI и необходим для маршрутизации пакетов.

Версии IP

IPv4 (Internet Protocol version 4)

Довольно долго это был стандарт. Формат: четыре блока чисел от 0 до 255, разделённые точками.

Примеры IPv4 адресов:
192.168.1.1      (локальный адрес в домашней сети)
8.8.8.8          (DNS сервер Google)
127.0.0.1        (localhost)
172.16.0.0       (приватный диапазон)

Размер: 32 бита = 2^32 = 4,3 миллиарда адресов (уже исчерпаны)

IPv6 (Internet Protocol version 6)

Новый стандарт, созданный чтобы решить проблему исчерпания IPv4. Формат: шестнадцатеричные блоки, разделённые двоеточиями.

Примеры IPv6 адресов:
2001:4860:4860::8888  (DNS Google в IPv6)
::1                   (localhost в IPv6)
fe80::1               (локальный link-local адрес)

Размер: 128 бит = 2^128 = 340 триллионов триллионов адресов

Типы IP адресов

1. Публичный (Public) IP адрес

Видим в интернете, уникален в масштабе мира. Выделяется провайдером.

// Пример: узнать публичный IP в приложении
String publicIp = "203.0.113.45"; // ваш адрес в интернете

2. Приватный (Private) IP адрес

Используется внутри локальных сетей (дома, в офисе, в компании). Не видим в интернете.

Диапазоны приватных адресов (RFC 1918):

10.0.0.0 — 10.255.255.255           (10.0.0.0/8)
172.16.0.0 — 172.31.255.255         (172.16.0.0/12)
192.168.0.0 — 192.168.255.255       (192.168.0.0/16)

Пример сетевой топологии:

Интернет (Публичный IP: 203.0.113.45)
    ↓
Маршрутизатор (дома)
    ↓
┌─────────────────────────────────┐
│  Домашняя сеть (192.168.1.0)    │
│  Ноутбук: 192.168.1.10          │
│  Смартфон: 192.168.1.20         │
│  ПК: 192.168.1.30               │
└─────────────────────────────────┘

3. Loopback (обратный) адрес

Воображаемый адрес, петля на себя же. Используется для тестирования.

IPv4: 127.0.0.1
IPv6: ::1

4. Broadcast адрес

Адрес для отправки пакета всем устройствам в сети.

В сети 192.168.1.0/24 broadcast адрес: 192.168.1.255

IP адрес и сетевая маска

Сетевая маска (Subnet Mask) определяет, какая часть IP адреса относится к сети, а какая к хосту.

IP адрес:      192.168.1.100
Маска:         255.255.255.0  (или /24 в CIDR)
               ^^^^^^^^^^^^^^^^ ^^^ сеть
                            ^^^ хост

Пример с Java:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Collections;

public class IPAddressExample {
    public static void main(String[] args) throws Exception {
        // Получить localhost
        InetAddress localhost = InetAddress.getLocalHost();
        System.out.println("Hostname: " + localhost.getHostName());
        System.out.println("IP: " + localhost.getHostAddress());
        
        // Получить все сетевые интерфейсы
        NetworkInterface.networkInterfaces()
            .forEach(iface -> {
                System.out.println("Интерфейс: " + iface.getDisplayName());
                iface.getInterfaceAddresses().forEach(addr -> {
                    System.out.println("  IP: " + addr.getAddress().getHostAddress());
                    System.out.println("  Маска: " + addr.getNetworkPrefixLength());
                });
            });
        
        // Проверить доступность хоста
        InetAddress google = InetAddress.getByName("8.8.8.8");
        boolean isReachable = google.isReachable(5000);
        System.out.println("Google доступен: " + isReachable);
    }
}

Как работает маршрутизация

// Ваш приложение отправляет пакет на сервер
String serverIp = "203.0.113.100";
int port = 8080;

Socket socket = new Socket(serverIp, port);
OutputStream out = socket.getOutputStream();
out.write("Hello Server".getBytes());

// Маршрутизаторы смотрят на IP адрес и направляют пакет дальше
// Pакет проходит через интернет и достигает конечного адреса

DNS и IP адреса

DNS (Domain Name System) переводит доменные имена в IP адреса.

// java.net.InetAddress делает это за вас
InetAddress address = InetAddress.getByName("google.com");
String ip = address.getHostAddress(); // "142.250.185.46" или подобный

// Обратный DNS lookup
InetAddress reverseAddress = InetAddress.getByName("8.8.8.8");
String hostname = reverseAddress.getHostName(); // может быть или не быть

IP адреса в контексте Java приложений

Получить IP клиента в HttpServletRequest

public class UserController {
    @PostMapping("/login")
    public ResponseEntity<?> login(HttpServletRequest request) {
        String clientIp = getClientIP(request);
        System.out.println("User login from: " + clientIp);
        return ResponseEntity.ok("OK");
    }
    
    private String getClientIP(HttpServletRequest request) {
        String xForwardedFor = request.getHeader("X-Forwarded-For");
        if (xForwardedFor != null && !xForwardedFor.isEmpty()) {
            return xForwardedFor.split(",")[0]; // первый IP если за proxy
        }
        return request.getRemoteAddr();
    }
}

Запретить доступ с определённого IP

public boolean isIpAllowed(String clientIp) {
    Set<String> blacklist = Set.of("192.168.1.50", "203.0.113.77");
    return !blacklist.contains(clientIp);
}

Важные концепции

  • DHCP — протокол, автоматически выделяющий IP адреса
  • NAT (Network Address Translation) — преобразование приватных IP в публичные
  • VPN — маскирует ваш реальный IP адрес
  • Proxy — промежуточный сервер, может скрывать ваш IP

Вывод: IP адрес — это фундаментальная часть сетевой коммуникации. Понимание IPv4/IPv6, приватных/публичных адресов и маршрутизации важно для разработки надежных сетевых приложений и отладки проблем с подключением.