Telegram Web
Компилятор состоит из нескольких ключевых компонентов, каждый из которых выполняет свою функцию в процессе преобразования исходного кода в машинный код.

Лексический анализатор (лексер):
- Разбивает исходный код на токены (лексемы), такие как ключевые слова, идентификаторы, операторы и символы.
- Генерирует последовательность токенов для дальнейшего анализа.

Синтаксический анализатор (парсер):
- Организует токены в структуру данных, называемую синтаксическим деревом (или деревом разбора), согласно правилам грамматики языка.
- Проверяет, соответствует ли структура кода синтаксическим правилам языка.

Семантический анализатор:
Проверяет семантические ошибки, такие как типизация переменных, область видимости и правильность использования идентификаторов.
Построение абстрактного синтаксического дерева (AST) для дальнейшего анализа.

Промежуточное представление (IR):
- Преобразует исходный код в промежуточный формат, удобный для оптимизации и дальнейшего преобразования.
- Может быть абстрактным синтаксическим деревом или низкоуровневым промежуточным кодом.

Оптимизатор:
- Выполняет оптимизацию промежуточного кода для улучшения производительности и уменьшения размера программы.
- Оптимизации могут быть как на уровне исходного кода, так и на уровне промежуточного кода.

Генератор кода:
- Преобразует оптимизированное промежуточное представление в конечный машинный код или другой низкоуровневый код, который может быть выполнен процессором.
- Генерирует код для целевой архитектуры.

Сборщик (линкер):
- Объединяет объектные файлы и библиотеки в единый исполняемый файл.
- Разрешает ссылки между различными частями программы и библиотеками.

Символьная таблица:
- Хранит информацию о символах (переменных, функциях и т.д.) и их атрибутах.
- Используется для поддержки семантического анализа и генерации кода.
Хотя Perl в последние годы уступил популярность таким языкам, как Python и Ruby, он все еще остается важным инструментом в различных областях благодаря своей богатой функциональности и зрелой экосистеме.

Несколько основных областей, где Perl активно используется:

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

Системное администрирование:
- Автоматизация задач: Perl позволяет автоматизировать рутинные системные задачи, такие как управление файлами, обработка журналов и мониторинг систем.
- Управление конфигурациями: Скрипты на Perl могут быть использованы для управления конфигурационными файлами и настройками систем.

Веб-разработка:
- CGI-программирование: Perl был одним из первых языков, активно использующихся для создания CGI-скриптов, которые обрабатывают запросы на сервере и генерируют динамический контент для веб-страниц.
- Модульные веб-фреймворки: Фреймворк Dancer и Mojolicious обеспечивают современные инструменты для веб-разработки на Perl.

Базы данных:
- DBI (Database Interface): Модуль DBI позволяет Perl взаимодействовать с различными базами данных, обеспечивая универсальный интерфейс для работы с SQL-базами данных.
- ETL-процессы: Perl может использоваться для извлечения, трансформации и загрузки данных (ETL) между различными системами баз данных.

Научные вычисления и обработка данных:
- Анализ данных: Perl используется для написания скриптов, которые выполняют сложные вычисления и анализ данных.
- Bioinformatics: Perl активно используется в биоинформатике для анализа геномных данных и выполнения других сложных вычислительных задач.

Сетевые утилиты и протоколы:
- Сетевые скрипты: Perl может использоваться для создания утилит, которые работают с сетевыми протоколами, обрабатывают запросы и взаимодействуют с различными сетевыми сервисами.
- Мониторинг и управление сетями: Скрипты на Perl могут быть использованы для мониторинга сетевых ресурсов и управления сетевыми устройствами.

Безопасность и тестирование:
- Пентестинг и безопасность: Perl используется для написания скриптов, которые помогают в тестировании безопасности приложений и систем.
- Анализ уязвимостей: Perl может использоваться для разработки инструментов для анализа и оценки уязвимостей программного обеспечения.
Теория вероятностей
Занимается изучением случайных событий и их вероятностей.

Основные понятия включают:

Событие: исход, который может произойти в результате эксперимента.
Вероятность: числовая мера возможности наступления события, обычно от 0 до 1.
Случайная величина: величина, которая может принимать различные значения в зависимости от исхода случайного события.
Распределение вероятностей: функция, которая описывает, как вероятности распределены по возможным значениям случайной величины.
Матожидание: среднее значение случайной величины.
Дисперсия: мера разброса значений случайной величины.


Математическая статистика
Применяет методы теории вероятностей для анализа и интерпретации данных.

Основные понятия включают:

Выборка: подмножество данных, взятое из более широкой совокупности.
Оценка параметров: процесс определения параметров распределения на основе выборки.
Гипотезы: предположения о распределении данных, которые проверяются с помощью статистических тестов.
Тестирование гипотез: метод проверки предположений о параметрах распределения.
Регрессия: анализ зависимости одной переменной от другой.
x86

• Происхождение: Разработана Intel в конце 1970-х годов.
• Особенности:
- CISC (Complex Instruction Set Computing) архитектура, что означает наличие большого набора сложных инструкций.
- Широко используется в настольных компьютерах, ноутбуках и серверах.
- Обеспечивает высокую производительность и совместимость с большим количеством программного обеспечения.
• Производители: Intel, AMD.

ARM
• Происхождение: Разработана компанией ARM Holdings в 1980-х годах.
• Особенности:
- RISC (Reduced Instruction Set Computing) архитектура, что предполагает упрощенный набор инструкций для повышения эффективности.
- Энергоэффективность, что делает её популярной в мобильных устройствах, таких как смартфоны и планшеты.
- Лицензируется другим компаниям, что позволяет широкое разнообразие реализаций.
• Производители: Qualcomm, Apple, Samsung и другие.

RISC-V
• Происхождение: Разработана в Калифорнийском университете в Беркли в 2010-х годах.
• Особенности:
- Открытая и свободная RISC архитектура, что позволяет любому использовать и модифицировать её без лицензионных отчислений.
- Высокая гибкость и возможность настройки под конкретные задачи.
- Быстро набирает популярность в научных и промышленных кругах благодаря своей открытости.
• Производители: SiFive, Western Digital и другие.
Помимо x86, ARM и RISC-V, существуют и другие архитектуры процессоров, каждая из которых имеет свои особенности и области применения:

MIPS
• Происхождение: Разработана в 1980-х годах в Стэнфордском университете.
• Особенности:
- RISC-архитектура.
- Используется в встраиваемых системах и сетевом оборудовании.
• Применение: Роутеры, игровые консоли.

PowerPC
• Происхождение: Разработана совместно IBM, Apple и Motorola в 1990-х годах.
• Особенности:
- RISC-архитектура.
- Использовалась в компьютерах Apple до перехода на Intel.
• Применение: Серверы, встраиваемые системы.

SPARC
• Происхождение: Разработана Sun Microsystems в 1980-х годах.
• Особенности:
- RISC-архитектура.
- Используется в серверах и высокопроизводительных вычислениях.
• Применение: Серверы, рабочие станции.

Itanium
• Происхождение: Разработана Intel и Hewlett-Packard.
• Особенности:
- Архитектура IA-64.
- Предназначена для серверов и рабочих станций.
• Применение: Высокопроизводительные серверы (хотя сейчас менее популярна).

Z/Architecture
• Происхождение: Разработана IBM.
• Особенности:
- Используется в мейнфреймах.
- Поддерживает высокую надежность и масштабируемость.
• Применение: Банковские системы, крупные корпоративные сети.
RAID-массив

RAID (Redundant Array of Independent Disks) — технология виртуализации данных, которая объединяет несколько дисков в логический элемент для повышения производительности. Соответственно, минимальное количество требуемых дисков — 2.

Есть несколько видов RAID-массива:
RAID 0 — принцип работы - чередование. Массив при котором информация разбивается на одинаковые по длине блоки, а затем записывается поочерёдно на каждый диск в структуре (фактическое увеличение производительности в 2 раза)

RAID 1 — принцип работы — «зеркалирование». Представляет собой параллельную запись информации с основного диска на другие — дублирующие. 

RAID 10 (1+0) — совмещает в себе всё самое лучшее из RAID 1 и RAID 0

RAID 5 — схож по своему принципу работы с RAID 1. Только тут потребуется минимум 3 накопителя, на одном из которых будет храниться продублированная информация
QR-код представляет собой двухмерный матричный штрих-код, состоящий из черных и белых квадратных модулей, размещенных на белом фоне. Он содержит информацию в виде набора байтов, которая может быть расшифрована специальным сканером или мобильным устройством.

QR-код состоит из следующих элементов:

Поисковая позиция (англ. Finder pattern) - три квадрата в углах QR-кода, служат для автоматической коррекции, поиска и выравнивания кода.

Калибровочные полосы (англ. Alignment pattern) - несколько квадратов, расположенных на определенном расстоянии друг от друга внутри QR-кода, необходимы для расчета размеров и положения символов.

Синхронизационные строки (англ. Timing pattern) - вертикальные и горизонтальные полосы, определяющие размер и форму кода.

Данные - байты информации, которую необходимо закодировать в QR-коде, которые представлены в бинарном или текстовом формате.

Информационные области - области, заполняемые модулями, отображающими данные.

Коррекционные биты - блоки данных, используемые для коррекции ошибок, которые возникают при считывании QR-кода.

QR-код может содержать различные типы информации, включая текст, URL-адреса, контактные данные, номера телефонов и прочее. Количество информации, которое может быть закодировано в QR-коде, зависит от его размера и уровня коррекции ошибок.
Стандарты Wi-Fi представляют собой серию протоколов для беспроводных сетей, утвержденных Институтом инженеров по электротехнике и электронике (IEEE). Разные стандарты предлагают различные характеристики, включая скорость передачи данных, дальность обнаружения и проникновения сигнала, уровень безопасности и т. д. Вот некоторые из основных стандартов Wi-Fi:

802.11b (Wi-Fi 1): Это был первый стандарт Wi-Fi, который стал широко доступным для общественности. Он предлагает скорости передачи данных до 11 Мбит/с и работает на частоте 2,4 ГГц.

802.11a (Wi-Fi 2): Этот стандарт использует частоту 5 ГГц для передачи данных и предлагает скорости до 54 Мбит/с, но при этом он несколько уступает 802.11b в дальности действия.

802.11g (Wi-Fi 3): Сочетает в себе лучшие стороны 802.11a и b, предлагая скорости до 54 Мбит/с на частоте 2,4 ГГц.

802.11n (Wi-Fi 4): Также известен как "Wi-Fi N", этот стандарт значительно увеличивает скорость передачи данных до максимальных 600 Мбит/с при правильной конфигурации. Он работает как на 2,4 ГГц, так и на 5 ГГц.

802.11ac (Wi-Fi 5): Предлагает скорости передачи данных до 1 Гбит/с на частоте 5 ГГц. Это быстрая, эффективная и широко принятая технология Wi-Fi.

802.11ax (Wi-Fi 6): Этот стандарт предназначен для улучшения производительности в плотных средах, таких как аэропорты и стадионы. Wi-Fi 6 можем обеспечить скорости передачи данных до 10 Гбит/с и выше.
Топологии сетей на реальных примерах

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

2. Кольцевая топология - узлы сети соединены в кольцо, где данные передаются последовательно через каждое устройство. Примером может быть локальная сеть на базе технологии Token Ring.

3. Шина - это тип топологии, где все узлы сети подключены к одной основной кабельной линии. Примером может быть Ethernet сеть, где все компьютеры подключены к одному коммутатору через один кабель.

4. Древовидная топология - узлы сети организованы в иерархию, где некоторые узлы являются подчиненными другим. Примером может быть корпоративная сеть, где филиалы компании подключены к центральному офису.

5. Сеть с полной (полукольцевой) связностью - это тип топологии, где каждый узел сети имеет прямое подключение ко всем остальным узлам. Примером может быть машинный парк, где все компьютеры между собой связаны.

Сеть смешанной топологии - это тип топологии, который комбинирует два или более различных типа топологий. Примером может быть сеть компании, где отделы связаны по принципу шины или звезды, а филиалы - по принципу древовидной топологии.
Наиболее распространенные типы баз данных:

1. Реляционные базы данных:
это самый распространенный тип баз данных, основанный на модели реляционной алгебры. Данные организованы в виде таблиц с рядами и столбцами, а связи между таблицами задаются с использованием ключевых полей.

2. Иерархические базы данных: данные в таких базах организованы в виде древовидной структуры, где каждая запись имеет только одного родителя и может иметь несколько дочерних элементов.

3. Сетевые базы данных: данные в них организованы в виде графа, где каждая запись может иметь несколько родителей и дочерних элементов.

4. Объектно-ориентированные базы данных: позволяют хранить объекты и их свойства, а также взаимосвязи и наследование между объектами.

5. XML базы данных: хранят данные в формате XML, что упрощает работу с структурированными данными.

6. NoSQL базы данных: этот тип баз данных не использует классическую модель таблиц и SQL для работы с данными. Вместо этого, данные хранятся в гибких и масштабируемых структурах. Некоторые подтипы NoSQL баз данных включают документоориентированные, столбцовые, графовые и ключ-значение базы данных.

7. Распределенные базы данных: данные в таких базах разделены на несколько физических узлов или серверов, что позволяет распределить нагрузку и обеспечить высокую доступность.

8. Ин-мемори базы данных: данные хранятся и обрабатываются в оперативной памяти компьютера, что позволяет получить высокую скорость доступа и обработки данных.
Несколько примеров, где какие структуры данных могут быть использованы:

Веб-разработка: Списки и массивы используются для хранения и управления данными на веб-страницах, таких как списки пользователей или элементы меню. Хеш-таблицы могут использоваться для быстрого поиска элементов на веб-страницах или для хранения пар "ключ-значение" для авторизации пользователей.

Машинное обучение и анализ данных: Массивы могут использоваться для хранения данных в матрицах и векторах, которые используются в алгоритмах машинного обучения и анализа данных. Очереди или стеки могут использоваться при обработке данных или при выполнении алгоритмов в определенном порядке.

Базы данных: Хранение данных в базах данных обычно осуществляется с использованием B-деревьев или хеш-таблиц для быстрого доступа к данным через ключи. Списки записей могут использоваться для хранения связанных данных.

Игровая разработка: Массивы используются для хранения информации о игровых объектах, таких как игровые поля или карты. Очереди могут использоваться для управления порядком игровых событий.

Системное программирование: Очереди могут использоваться для управления запросами на обработку или для управления потоками выполнения. Стеки могут использоваться для хранения адресов возврата при выполнении функций.
Реактивное программирование — способ написания программ, который фокусируется на потоках данных и автоматическом обновлении программы при изменении этих данных. Вместо того чтобы программист должен был вручную отслеживать и обновлять данные, реактивная система сама следит за данными и распространяет изменения там, где это необходимо.

Основные идеи на примере:

Observables: Представьте, что у вас есть источник данных, например, лента новостей в социальной сети. В реактивном программировании этот источник данных — это наблюдаемый, то есть поток, который может эмитировать (отправлять) новые данные (например, новые посты).

Subscribers: Представьте, что вы — подписчик этой ленты новостей. Когда вы подписываетесь на наблюдаемый, вы получаете обновления каждый раз, когда появляется новый пост. Ваш телефон автоматически отображает новые новости, как только они появляются.

Operators: Допустим, вы хотите видеть только новости от ваших друзей. В реактивном программировании вы можете использовать операторы для фильтрации потока данных, чтобы получать только нужные вам сообщения.

Change Propagation: Когда в социальной сети публикуется новый пост, система автоматически уведомляет всех подписчиков, и каждый получает обновление в реальном времени.

Non-blocking: Если вы ждете новые новости, вы не хотите, чтобы ваше приложение зависало и блокировало другие действия. Реактивные приложения обрабатывают данные асинхронно, что означает, что они не блокируют выполнение других задач.

Error Handling: Если что-то идет не так (например, проблемы с сетью), реактивная система может корректно обработать эту ошибку и сообщить вам о ней, не прерывая работы приложения.

Backpressure: Если новости появляются слишком быстро, и система не успевает их обрабатывать, механизм backpressure помогает управлять потоком данных, чтобы не потерять ни одного поста и не перегрузить систему.

Hot and Cold Observables: "Холодные" наблюдаемые начинают работать только тогда, когда кто-то подписывается на них. "Горячие" наблюдаемые вещают данные всем подписчикам, независимо от того, подписаны они сейчас или нет.

Сcheduler (Планировщик): Это как расписание для реактивной системы, которое определяет, когда и как часто система должна проверять данные и отправлять обновления.

Примеры библиотек и фреймворков, поддерживающих реактивное программирование:

• ReactiveX (Reactive Extensions): Набор библиотек для реактивного программирования, включающий RxJava, RxJS, RxSwift и другие.
• RxJava: Библиотека для реактивного программирования на Java, позволяющая работать с асинхронными потоками данных.
• RxJS: Версия ReactiveX для JavaScript, часто используется в сочетании с Angular и другими фронтенд-фреймворками.
• Project Reactor: Реализация реактивного программирования для Java, полностью поддерживающая новый стандарт потоков в Java 9 и выше.
• Kotlin Flow: Встроенная в Kotlin поддержка реактивного программирования, предназначенная для работы с асинхронными потоками данных в Kotlin.
Архитектуры ОС реального времени

В своем развитии ОСРВ строились на основе следующих архитектур:

1) Монолитная архитектура.
ОС определяется как набор модулей, взаимодействующих между собой внутри ядра системы и предоставляющих прикладному ПО входные интерфейсы для обращений к аппаратуре. Основной недостаток этого принципа построения ОС заключается в плохой предсказуемости её поведения, вызванной сложным взаимодействием модулей между собой.

2) Уровневая архитектура.
Прикладное ПО имеет возможность получить доступ к аппаратуре не только через ядро системы и её сервисы, но и напрямую.
По сравнению с монолитной такая архитектура обеспечивает значительно большую степень предсказуемости реакций системы, а также позволяет осуществлять быстрый доступ прикладных приложений к аппаратуре. Главным недостатком таких систем является отсутствие многозадачности.

3) Архитектура «клиент-сервер».
Основной принцип заключается в вынесении сервисов ОС в виде серверов на уровень пользователя и выполнении микроядром функций диспетчера сообщений между клиентскими пользовательскими программами и серверами — системными сервисами.
Векторная графика — это формат представления и создания изображений в компьютерной графике. В отличие от растровой графики, которая состоит из пикселей, векторная графика описывает изображение с помощью математических объектов, таких как линии, кривые, многоугольники и текстовые символы.

Основными преимуществами векторной графики являются:

Масштабируемость: Векторные изображения могут быть масштабированы без потери качества и деталей. Это позволяет использовать их как на небольших электронных устройствах, так и на больших печатных материалах, таких как вывески или билборды.

Редактируемость: Векторные изображения легко редактируются. Вы можете изменять цвета, формы, размер и другие атрибуты объектов в изображении без потери качества.

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

Более точное представление: Векторные графики обеспечивают более точное и точное представление форм и линий, чем растровые изображения.

Поддержка прозрачности: Векторные файлы могут содержать прозрачные области, что делает их удобными для создания комплексных изображений с непрямоугольными формами.

Примеры программ, позволяющих создавать и редактировать векторную графику, включают Adobe Illustrator, CorelDRAW, Inkscape, Sketch и Affinity Designer.
RFID (Radio-Frequency Identification) - это технология, которая позволяет беспроводно идентифицировать и отслеживать объекты с помощью радиочастотных сигналов. RFID-метки состоят из маленького микрочипа и антенны, которая обеспечивает коммуникацию с RFID-считывателем.

Основная идея работы RFID-системы заключается в том, что RFID-метки могут передавать информацию, когда они находятся в поле действия радиочастотных сигналов, создаваемых RFID-считывателем.

Процесс работы RFID-системы можно разделить на несколько этапов:

- Инициация: RFID-считыватель генерирует радиочастотный сигнал, создавая электромагнитное поле в определенной области.
- Детектирование: Когда RFID-метка находится в поле действия считывателя, электромагнитное поле индуцирует электромагнитный ток в антенне метки. Этот ток питает микрочип в метке, активируя его.
- Коммуникация: Активированный микрочип в RFID-метке начинает передавать данные об объекте или товаре через антенну, используя радиочастотные волны. Эта информация может быть уникальным идентификатором метки, серийным номером или другой полезной информацией.
- Считывание: Антенна RFID-считывателя принимает радиочастотные сигналы от метки, которые затем передаются считывателю для обработки.
- Обработка данных: RFID-считыватель декодирует полученные данные и передает их на дальнейшую обработку или хранение. В зависимости от конкретной системы меток и приложения, считыватель может также записывать данные на метку.

RFID-метки могут быть активными (с собственным источником питания и более высоким радиусом действия) или пассивными (питаются от энергии, передаваемой от считывателя), а также иметь различные рабочие частоты в зависимости от региональных стандартов и требований применения.

RFID-технология широко используется в различных сферах, включая логистику, инвентаризацию, управление запасами, контроль доступа и другие области, где требуется автоматизированная идентификация и отслеживание объектов.
Профилирование в computer science

Профилирование - метод исследования, анализа программного кода и производительности приложения. Оно используется для выявления узких мест и оптимизации производительности приложений.

Может быть проведено на уровне процессора, операционной системы или приложения.

1) На уровне процессора - анализ инструкций процессора для выявления узких мест.

2) На уровне операционной системы - анализ системных вызовов, используемых приложением.

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

Python: Python имеет большое количество библиотек и фреймворков, таких как NumPy, Pandas, Django и Flask. Официальный репозиторий пакетов Python - PyPI (Python Package Index) содержит более 300 000 пакетов.

JavaScript: JavaScript также имеет огромную экосистему библиотек и фреймворков. Некоторые из них включают React, Angular, Vue.js, jQuery и Node.js. Официальный репозиторий пакетов JavaScript - npm (Node Package Manager) содержит более 1 миллиона пакетов.

Java: В языке программирования Java существует множество библиотек и фреймворков, включая Spring, Hibernate, Apache Commons и Guava. В Maven Central Repository, одном из наиболее популярных репозиториев Java, доступно более 500 000 артефактов.

C#: C# имеет ряд популярных библиотек и фреймворков, таких как .NET Core, ASP.NET, Entity Framework и Xamarin. Однако точное количество библиотек и фреймворков для C# неизвестно. (может плохо искал).

Ruby: Ruby также имеет большое количество библиотек и фреймворков, таких как Ruby on Rails, Sinatra и RSpec. Официальный репозиторий пакетов Ruby - RubyGems содержит более 180 000 пакетов.
Протокол TCP

Используется для обеспечения надёжной доставки данных на транспортном уровне. Его две основные задачи: сегментация данных и адресация приложений

Но помимо этого протокол обеспечивает:
 ⁃ Надёжную доставку сегментов
Каждый сегмент маркируется при помощи порядкового номера. После отправки пакетов, протокол ожидает подтверждения от получателя, где находится порядковый номер следующего сегмента. В случае, если такое подтверждение не получено, отправка автоматически повторяется. После некоторого количества неудачных попыток, TCP считает, что адресат не доступен, и сессия разрывается.

 ⁃ Упорядочивание сегментов при получении
Иногда получатель может получить сегменты не в том порядке, в котором они отправлялись.В этом случае, TCP автоматически пересоберёт их в нужном порядке, используя всё то же поле порядковых номеров, и передаст после склейки на уровень приложений.

 ⁃ Работу с сессиями
Перед началом передачи пакетов, когда TCP убеждается в том, что получатель существует и готов принимать данные, тогда открывается сессия. После передачи пакетов, сессия закрывается.

 ⁃ Контроль за скоростью передачи
Благодаря механизму скользящего окна, TCP может корректировать скорость отправки пакетов в зависимости от возможностей получателя.
Протокол UDP

Один из основных протоколов, расположенных непосредственно над IP.Он предоставляет прикладным процессам транспортные услуги, немногим отличающиеся от услуг протокола IP.

Протокол UDP обеспечивает доставку дейтограмм, но не требует подтверждения их получения. Он не требует соединения с удаленным модулем UDP.

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

Таким образом, если на уровне IP для определения места доставки пакета используется адрес, на уровне UDP - номер порта.
Обзор протокола HTTP

Изначально протокол передачи HTML-документов. Сейчас же он используется для передачи произвольных данных в интернете. Он является протоколом клиент-серверного взаимодействия без сохранения промежуточного состояния. В роли клиента чаще всего выступает веб-браузер, хотя может быть и, например, поисковый робот. Для обмена информацией протокол HTTP в большинстве случаев использует TCP/IP.

HTTP имеет расширение HTTPS, которое поддерживает шифрование. Данные в нём передаются поверх криптографического протокола TLS.

HTTP, как правило, прост и удобен для восприятия человеком. HTTP-сообщения могут читаться и пониматься людьми, обеспечивая более лёгкое тестирование разработчиков и уменьшенную сложность для новых пользователей.
2025/07/09 18:54:43
Back to Top
HTML Embed Code: