Может ли поставщик услуг Интернета выборочно блокировать.png, .jpg, .js, .css и другие с внутреннего HTTP-сервера?

Это вопрос специалиста, так как он касается очень маленького встроенного веб-сервера в отличие от обычного веб-сервера (например, Apache, IIS) и больше связан с маршрутизацией через ISP.

Я программист, отвечающий за реализацию встроенного веб-сервера внутри аппаратного продукта. Это в основном потребительское устройство, которое находится в помещении клиента. Заказчик может дополнительно использовать внутренний веб-сервер для выполнения настройки, и, очевидно, он может перенести порт через свой маршрутизатор, если он хочет, чтобы он мог получить к нему доступ через Интернет.

Я пытаюсь исследовать странную ситуацию, когда устройство, установленное в определенном помещении, отвечает на запросы .htm а также .cgi файлы абсолютно нормально, и он также ответит 404 как это должно быть при запросе несуществующего файла. Тем не менее, если .png, .jpg, .css, или же .js (и, без сомнения, многие другие) запрашивается, то что происходит, HTTP-запрос зависает на неопределенное время и в конечном итоге истекает. На этом этапе браузер просто отображает то, что он смог загрузить после этого времени, что обычно представляет собой просто необработанный HTML без каких-либо ресурсов изображений, стилей или скриптов. (Я вижу все это, используя вкладку "net" в Firebug.)

Все, что я знаю об устройстве в помещении, - это то, что оно находится в доме, который, очевидно, использует интернет-провайдера Virgin Media, за довольно стандартным бытовым модемом / маршрутизатором. К сожалению, я не могу узнать больше, чем это в данный момент, и я не могу физически добраться до него сам.

HTTP-сервер в настоящее время настроен на порт 80.

Установщик информирует меня, что доступ к HTTP-серверу абсолютно нормальный, если к нему обращаются локально; то есть все изображения и пр. загружаются без проблем. Более того, я никогда раньше не сталкивался с подобной проблемой с этим продуктом. Еще более странным является тот факт, что предыдущий наш продукт, установленный там, имел почти такой же веб-сервер внутри - и вообще не имел этой проблемы. Так что я понятия не имею, может ли это быть совпадением или нет.

Есть ли какая-либо возможность, что провайдер мог бы применить фильтрацию или каким-то другим образом возиться с входящими HTTP-запросами? На данный момент это единственная соломинка, за которую я цепляюсь.

Используемый веб-сервер - это HTTP-сервер, который поставляется как часть библиотеки Keil MDK-ARM. Продукт представляет собой небольшую часть нестандартного оборудования с процессором ARM, на котором установлена ​​облегченная ОСРВ Keil, которая также является частью MDK-ARM. Я не верю, что есть что-то важное, что я могу сказать о действительной функции коробки.

РЕДАКТИРОВАТЬ: Дополнительная подсказка Wireshark

Я брал журналы Wireshark, когда пытался просто напрямую запросить "проблемный" тип файла, например, один из .css или же .js файлы. То, что я нашел, это:

Вместо того чтобы видеть поток из одного или нескольких TCP-пакетов, которые вместе образуют действительный HTTP-ответ, помимо обычных ACK-пакетов, я вместо этого вижу только один TCP-пакет, содержащий то, что считается частью HTTP-ответа. Wireshark помечает этот пакет как "Продолжение или не HTTP-трафик [искаженный пакет]", потому что из-за отсутствия заголовка HTTP в пакете он не может сказать, что это.

При дальнейшей проверке я понимаю, что эти единичные "искаженные" пакеты, которые я получаю всякий раз, когда запрашиваю проблемный тип файла, на самом деле содержат полезную нагрузку всего в четыре байта фактического запрашиваемого файла HTTP. Например, четырехбайтовая полезная нагрузка пакета может быть ID=b, что соответствует ID=blahblah в начале .js файл, который я просил. (Я сделал этот конкретный пример, но это последовательное поведение, которое я вижу при запросе .css а также .js файлы).

Итак, короче говоря, для получения полного HTTP-ответа в одном или нескольких TCP-пакетах, включая HTTP-заголовок, вместо этого я просто возвращаю один пакет с полезной нагрузкой всего четыре байта, которые, как я знаю, являются четырьмя байтами исходный файл запрашивается.

Редактировать 2: В дополнение к вышесказанному, я понял, что любое изображение, которое является очень маленьким с точки зрения байтов (скажем, менее 1 КБ), успешно возвращается. Это почти так, как будто все в порядке, если ответ уместится в один пакет TCP. Больше, чем это, и странная проблема, описанная выше, случается. Но для.htm или.cgi ответ может быть настолько большим, насколько ему нравится, и он работает.

1 ответ

Да, это возможно, но вряд ли они делают это таким образом.

(Убедитесь, что больше ничего не заблокировано, прежде чем звонить провайдеру. Возможно, это также неверный MIME-тип ресурса, который имеет что-то между вашим сервером и клиентом (или даже последним), подавленным этим).

Другие вопросы по тегам