Как работает сеть
Введение
Понимание принципов работы сети критически важно для тестировщика. Это помогает:
- Диагностировать проблемы с загрузкой страниц и API
- Понимать причины медленной работы приложений
- Тестировать приложения в различных сетевых условиях
- Анализировать логи и сетевой трафик
- Общаться с разработчиками на техническом языке
Модель OSI: основы сетевого взаимодействия
Уровни модели OSI (упрощенно)
Физический уровень (Layer 1):
- Кабели, Wi-Fi сигналы
- Передача битов данных
Канальный уровень (Layer 2):
- Ethernet, Wi-Fi протоколы
- MAC адреса устройств
Сетевой уровень (Layer 3):
- IP протокол
- Маршрутизация пакетов
Транспортный уровень (Layer 4):
- TCP и UDP протоколы
- Порты и соединения
Уровень приложений (Layer 7):
- HTTP, HTTPS, FTP
- Данные приложений
Практический пример
Когда вы открываете сайт google.com:
- Приложение (браузер) создает HTTP запрос
- TCP разбивает данные на пакеты и добавляет порты
- IP добавляет адреса отправителя и получателя
- Ethernet отправляет пакеты через сетевую карту
- Физический уровень передает сигналы по кабелю/Wi-Fi
TCP/IP - основа интернета
IP адреса
IPv4 (наиболее распространенный):
192.168.1.1 - локальный адрес роутера
8.8.8.8 - публичный DNS Google
127.0.0.1 - localhost (ваш компьютер)
IPv6 (новый стандарт):
2001:4860:4860::8888 - DNS Google в IPv6
::1 - localhost в IPv6
Типы адресов:
- Публичные - видны в интернете
- Частные - используются в локальных сетях
- Статические - не изменяются
- Динамические - назначаются автоматически
TCP протокол
Характеристики TCP:
- Надежный - гарантирует доставку данных
- Упорядоченный - данные приходят в правильной последовательности
- С установкой соединения - требует "рукопожатия"
TCP Handshake (рукопожатие):
Клиент → Сервер: SYN (синхронизация)
Сервер → Клиент: SYN-ACK (подтверждение синхронизации)
Клиент → Сервер: ACK (подтверждение)
Применение в тестировании:
- Медленные соединения могут увеличить время handshake
- Потеря пакетов вызывает повторные передачи
- Тайм-ауты TCP влияют на производительность приложений
UDP протокол
Характеристики UDP:
- Быстрый - нет проверки доставки
- Без гарантий - данные могут потеряться
- Без установки соединения - отправляет сразу
Использование:
- DNS запросы
- Видео-стримы
- Онлайн игры
- IoT устройства
Порты и сервисы
Стандартные порты
20/21 - FTP (передача файлов)
22 - SSH (безопасное подключение)
23 - Telnet (небезопасное подключение)
25 - SMTP (отправка email)
53 - DNS (преобразование доменов)
80 - HTTP (веб-сайты)
110 - POP3 (получение email)
143 - IMAP (получение email)
443 - HTTPS (безопасные веб-сайты)
993 - IMAPS (безопасный IMAP)
995 - POP3S (безопасный POP3)
Как работают порты
Пример соединения:
Ваш компьютер: 192.168.1.100:52847
↓
Сервер Google: 142.250.185.78:443
Где:
- 192.168.1.100 - ваш IP адрес
- 52847 - случайный порт вашего браузера
- 142.250.185.78 - IP адрес Google
- 443 - стандартный порт HTTPS
Проверка портов:
# Windows
netstat -an | findstr :80
# Linux/Mac
netstat -an | grep :80
# Проверка конкретного порта
telnet google.com 80
DNS - система доменных имен
Как работает DNS
Процесс разрешения домена:
- Браузер проверяет локальный кэш
- Запрос к DNS серверу провайдера
- Если не найден - запрос к корневым DNS серверам
- Поиск в иерархии: .com → google.com → www.google.com
- Возврат IP адреса браузеру
Практический пример:
Пользователь вводит: www.google.com
DNS возвращает: 142.250.185.78
Браузер подключается к 142.250.185.78:443
Типы DNS записей
A запись - связь домена с IPv4:
www.example.com A 192.0.2.1
AAAA запись - связь домена с IPv6:
www.example.com AAAA 2001:db8::1
CNAME запись - псевдоним домена:
blog.example.com CNAME www.example.com
MX запись - почтовые серверы:
example.com MX 10 mail.example.com
Проверка DNS
Команды для диагностики:
# Windows
nslookup google.com
nslookup google.com 8.8.8.8
# Linux/Mac
dig google.com
dig @8.8.8.8 google.com
# Проверка всех типов записей
dig google.com ANY
Очистка DNS кэша:
# Windows
ipconfig /flushdns
# Mac
sudo dscacheutil -flushcache
# Linux
sudo systemctl restart systemd-resolved
HTTP протокол
Структура HTTP запроса
GET запрос:
GET /search?q=testing HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
POST запрос:
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 45
Authorization: Bearer token123
{"name":"John","email":"john@example.com"}
HTTP методы
GET - получение данных:
GET /users/123 # Получить пользователя с ID 123
POST - создание новых данных:
POST /users # Создать нового пользователя
PUT - полное обновление:
PUT /users/123 # Полностью обновить пользователя 123
PATCH - частичное обновление:
PATCH /users/123 # Обновить только некоторые поля
DELETE - удаление:
DELETE /users/123 # Удалить пользователя 123
HTTP статус-коды
2xx - Успех:
200 OK - Запрос выполнен успешно
201 Created - Ресурс создан
204 No Content - Успех, но нет содержимого
3xx - Перенаправление:
301 Moved Permanently - Постоянное перенаправление
302 Found - Временное перенаправление
304 Not Modified - Ресурс не изменился (кэш)
4xx - Ошибки клиента:
400 Bad Request - Некорректный запрос
401 Unauthorized - Требуется авторизация
403 Forbidden - Доступ запрещен
404 Not Found - Ресурс не найден
429 Too Many Requests - Превышен лимит запросов
5xx - Ошибки сервера:
500 Internal Server Error - Внутренняя ошибка сервера
502 Bad Gateway - Ошибка прокси/шлюза
503 Service Unavailable - Сервис недоступен
504 Gateway Timeout - Таймаут прокси/шлюза
HTTPS и безопасность
SSL/TLS шифрование
Как работает HTTPS:
- Клиент подключается к серверу на порт 443
- Сервер отправляет SSL сертификат
- Клиент проверяет сертификат
- Происходит обмен ключами шифрования
- Устанавливается зашифрованное соединение
SSL Handshake:
1. Client Hello - клиент предлагает методы шифрования
2. Server Hello - сервер выбирает метод и отправляет сертификат
3. Key Exchange - обмен ключами для шифрования
4. Finished - соединение установлено
Сертификаты
Проверка сертификата в браузере:
- Нажмите на замок возле адресной строки
- Просмотрите информацию о сертификате
- Проверьте срок действия и издателя
Командная строка:
# Проверка сертификата
openssl s_client -connect google.com:443
# Информация о сертификате
openssl s_client -connect google.com:443 | openssl x509 -text
Практические сценарии для тестирования
1. Диагностика медленной загрузки
Возможные причины:
- Медленный DNS
- Проблемы с TCP handshake
- Медленный SSL handshake
- Большие размеры ресурсов
- Много HTTP запросов
Инструменты диагностики:
# Трассировка маршрута
tracert google.com # Windows
traceroute google.com # Linux/Mac
# Проверка времени соединения
curl -w "@curl-format.txt" -o /dev/null https://google.com
# Где curl-format.txt содержит:
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_redirect: %{time_redirect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
2. Тестирование в различных сетевых условиях
Имитация медленного соединения:
- Используйте Charles Proxy с Throttling
- Chrome DevTools → Network → Throttling
- Тестируйте на 3G, 4G, Wi-Fi
Тестирование потери пакетов:
- Используйте специализированные инструменты
- Проверяйте поведение приложения при нестабильной сети
3. Анализ API запросов
Что проверять:
- Правильность HTTP методов
- Корректность заголовков
- Размеры request/response
- Время ответа
- Статус-коды ответов
Инструменты:
- Chrome DevTools (Network tab)
- Charles Proxy
- Postman
- curl команды
4. Тестирование безопасности
SSL/TLS проверки:
# Проверка поддерживаемых протоколов
nmap --script ssl-enum-ciphers -p 443 example.com
# Проверка SSL сертификата
sslyze --regular example.com
Заголовки безопасности:
Strict-Transport-Security - принудительное HTTPS
Content-Security-Policy - защита от XSS
X-Frame-Options - защита от clickjacking
X-Content-Type-Options - защита от MIME sniffing
Сетевые проблемы и их решения
Типичные проблемы
DNS проблемы:
Симптомы: Сайт не открывается, ошибка "DNS_PROBE_FINISHED_NXDOMAIN"
Решение: Проверить DNS серверы, очистить DNS кэш
Проблемы с сертификатами:
Симптомы: "Your connection is not private", SSL ошибки
Решение: Проверить дату/время системы, обновить сертификаты
Проблемы с портами:
Симптомы: "Connection refused", "Connection timeout"
Решение: Проверить доступность портов, настройки firewall
Проблемы с прокси:
Симптомы: Медленная загрузка, ошибки соединения
Решение: Проверить настройки прокси, отключить если не нужен
Диагностические команды
# Проверка соединения
ping google.com
# Проверка маршрута
tracert google.com
# Проверка портов
telnet google.com 80
nc -zv google.com 80
# Информация о сети
ipconfig /all # Windows
ifconfig # Linux/Mac
# Активные соединения
netstat -an
ss -tuln # Linux
Мониторинг и метрики
Ключевые метрики
Latency (задержка):
- Время до первого байта (TTFB)
- Время загрузки страницы
- Round-trip time (RTT)
Throughput (пропускная способность):
- Скорость загрузки/выгрузки
- Количество запросов в секунду
Reliability (надежность):
- Процент успешных запросов
- Время доступности сервиса
Инструменты мониторинга
Браузерные инструменты:
- Chrome DevTools Performance
- Firefox Network Monitor
- Safari Web Inspector
Специализированные инструменты:
- Wireshark - анализ пакетов
- tcpdump - захват трафика
- iperf - тестирование пропускной способности
Заключение
Понимание сетевых принципов помогает тестировщику:
- Быстрее диагностировать проблемы
- Лучше понимать причины багов
- Эффективнее тестировать производительность
- Профессиональнее общаться с командой разработки
Изучение сетевых технологий - это инвестиция в вашу экспертизу как тестировщика, особенно при работе с веб и мобильными приложениями.