Тестирование веб-приложений
URL, IP-адрес, маска подсети, DNS, кэш и куки простыми словами
URL – это уникальный адрес ресурса в интернете: протокол, доменное имя, путь, параметры. Компьютеры находят друг друга по IP-адресу, числу длиной 32 бита в IPv4 или 128 бит в IPv6, и маска подсети отделяет в этом адресе номер сети от номера устройства. DNS переводит доменное имя в IP-адрес, чтобы людям не приходилось помнить цифры. Кэш браузера хранит файлы сайтов, чтобы страницы открывались быстрее, а куки хранят данные пользователя: признак входа, настройки, содержимое корзины.
- 32 и 128 бит
- длина IP-адреса в IPv4 и в IPv6
- 0–255
- предел каждого из четырёх чисел в адресе IPv4
- Бесплатно
- урок с заданиями в моём базовом курсе
URL, URI и URN: в чём разница
Открывая сайт, человек первым делом вводит в адресную строку URL (Uniform Resource Locator). Это уникальный адрес ресурса в сети, который говорит, где ресурс находится и как к нему подключиться.
Рядом стоят ещё два понятия. URN (Uniform Resource Name) – это неизменное имя ресурса. Оно называет ресурс, но не говорит, где он лежит и каким способом его получить. Формальный URN выглядит, например, так: urn:isbn:0451450523, это номер книги, по которому её узнают в любой библиотеке. URI (Uniform Resource Identifier) обозначает идентификатор вообще, и им бывает локатор, имя или то и другое сразу. Поэтому и URL, и URN тоже считаются URI.
В примере из урока локатором служит весь адрес вместе с протоколом, а именем только название файла в конце: для имени способ подключения и место не важны. Ниже по частям разобран адрес https://shop.example.com:443/catalog/phones?color=black&sort=price#reviews.
Протокол
Способ подключения: HTTP, HTTPS, FTP. Он стоит первым и отделяется знаками ://.
Доменное имя
Понятное человеку имя сервера, здесь shop.example.com. Браузер превращает его в IP-адрес через DNS.
Порт
Число после двоеточия, которое указывает, какая программа на сервере примет запрос. Для HTTP по умолчанию это 80, для HTTPS 443, поэтому в обычных адресах порт не пишут.
Путь
Адрес ресурса на сервере, здесь /catalog/phones.
Параметры
Стоят после знака ?, а друг от друга отделяются знаком &. Их видно, например, при фильтрации товаров в интернет-магазине: color=black&sort=price.
Якорь
Стоит после знака # и ведёт к определённому месту той же страницы, например к разделу с отзывами.
Как это проверяют
Путь и параметры тестировщик меняет прямо в адресной строке. В интернет-магазине это sort=abc вместо sort=price, page=-1 или page=99999 в каталоге и чужой номер заказа в адресе вида /orders/1052. Сайт должен показать понятную ошибку или страницу по умолчанию, а не упасть с ошибкой 500, и тем более не должен открыть чужой заказ.
Что такое IP-адрес и MAC-адрес
IP-адрес – уникальный сетевой адрес узла в компьютерной сети, построенной на протоколе IP. Чтобы открыть сайт, компьютер должен знать IP-адрес сервера, на котором этот сайт расположен.
В версии IPv4 адрес – это 32-битное двоичное число: четыре группы по 8 бит, то есть четыре байта. В двоичном виде такая запись громоздкая, поэтому каждую группу переводят в десятичное число и разделяют точками, например 192.168.2.10. Ни одно из четырёх чисел не бывает больше 255. Адресов IPv4 на все устройства не хватает, и в версии IPv6 адрес занимает 128 бит. Его записывают шестнадцатеричными группами через двоеточие.
Адреса бывают статическими и динамическими. Статический закреплён за устройством и не меняется. Динамический назначается автоматически при подключении к сети и действует ограниченное время, обычно до конца сеанса.
MAC-адрес – физический адрес устройства. Его записывают в сетевую карту при производстве, а выглядит он как шесть пар символов через двоеточие, например 00:1B:44:11:3A:B7. На собеседовании могут спросить, сколько MAC-адресов в системе. Их столько же, сколько сетевых карт во всём её оборудовании, и сетевой принтер со своей картой тоже попадает в этот счёт.
Двоичная запись и маска подсети
Перевести число из десятичной системы в двоичную на листе бумаги иногда просят на собеседовании. Мне такого вопроса не задавали, но на курсе, который я проходил сам, эти переводы разбирали. Онлайн-конвертеры и калькулятор Windows в режиме программиста делают то же самое, и всё же способ вручную стоит знать.
Когда IP-адрес назначают интерфейсу, например сетевому адаптеру компьютера или маршрутизатора, вместе с ним задают маску подсети (subnet mask). По маске каждое устройство понимает, кто находится с ним в одной подсети, а кто за её пределами. Маска – тоже 32 бита, но нули и единицы в ней не чередуются: сначала идут только единицы, потом только нули. Поэтому её пишут коротко, числом единиц после косой черты. Запись 192.168.2.10/25 означает маску из 25 единиц, то есть 255.255.255.128.
Адрес подсети получают, перемножая адрес и маску бит за битом. Где в маске единица, бит адреса сохраняется, где ноль, он обнуляется. Ниже оба перевода и маска разобраны на числах.
Из десятичной в двоичную
Число делят на 2 и записывают остаток, пока делить не станет нечего. В уроке это число 19. Сначала 19 : 2 = 9, остаток 1, затем 9 : 2 = 4, остаток 1 и 4 : 2 = 2, остаток 0. Дальше 2 : 2 = 1, остаток 0 и 1 : 2 = 0, остаток 1. Остатки читают от последнего к первому и получают 10011.
Из двоичной в десятичную
Цифры нумеруют справа налево, начиная с нуля. Каждую умножают на 2 в степени своего номера, а результаты складывают: 1 × 16 + 0 × 8 + 0 × 4 + 1 × 2 + 1 × 1 = 19.
Целый IP-адрес
Каждое из четырёх чисел переводят отдельно и дополняют нулями слева до восьми знаков. Адрес 192.168.2.10 в двоичном виде выглядит так: 11000000.10101000.00000010.00001010.
Адрес подсети для /25
Первые три числа маски состоят из одних единиц, поэтому 192.168.2 сохраняется целиком. Последнее число адреса 00001010 при маске 10000000 даёт 00000000. Получается подсеть 192.168.2.0/25, в неё входят адреса от 192.168.2.0 до 192.168.2.127.
В одной подсети или нет
У адреса 192.168.2.200 последнее число 11001000, и с той же маской выходит 10000000, то есть подсеть 192.168.2.128. Значит, 192.168.2.10 и 192.168.2.200 при маске /25 находятся в разных подсетях, хотя первые три числа у них совпадают.
Где это встречается в работе
В админке SaaS-сервиса бывает настройка "вход только из сети офиса", куда вписывают подсеть, например 203.0.113.0/25. По тому же расчёту в неё входят адреса от 203.0.113.0 до 203.0.113.127, и тестировщик проверяет вход по обе стороны границы: с 203.0.113.127 вход должен пройти, с 203.0.113.128 уже нет. Ошибка в маске здесь закрывает вход части сотрудников или открывает его посторонним.
Что такое DNS и как браузер находит сайт
Если бы каждый сайт приходилось открывать по IP-адресу, держать в голове пришлось бы сотни чисел. Поэтому ещё в 1980-х годах появилась система доменных имён, DNS (Domain Name System). В ней понятному буквенному имени, домену, сопоставлен IP-адрес. Когда вы вводите имя в браузере, DNS-серверы переводят его в IP-адрес сервера, и уже по нему браузер получает страницу.
1. Ввод адреса
Пользователь вводит доменное имя в адресную строку браузера.
2. Поиск в кэше
Браузер и операционная система проверяют свой DNS-кэш, временное хранилище ответов: известно ли уже, какой IP-адрес соответствует этому домену.
3. Запрос к DNS-серверу
Если в кэше ответа нет, компьютер обращается к DNS-серверу, обычно у провайдера, и получает IP-адрес. У этого сервера тоже есть кэш, а если ответа нет и там, он собирает его по цепочке через серверы нескольких уровней: корневой, доменной зоны и самого домена.
4. Запрос к сайту
Зная IP-адрес, браузер отправляет запрос на сервер сайта.
Где это встречается в работе
Новую версию сайта иногда поднимают на тестовом сервере под боевым именем, и тестировщику дают строку для файла hosts, например 10.0.0.15 shop.example.com. В Windows файл лежит в C:\Windows\System32\drivers\etc\hosts, в macOS и Linux это /etc/hosts. Компьютер читает его раньше, чем спрашивает DNS-сервер, и shop.example.com открывается с тестового сервера. После проверки строку удаляют, иначе сайт так и будет открываться с теста.
Кэш и куки: в чём разница
Кэш браузера – данные сайтов, которые браузер сам сохраняет на диск: элементы дизайна, картинки, видео, музыку. При следующем открытии страницы часть данных берётся с диска, а не с сервера, поэтому страница грузится быстрее, а сервер получает меньше запросов.
Куки (cookies) – небольшие фрагменты данных, которые сервер отправляет браузеру. Браузер хранит их на компьютере пользователя и отправляет обратно с запросами к тому же сайту. В куках лежат личные данные: признак того, что вы вошли (обычно идентификатор сессии или токен), настройки сайта, товары в корзине. Благодаря им корзина не пустеет после перезагрузки страницы, а в социальную сеть не приходится каждый раз входить заново. По куки также подбирают рекламу под интересы пользователя.
Сессионные куки удаляются, когда закрывают браузер, и живут один сеанс. Постоянные хранятся до определённой даты или в течение заданного срока.
Тестировщику кэш и куки чаще всего попадаются в таких ситуациях.
Исправление не видно
Разработчик говорит, что поправил вёрстку, а у вас всё по-старому. Браузер мог взять стили из кэша, поэтому перед повторной проверкой кэш очищают или открывают страницу в режиме инкогнито.
Выход из аккаунта
После выхода сайт не должен пускать в личный кабинет без нового входа, даже если открыть адрес кабинета напрямую.
Удалённые куки
Если удалить куки вручную, сайт должен попросить войти заново и при этом не сломаться. Посмотреть и удалить куки можно в DevTools на вкладке Application.
"У меня работает"
Когда сайт открывается у одного человека и не открывается у другого, причиной бывает кэш браузера или устаревшая запись в DNS-кэше. Поэтому в баг-репорте полезно указать, чистили ли кэш и в каком режиме открывали страницу.
Видеоурок, шпаргалки и задания
Эти понятия я разбираю в 13-м уроке курса "Тестировщик с нуля" на YouTube и показываю перевод чисел между системами счисления на примерах. В бесплатном базовом курсе по тестированию тема идёт уроком "URL, IP, DNS. Кэш и куки". К теории там добавлены части URL, MAC-адрес и виды куки, а после неё идут задания, в том числе на перевод IP-адреса из двоичного вида в десятичный.
Шпаргалка о сети разбирает URL по частям, путь DNS-запроса и уровни моделей OSI и TCP/IP. Вторая шпаргалка сравнивает куки, кэш и другие хранилища браузера по сроку жизни и собирает баги, которые в них прячутся.
Курсы по теме
Вопросы и ответы
Чем URL отличается от URI?
URI обозначает идентификатор ресурса вообще. URL – это вид URI, который указывает, где лежит ресурс и как к нему подключиться, то есть содержит протокол и адрес. Другой вид URI называется URN, это имя ресурса без указания места. Поэтому каждый URL считается URI, а обратное неверно.
Что такое IP-адрес простыми словами?
Уникальный номер устройства в сети, по которому компьютеры находят друг друга. В IPv4 это четыре числа от 0 до 255 через точку, например 192.168.2.10, всего 32 бита. В IPv6 адрес длиннее и занимает 128 бит.
Для чего нужна маска подсети?
Маска показывает, какая часть IP-адреса обозначает сеть, а какая устройство в ней. По маске устройство понимает, кто находится с ним в одной подсети. Запись /24 означает 24 единицы в начале маски, то есть 255.255.255.0.
Что такое DNS?
Система доменных имён, которая переводит понятное имя сайта в IP-адрес сервера. Сначала браузер ищет ответ в DNS-кэше на компьютере, а если его там нет, спрашивает DNS-сервер, обычно у провайдера.
Чем кэш отличается от куки?
Кэш хранит файлы сайта, например картинки, стили и видео, чтобы страница грузилась быстрее. Куки хранят данные о пользователе: признак входа, настройки, корзину. Браузер отправляет их серверу с запросами, и по ним сайт узнаёт пользователя.
Сколько MAC-адресов у компьютера?
Столько же, сколько в нём сетевых карт: у адаптера Wi-Fi и у проводного адаптера адреса разные. Если спрашивают про систему целиком, считают сетевые карты во всём её оборудовании, включая, например, сетевой принтер.
Как перевести IP-адрес в двоичную систему?
Каждое из четырёх чисел переводят отдельно: делят на 2, записывают остатки и читают их от последнего к первому, а потом дополняют нулями слева до восьми знаков. Например, 192.168.2.10 превращается в 11000000.10101000.00000010.00001010.
Посмотреть программы курсов
Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.
