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

Какие знаешь инструменты для работы с сетью?

2.3 Middle🔥 161 комментариев
#Базы данных и SQL

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

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

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

Инструменты для работы с сетью

В Java и на разных платформах существует множество инструментов для диагностики, мониторинга и отладки сетевых подключений.

1. curl

curl — универсальный инструмент для HTTP/HTTPS запросов.

curl https://api.example.com/users
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d "{\"name\": \"John\"}"

Java клиент:

public class HttpClientExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.example.com/users"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(
                "{\\\"name\\\": \\\"John\\\"}"
            ))
            .build();
        
        HttpResponse<String> response = client.send(
            request,
            HttpResponse.BodyHandlers.ofString()
        );
        
        System.out.println("Status: " + response.statusCode());
    }
}

2. Postman

Postman — графический клиент для работы с REST API.

Основные возможности:

  • Создание и сохранение запросов
  • Коллекции запросов
  • Окружения и переменные
  • Автоматизированные тесты
  • Mock сервера
  • Генерация документации

3. wget

wget — утилита для скачивания файлов по сети.

wget https://example.com/file.zip
wget -r https://example.com
wget --limit-rate=200k https://example.com/bigfile.tar.gz

4. netstat / ss

netstat и ss — утилиты для просмотра сетевых соединений.

netstat -an
netstat -tulpn
ss -an
ss -tulpn

Java эквивалент:

public class NetworkStats {
    public static void main(String[] args) throws Exception {
        Enumeration<NetworkInterface> interfaces = 
            NetworkInterface.getNetworkInterfaces();
        
        while (interfaces.hasMoreElements()) {
            NetworkInterface ni = interfaces.nextElement();
            System.out.println("Interface: " + ni.getName());
            
            Enumeration<InetAddress> addresses = ni.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                System.out.println("  IP: " + addr.getHostAddress());
            }
        }
    }
}

5. ping

ping — проверка доступности хоста.

ping -c 5 google.com
ping -n 5 google.com

Java эквивалент:

public class PingCheck {
    public static void main(String[] args) throws Exception {
        String host = "google.com";
        InetAddress address = InetAddress.getByName(host);
        
        long startTime = System.currentTimeMillis();
        boolean isReachable = address.isReachable(5000);
        long responseTime = System.currentTimeMillis() - startTime;
        
        if (isReachable) {
            System.out.println(host + " reachable (" + responseTime + " ms)");
        } else {
            System.out.println(host + " NOT reachable");
        }
    }
}

6. traceroute / tracert

traceroute — показывает маршрут пакетов к хосту.

traceroute google.com
tracert google.com

7. nslookup / dig

nslookup и dig — утилиты для DNS запросов.

nslookup google.com
dig google.com
dig google.com +short

Java эквивалент:

public class DNSLookup {
    public static void main(String[] args) throws Exception {
        String hostname = "google.com";
        
        InetAddress address = InetAddress.getByName(hostname);
        System.out.println(hostname + " => " + address.getHostAddress());
        
        InetAddress[] addresses = InetAddress.getAllByName(hostname);
        for (InetAddress addr : addresses) {
            System.out.println("  " + addr.getHostAddress());
        }
    }
}

8. telnet

telnet — проверка подключения к порту.

telnet example.com 80
telnet example.com 443
telnet localhost 5432

Java эквивалент:

public class PortCheck {
    public static void main(String[] args) {
        String host = "example.com";
        int port = 80;
        
        try (Socket socket = new Socket()) {
            socket.connect(new InetSocketAddress(host, port), 5000);
            System.out.println(host + ":" + port + " OPEN");
        } catch (IOException e) {
            System.out.println(host + ":" + port + " CLOSED");
        }
    }
}

9. tcpdump

tcpdump — перехват и анализ сетевых пакетов.

sudo tcpdump -i eth0
sudo tcpdump -i eth0 -n port 8080
sudo tcpdump -i eth0 host 192.168.1.1
sudo tcpdump -i eth0 -w capture.pcap

10. Wireshark

Wireshark — графический анализатор сетевых пакетов.

Основные возможности:

  • Захват пакетов в реальном времени
  • Анализ протоколов (TCP, UDP, HTTP, DNS)
  • Фильтрация по протоколам, IP, портам
  • Экспорт в различные форматы
wireshark
tshark -i eth0 -f "port 8080"

11. Apache Bench (ab)

ApacheBench — тестирование нагрузки HTTP сервера.

ab -n 100 -c 10 http://example.com/
ab -n 1000 -c 50 -H "Authorization: Bearer token" http://example.com/api/endpoint

12. wrk

wrk — инструмент для нагрузочного тестирования HTTP.

wrk -t12 -c400 -d30s http://example.com/
wrk -t12 -c400 -d30s -s script.lua http://example.com/

13. iperf

iperf — измеряет пропускную способность сети.

iperf -s
iperf -c server_ip
iperf -c server_ip -t 60 -i 10 -P 4

14. Java встроенные инструменты

JConsole и Visual VM для мониторинга сетевой активности Java приложений.

jconsole
jvisualvm

Сравнение инструментов

ИнструментНазначениеУровень
curlHTTP запросыПриложение
PostmanREST APIПриложение
wgetСкачиваниеПриложение
netstat/ssСоединенияОС
pingДоступностьОС
tracerouteМаршрутОС
nslookupDNSОС
telnetПортыОС
tcpdumpПакетыЯдро
WiresharkGUI анализЯдро
Apache BenchНагрузкаПриложение
wrkBenchmarkПриложение
iperfПропускная способностьОС

Практический пример отладки

ping api.example.com
traceroute api.example.com
dig api.example.com
telnet api.example.com 443
curl -I https://api.example.com/health
sudo tcpdump -i eth0 -n "host api.example.com"
ab -n 100 -c 10 https://api.example.com/endpoint

REST клиент для Java

public class RestClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(5))
            .build();
        
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.example.com/users"))
            .GET()
            .build();
        
        HttpResponse<String> response = client.send(
            request,
            HttpResponse.BodyHandlers.ofString()
        );
        
        System.out.println("Status: " + response.statusCode());
        System.out.println("Body: " + response.body());
    }
}

Выбор инструмента зависит от уровня проблемы: от приложения (curl, Postman) до ОС (netstat) и сетевого уровня (tcpdump, Wireshark).