Зачем эти цифры?

Возникающие трехзначные обозначения – это коды ответов сервера при запросах по протоколу НТТР. Это сетевой протокол, то есть набор правил, по которым происходит соединение и обмен данными между устройствами, подключенными к сети. Он нужен, чтобы разные программы, операционные системы и устройства могли работать в сети дружно и синхронно. Иными словами, благодаря ему пользователи могут пользоваться браузерами и загружать страницы Всемирной паутины, обмениваться электронными сообщениями и совершать другие действия в интернете. НТТР расшифровывается как HyperText Transfer Protocol (протокол передачи гипертекста) и сейчас является самым используемым.

Как он функционирует? Упрощенно: пользователь отправляет со своего компьютера определенный запрос на сервер (компьютер, постоянно подключенный к сети). Сервер ищет информацию по полученному запросу в базах других серверов, находит нужную интернет-страницу и, если операция прошла успешно, отправляет информацию на устройство пользователя. Обработка данных происходит по протоколу НТТР. Состояние совершения запроса (то есть его обработки) и обозначается трехзначным кодом.

Список кодов состояния содержится в документе RFC (Request for Content – пер. «рабочее предложение»). В нем прописаны стандарты и технические спецификации, применяемые при работе во Всемирной сети по протоколу НТТР, созданному в середине 90-х годов. Новые коды состояния вводятся только с разрешения Инженерного совета Интернета (Internet Engineering Task Force, IETF) – открытого международного сообщества, которое регулирует развитие программной архитектуры сети.

Какие бывают коды состояний

Традиционно они делятся на пять групп, каждая из которых обозначается первой цифрой в коде – от 1ХХ до 5ХХ. Следующие две цифры – уже уточнение состояния ответа сервера. Отсюда и получаем три цифры.

Первая группа – это когда все в порядке и работа системы происходит в штатном режиме. Такие коды носят чисто информационный характер. Например, код 100 означает, что пользователь сделал корректный запрос и сервер начал его обрабатывать. Иногда этот код даже не генерируется. 101 – это внутренний код, означающий переход на другую версию НТТР при обработке запроса. Цифры 102 значат, что запрос просто обрабатывается дольше обычного.

Вторая группа кодов генерируются для того, чтобы сообщить о подтверждении и принятии запросов. 200 значит «ОК», то есть «Все хорошо»: все запросы были обработаны, переданы и завершены. Аналог этого кода – 203, но здесь данные берутся из второстепенно источника, например, когда запрос ведет к информации в архивах или в резервных базах. Код 204 появляется, когда обработка запроса произошла успешно, но данных именно для этого пользователя не существует. На практике это значит, что пользователю нужно авторизоваться, чтобы получить доступ к тем или иным сведениям. Также ко второй группе относят коды, требующие обновления страницы, дополняющие параметры кэширования страниц и несколько других. При этом коды 2ХХ не означают ошибки.

Третья группа – это перенаправления или дополнительные действия, которые должны быть совершены пользователем, чтобы получить доступ к запрашиваемой информации. Не всегда это значит, что человек должен кликнуть по дополнительным ссылкам: очень часто перенаправления происходят автоматически. Например, код 304 применяется, когда пользователь запрашивает страницу, на которой не произошло абсолютно никаких изменений со времени ее последнего посещения пользователем. В этом случае на сервер вообще не поступает запроса и загружается версия страницы из кэша. Интересен код 300: он сообщает посетителю о переезде ресурса, но вместо автоматического перенаправления предлагает клиенту выбрать один из сайтов, который наиболее подходит его интересам.

Когда мы видим коды состояний

В описанных выше случаях коды состояния скрыты от пользователя. Если очень хочется их посмотреть, зажмите F12. Тогда справа на экране появится панель инструментов разработчика. Там перейдите на вкладку Network, и под графой Status вы увидите действующий код состояния ответа сервера. Однако трехзначные коды появляются на экране сами, когда происходит какой-либо сбой в обработке запроса. Эти сбои закодированы в четвертой и пятой группах ответов сервера.

Коды 4ХХ означают, что сервер не может обработать запрос по вине пользователя или отказа каких-либо систем со стороны пользователя. При переходе на сайт браузер может выдавать «400 Bad Request», то есть «Плохой запрос». Код используется, когда пользователь допустил настолько грубые ошибки при вводе адреса страницы, что система просто не может его распознать. Также может быть, что запрашиваемая страница переехала, но функция перенаправления не была использована. Кроме того, ошибка может возникать из-за блокировки браузера антивирусом, непостоянного соединения с Интернетом и по ряду других косвенных причин.

Самый часто встречающийся код группы – 404. Эта комбинация чисел снискала такую популярность, что датой празднования Дня Интернета выбрали 4 апреля (4.04). Код значит, что запрашиваемая пользователем информация не была найдена сервером. Почему? Файлы могли быть удалены владельцами, либо пользователь ввел неправильный адрес расположения файлов. Также часто появляется сообщение «Время ожидания сервером истекло» – это текстовая расшифровка кода 408. Он возникает, когда сервер «устал» ждать от пользователя запрос. Звучит странно, но объясняется легко: такое бывает, когда неожиданно появляются сбои в соединении с сетью и отправленные запросы не достигают цели. Кроме того, отправку могут задерживать вирусы или проблемы на сайте, с которого происходят запросы по гиперссылкам. Еще один код, 413, в текстовом варианте иногда выдают поисковые системы: «Длина запроса слишком велика». Это когда пользователь вбивает слишком много слов в строку поиска. В этом случае нужно просто сократить фразу. Всего в четвертой группе 35 кодов состояний запроса.

Пятая группа кодов означают ошибки самого сервера – пользователь и его устройство все сделали правильно. Таких кодов – десять. Одна из самых частых ошибок – это печально известные в народе «плохие ворота», Bad Gateway. Ошибка кодируются числом 502 и официально называется «неверный шлюз». Она возникает, когда сервер является лишь промежуточным звеном на пути к запрашиваемой информации, но проход через него невозможен. Почему? Причин может быть несколько: например, несогласованность протоколов работы или нехватка ресурсов сервера. В последнем случае у сервера не хватает мощностей, чтобы обрабатывать поступающие запросы. Также при ошибке 502 может помочь удаление файлов cookies в браузере.

Так как запросы на сервере обрабатываются в порядке очереди, при очень «тяжелых» запросах сервер также может «виснуть». Тогда появляется ошибка 503, что значит «сервис временно недоступен». В этом случае простому смертному остается только ждать разгрузки сервера и попробовать зайти на сайт попозже.

«Почти все коды имеют значение и для простого пользователя, если он хочет понять, почему у него возникают перебои с сетью и какие-либо ошибки. Но общеизвестен, боюсь, только 404, потому что он превратился в устойчивый мем. На самом деле, человек вообще не должен видеть каких-либо числовых сообщений об ошибке на своем экране. Просто существует ряд программистов, которым лень настроить человеческое сообщение об ошибке, и в результате выводятся их системное значение», – прокомментировал Сергей Клименков, ассистент кафедры вычислительной техники Университета ИТМО.