Уроки информатики для специалистов по анализу данных: как работает Интернет.
В этой статье фундаментальные концепции информатики, касающиеся веб-технологий, переводятся в практические ментальные модели, которые помогут вам создавать более надежные и эффективные конвейеры обработки данных.
Пытаетесь отладить неработающий вызов API, недоумеваете по поводу медленной передачи данных из облачного хранилища или пытаетесь разобраться в структуре веб-сайта для сбора данных? Эти распространенные проблемы в области анализа данных часто возникают из-за пробелов в понимании фундаментальных механизмов работы интернета. Хотя эти темы могут показаться прерогативой веб-разработчиков, базовое понимание того, как данные перемещаются из точки А в точку Б, является мощным инструментом для любого специалиста по работе с данными. Чтобы развить это понимание, в данной статье обобщены основные сетевые концепции из лекции CS50x 2025 Гарвардского университета по веб-программированию.

1. Интернет — это не прямая линия.
Когда ваш код запрашивает данные с удалённого сервера, легко представить, что информация передаётся по прямой линии. В реальности всё гораздо сложнее. Интернет — это обширная сеть взаимосвязанных компьютеров, или «маршрутизаторов», единственная цель которых — передавать информацию.
Представьте свой запрос данных как «виртуальный конверт». Ваш компьютер передает его ближайшему маршрутизатору, который затем решает, какому маршрутизатору передать его дальше. Этот процесс повторяется, и конверт «перескакивает» между серверами, пока не достигнет пункта назначения. Выбранный путь не обязательно является кратчайшим географическим расстоянием. Маршрутизаторы используют программное обеспечение для оптимизации маршрута по скорости, нагрузке на сервер и даже по финансовым причинам, например, чтобы удерживать трафик в сети конкретного провайдера во избежание комиссий. Если передача данных занимает более 30 таких переходов, она, вероятно, застряла в цикле.
Связь с наукой о данных: Для специалиста по анализу данных эта концепция предоставляет мощную ментальную модель для оценки задержки в сети. Когда вы извлекаете данные из облачного сервиса, такого как AWS S3, или запрашиваете данные из удаленной базы данных, время, необходимое для «передачи» данных через интернет, является реальным фактором, влияющим на производительность вашего конвейера обработки данных. Это не абстрактное понятие; это физическая реальность, которая может вызывать задержки, которые необходимо учитывать.
2. Ваши данные разрезаны и собраны заново.
Один большой файл, например, изображение высокого разрешения или многогигабайтный набор данных, не передается через интернет целиком. Базовый протокол интернета, TCP/IP, разбивает большие фрагменты информации на более мелкие части. Как показано в лекции CS50, изображение «счастливого кота» метафорически разрывается на четыре части.
Каждый фрагмент помещается в свою собственную виртуальную оболочку, называемую пакетом. Чтобы получатель мог правильно собрать фрагменты обратно, протокол управления передачей (TCP) добавляет к каждому пакету порядковый номер (например, «1 из 4», «2 из 4», «3 из 4»). Это позволяет принимающему компьютеру собрать фрагменты в правильном порядке и, что крайне важно, обнаружить, если какие-либо пакеты были потеряны по пути.
Связь с наукой о данных: Надежность TCP/IP позволяет концепциям высокоуровневой обработки данных, таким как разбиение на части и распределенная обработка, работать без сбоев. Когда вы обрабатываете большие файлы пакетами или используете фреймворк, например MapReduce, для разбиения большой задачи на более мелкие части, вы работаете на более высоком уровне абстракции, но основной принцип остается тем же. Гарантия целостности данных, обеспечиваемая этим протоколом, является ключевым моментом для любого конвейера обработки данных.
3. Один сервер, множество функций: роль портов
IP-адрес направляет ваш пакет данных на нужный компьютер, но он не указывает, какое именно приложение на этом компьютере должно его получить. На одном сервере одновременно могут работать веб-сервер, почтовый сервер и сервер баз данных. Вот тут-то и пригодятся порты.
Порт — это уникальный числовой идентификатор конкретной службы, работающей на сервере. Со временем был установлен набор стандартных портов: порт 80 обычно используется для стандартного веб-трафика (HTTP), порт 443 — для защищенного веб-трафика (HTTPS), а порт 25 — для электронной почты. Порты позволяют одному серверу с одним IP-адресом «мультиплексировать» свои службы, гарантируя, что запрос веб-страницы будет направлен на веб-сервер, а не на почтовый сервер. Таким образом, IP-адрес направляет пакет на нужную машину, а номер порта — на нужное приложение на этой машине — двухуровневая система адресации, необходимая для современной многозадачной сети Интернет.
Связь с наукой о данных: Это сразу же становится практически применимым в нашей повседневной работе. При подключении к базе данных PostgreSQL используется стандартный протокол. :5432 you append to the IP address is precisely this concept in action, directing your request to the database application. When you deploy a model via an API or run a Jupyter server on your local machine, you are using ports (like localhost:8888) to expose that specific service to network requests.
4. DNS: Гигантский кэшированный словарь Интернета
Люди не просматривают веб-страницы, набирая последовательности чисел, например... 142.250.191.78. We use human-friendly domain names like google.com. The system that translates these names into machine-readable IP addresses is the Domain Name System (DNS).
Функционально DNS представляет собой масштабную распределенную реализацию абстрактного типа данных «словарь». Он связывает ключи (доменные имена) со значениями (IP-адреса). Для обработки огромных масштабов интернета и обеспечения быстрой реакции DNS является иерархической системой и в значительной степени полагается на кэширование. Ваш компьютер, ваша локальная сеть и ваш интернет-провайдер (ISP) кэшируют последние запросы DNS, чтобы им не приходилось снова и снова обращаться к корневым серверам за одним и тем же адресом.
Связь с наукой о данных: Этот принцип крупномасштабного распределенного кэширования является фундаментальным шаблоном, который мы постоянно используем в науке о данных. Он служит мощной аналогией из реальной жизни для таких методов, как мемоизация в функции Python, кэширование результатов медленного запроса к базе данных или хранение промежуточных фреймов данных на диске. DNS — это пример распределенного кэша типа «ключ-значение» планетарного масштаба, который делает современный веб пригодным для использования.
5. Коды состояния HTTP: ваш компас отладки
Когда ваш браузер (клиент) запрашивает страницу у сервера, ответ сервера начинается с трехзначного HTTP-кода состояния. Этот код дает краткое представление о том, был ли запрос успешным или произошла какая-либо ошибка.
Коды сгруппированы по категориям:
- 200 с (
200 OK): Запрос был успешным. - 300 с (
301 Moved Permanently): Вас перенаправили. В лекции приводится пример:safetyschool.orgwhich returns a301code to redirect the browser to Yale’s website. - 400 с (
404 Not Found): Произошла ошибка на стороне клиента. Это означает, что ошибка на вашей стороне — вы запросили ресурс, которого не существует, или у вас нет разрешения на доступ к нему. - 500 с (
500 Internal Server Error): Произошла ошибка на стороне сервера. Сервер столкнулся с проблемой при попытке выполнить ваш действительный запрос.
Связь с наукой о данных: Для всех, кто работает с API или занимается веб-скрейпингом, понимание этих кодов — это разница между расплывчатой ошибкой «запрос не удался» и полезной диагностической информацией. 404 error tells you to check your URL endpoint, while a 403 Forbidden error tells you to check your API key. A 500 error means the problem is likely with the service itself.
«…всякий раз, когда вы видите ошибку 500, это также ваша вина, поэтому в их случае вы являетесь и пользователем, и сервером…» — Harvard CS50x 2025 (YouTube) — Лекция: HTML, CSS, JavaScript
6. HTML предназначен для структуры, а не для стиля.
Язык разметки гипертекста (HTML) — это стандартный язык для создания веб-страниц. Это язык разметки, а не язык программирования; его цель — описывать и структурировать контент, а не выполнять логику. В HTML используются «теги» (например, <p> for a paragraph or <div> for a division) and “attributes” (like class или id) to define elements.
Когда браузер получает HTML-файл, он анализирует текст и строит в памяти древовидную структуру данных, называемую объектной моделью документа (DOM). Это дерево представляет структуру страницы. Современный HTML делает акцент на использовании семантических тегов, таких как <header>, <main>и библиотеки <footer>. These tags don’t just create boxes on a page; they give meaning to the structure, helping search engines, accessibility tools, and AI models understand the relative importance of different content sections.
Связь с наукой о данных: В науке о данных глубокое понимание DOM является абсолютной основой веб-скрейпинга. Чтобы извлечь определенный фрагмент данных со страницы, скрейпер должен перемещаться по этому дереву DOM, выбирая элементы по их тегам, классам или идентификаторам. Этот принцип «разделения задач» — использование HTML для структуры и отдельного языка (CSS) для стилизации — имеет сильную параллель с принципом «упорядоченных данных», где логическая структура набора данных должна быть независима от его окончательного представления.
Что подать заявку сегодня
- Если вызов API завершается неудачей, проверьте код состояния HTTP (например, 404 или 500), чтобы определить, произошла ли ошибка на вашей стороне или на стороне сервера.
- Воспользуйтесь «Инструментами разработчика» в вашем браузере (щелкните правой кнопкой мыши -> Проверить), чтобы открыть вкладку «Сеть» и увидеть фактические запросы и ответы, которые отправляет ваш браузер.
- Перед тем как начать парсинг сайта, изучите его HTML-структуру, чтобы определить конкретные теги, классы или идентификаторы, содержащие необходимые вам данные.
- При подключении к базе данных или API обратите внимание на номер порта и убедитесь, что он направляет ваш запрос к нужному приложению на сервере.
- В следующий раз, когда вы столкнетесь с задержкой в передаче данных, подумайте о кэшировании DNS; медленный поиск или устаревший кэш могут быть причиной.
Закрытие
Эти концепции — не просто академические детали для разработчиков. От физической маршрутизации пакетов (TCP/IP) до логической адресации сервисов (DNS, порты) и языка запросов (HTTP) — эти многоуровневые протоколы формируют невидимую систему, от которой зависят наши конвейеры обработки данных. Понимание как данные перемещаются и структурируются, обеспечивает более интуитивное понимание узких мест производительности, диагностики ошибок и извлечения данных. Следующий шаг в серии лекций — создание динамического веб-контента с помощью JavaScript, движка, лежащего в основе интерактивной визуализации данных, которую мы используем каждый день.
Как более глубокое понимание этих протоколов может изменить подход к разработке вашего следующего сценария сбора данных?
Base: Harvard CS50x 2025 (YouTube).

