По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Ошибочно можно подумать, что на вопрос «Какой язык программирования самый быстрый?» можно легко ответить. На самом же деле, когда речь идет о скорости и о программировании, то здесь возникает множество технических нюансов. Для начала определим - быстрее не значит лучше, это зависит от варианта использования. (Но мы к этому еще вернемся.) Здесь мы подробно рассмотрим, что делает язык программирования «быстрым», почему это так важно и как вы можете начать изучать некоторые из самых быстрых языков программирования. Что делает язык программирования быстрым? Ключевая особенность языка программирования, которая определяет его скорость, заключается в том, компилируемый он или интерпретируемый. Компилируемые языки, такие как Lisp, C++, Go, Rust и Swift, должны быть преобразованы в машинный код (см. ассемблер ниже), который уже непосредственно взаимодействует с аппаратной составляющей. Интерпретируемые языки, такие как Python, JavaScript, Ruby и PHP, работают путем преобразования исходного кода в машинный код налету. Поскольку этот процесс преобразования происходит непосредственно во время выполнения кода и увеличивает нагрузку, то можно сделать вывод, что интерпретируемые языки работают медленнее, чем компилируемые. Есть несколько других факторов, определяющих скорость языка. Возьмите, например, Java и C#. Эти языки являются и компилируемыми, и интерпретируемыми. Однако вместо компиляции в код на языке ассемблера они компилируются в байт-код. Скомпилированный байт-код интерпретируется для запуска на виртуальной машине, оптимизированной для прямого взаимодействия с аппаратной составляющей. Байт-код – это своего рода язык ассемблера для виртуальной машины. Такой процесс делает эти языки более быстрыми, чем, например, JavaScript, который преобразует текстовый исходный код непосредственно в машинный. Другой фактор – это статическая или динамическая типизация. Языки со статической типизацией определяют типы всех переменных при компиляции языка, а языки с динамической типизацией проверяют тип переменных во время выполнения кода. Эта проверка типов в режиме реального времени несет за собой некоторые затраты вычислительных ресурсов, что делает языки с динамической типизацией медленнее, чем языки со статической типизацией. Какие языки программирования самые быстрые? Самый быстрый язык программирования должен напрямую взаимодействовать с машиной. Давайте рассмотрим некоторые из самых быстрых языков, с которыми вы можете столкнуться, а также посмотрим для чего они используются. Assembly (ассемблер) На самом деле язык ассемблера не является каким-то одним конкретным языком. Это просто название, которое дают любому низкоуровневому языку программирования, который напрямую взаимодействует с аппаратным обеспечением компьютера. Это означает, что ассемблер для вашего ноутбука будет отличаться от ассемблера для вашего мобильного телефона, поскольку у них разные процессоры, требующие разных инструкций. Обычно ассемблер используют только разработчики, которые работают непосредственно с аппаратной составляющей или которые создают языки программирования. Lisp Lisp – это один из первых языков программирования. Ему уже более 60 лет. Было множество разновидностей этого языка, и многие другие языки программирования использовали некоторый набор функциональных возможностей, характерный для Lisp. Clojure, например, - это современный диалект Lisp, реализованный для виртуальной машины Java. Однако Lisp находится в этом списке не благодаря Clojure. Common Lisp компилируется непосредственно на языке ассемблера, а это означает, что код, который вы пишете на Lisp, будет ассемблерным при запуске в качестве исполняемого файла. Lisp все еще используется, но чаще вы можете его встретить именно как Clojure, а не Common Lisp. C/C++ C и C++ также являются компилируемыми языками. С – это простой процедурный язык программирования, который был разработан в начале 1970-х годов и который широко используется и по сей день (в основном во встроенных приложениях из-за его скорости и небольшого размера). С++ - это язык, расширяющий С и добавляющий объектно-ориентированные функции. Именно из-за этого он заменил С во многих приложениях. С++ используется в тех случаях, когда важна производительность, например, при разработке 3D-видеоигр или операционных систем. Go Go, также известный как Golang, - это язык программирования, разработанный Google. Он компилируется в ассемблер, как и большинство других языков, упомянутых здесь, но у него гораздо больше современных функций, более простой синтаксис и на нем легче писать (в сравнении с давним лидером среди быстрых языков С/С++). Golang часто используется в сетевых серверах и распределенных системах, где его скорость может повысить производительность этих систем. Rust Rust – еще один компилируемый язык программирования, который также является более безопасной альтернативой С/С++. Он ориентирован на скорость, безопасность памяти и параллельную обработку. Он часто используется в игровых движках, компонентах браузера и движках моделирования виртуальной реальности, где скорость в приоритете. C# C# - это язык, подобный Java. Он сначала компилируется в байт-код, а затем интерпретируется виртуальной машиной. Это делает его похожим на интерпретируемый язык, но при этом добавляет скорости. C#, разработанный Microsoft, прост в освоении и содержит множество сторонних библиотек, которые упрощают и ускоряют разработку. Он часто используется для создания настольных приложений, видеоигр и веб-сервисов. Java Java компилируется в байт-код, который затем интерпретируется виртуальной машиной Java (JVM). Это один из первых языков, использующий такую процедуру, поэтому он быстро стал (и остается) таким популярным. Использование виртуальной машины подразумевает, что приложение Java может быть перемещено из одной операционной системы в другую без изменения кода, если для второй операционной системы доступна версия JVM. Эта кроссплатформенная функция в сочетании со скоростью делает Java популярным языком программирования для многих прикладных задач, включая веб-разработку, разработку настольных приложений, разработку игр, разработку мобильных приложений и т.д. Swift Swift – это современный язык программирования, разработанный Apple, который компилируется в ассемблер. Он был разработан с целью замены старого языка Objective-C. Он используется для разработки ваших любимых продуктов Apple, таких как Apple TV, Apple Watch, iPhone и iPad. Swift на сегодняшний день – самый популярный язык разработки для Mac OS X и iOS. Но при этом он также является кроссплатформенным и начинает использоваться и в других прикладных задачах. Не всегда дело в скорости Хотя скорость и важна при выборе языка программирования, но есть множество других факторов, о которых тоже не стоит забывать. При написании кода бывают ситуации, когда другие характеристики языка программирования могут оказаться важнее скорости. В конце концов, если бы скорость была в приоритете для каждого проекта, то языки программирования, не вошедшие в этот список, не применялись бы вовсе, и мы бы писали код на ассемблере. Так или иначе, правда в том, что некоторые из самых популярных языков программирования даже не вошли в этот список. Скорость относительна, и во многих случаях программа на С++ будет в 10 раз быстрее программы на Python, но в данном случае это не имеет значения. В конце концов, если операция завершится за 0,001 секунды, а не за 0,01 секунды, вы действительно почувствуете разницу? Однако разница будет заметна, если вам придется выполнять одну и ту же операцию тысячи раз в цикле. В большинстве случаев скорость разработки куда важнее скорости выполнения. Медленную программу можно масштабировать для повышения ее производительности, выделяя на нее больше ресурсов, а вычислительные ресурсы намного дешевле, чем оплата времени разработки для написания кода на более сложном для написания языке низкого уровня. Более медленные языки программирования популярны, потому что на них легче писать, они имеют множество доступных сторонних библиотек и могут быть быстрее развернуты. Все это ускоряет процесс разработки. Хотя скорость языка программирования не всегда является самой важной характеристикой, у нее все же есть определенные преимущества.
img
Представьте, что вы подняли новенький сервер на любимой облачной платформе. Тут и начинается сложная работа: нужно установить приложения, службы, настроить их, обеспечить безопасность и т.д. и т.п. Как вообще сделать все это, если нет никаких представлений о том, как управлять сервером? Ответ напрашивается сам: нужно найти облачную панель управления для создания и поддержки серверов без танцев с бубном. К счастью, существует достаточно вариантов для выбора. С их помощью вы сможете, не покидая своего места управлять облачными серверами на любом из популярных облачных платформ. Чего ожидать от панели управления? Поскольку основная цель - это сэкономить время и силы, хорошая панель управления должна упростить сложные задачи, автоматизировать рутинные процедуры и привлекать ваше внимание только тогда, когда это строго необходимо. Когда речь идет о сложных задачах, требующих упрощения, создание и настройка серверов находятся в центре внимания. Панель управления должна быть посредником между вами и поставщиком облачной инфраструктуры, чтобы скрыть от вас все непонятные (но критические) аспекты, которые необходимо учитывать при создании и настройке сервера. Затем выполняется установка программного обеспечения. Возможно, вы не знаете, что устанавливать на новый сервер, но панель управления поможет вам решить, что вы планируете делать с вашим веб-сайтом. После запуска сервера необходимо начать выполнение рутинных задач, таких как мониторинг, резервное копирование, управление полномочиями и т. д. Если вы не планируете выполнять эту работу самостоятельно или нанимать для этого специалиста, то вам нужен инструмент, который может выполнять все эти задачи автоматически. Вам также нужно будет получить информацию, когда произойдет что-то, что нуждается в вашем вмешательстве. Хороший инструмент управления должен выдавать важные предупреждения по различным каналам, таким как электронная почта, телефонные звонки или SMS сообщения. Давайте рассмотрим некоторые наиболее популярные панели управления, которые достойны внимания, если вы планируете делегировать управление серверами. RunCloud RunCloud предлагает простой, но мощный графический интерфейс для создания и управления веб-сайтами на базе DigitalOcean, AWS или Google Cloud. Вместо запоминания нескольких имен входа для каждой сущности, которой может потребоваться управлять, RunCloud предлагает полную панель мониторинга для управления каждым из них: веб-приложениями, базами данных, службами, файлами, заданиями, резервными копиями и т.д. Не стоит беспокоиться о выборе оптимальной конфигурации для сервера. RunCloud настраивает наилучшую конфигурацию для любого трафика и позволяет применить ее на сервере всего несколькими щелчками мыши. Панель управления упрощает установку любой версии PHP, настройку веб-серверов Nginx или Apache2, установку SSL/TLS от Let 's Encrypt или другого поставщика. Она также предлагает настройку SSL в соответствии со стандартами PCI-DSS, NIST или правилами HIPAA. За счет очистки, чтения журналов и элегантных графиков и таблиц, также упрощаются задачи мониторинга. Но, если вы не можете проводить день, рассматривая красивые графики, RunCloud берет на себя ответственность за мониторинг и уведомляет вас о важных событиях через электронную почту, Slack или Telegram. ServerPilot Панель управления ServerPilot позволяет подключить сервера, расположенные на платформе любых поставщиков облачной инфраструктуры, для упрощения всех задач конфигурации и управления, необходимых для размещения любого PHP-приложения, например, WordPress или других систем управления контентом. С помощью ServerPilot можно настроить новый сервер менее чем за две минуты. Не нужно ждать применения изменений на сервере, так как все изменения применяются немедленно. Серверы включают в себя программный стек, специально адаптированный для обеспечения быстрой работы веб-сайтов: Ubuntu, Apache, Nginx, MySQL. Специально разработанное для разработчиков, агентств и хостинг-провайдеров, решение ServerPilot берет на себя все задачи управления облачными серверами, чтобы дать пользователю свободу сосредоточиться на более важных делах. Для хостинг-провайдеров, которые строят свои собственные платформы, ServerPilot предлагает современный REST API, который обеспечивает полный контроль над серверами, приложениями, пользователями системы и базами данных на ваших серверах через HTTPS-запросы. Поскольку ServerPilot точно знает, что работает на сервере и как он настроен, легко можно полагаться на его интегрированные функции мониторинга, чтобы сэкономить время и силы. Кроме того, статистика серверов в режиме реального времени позволяет следить за состоянием ИТ-активов в любое время. Cloudways Ориентированная на цифровые агентства и предприятия электронной коммерции, управляемая платформа хостинга Cloudways, предлагает переход к боевой эксплуатации в течение нескольких минут, берёт на себя все сложности, связанные с созданием или миграцией веб-сайта. Параметры управляемого хостинга включают WordPress, Magento, Laravel и пользовательские PHP-приложения. Вместо обычной cPanel для управления серверами, Cloudways предлагает свою собственную пользовательскую панель управления, которая обеспечивает удобное управление всеми доступными функциями. Если вам нужна дополнительная помощь для решения конкретной проблемы, то во все тарифные планы включена поддержка 24/7. Cloudway поддерживает 5 облачных провайдеров: AWS, DigitalOcean, Google Cloud, Linode и Vultr, с неограниченным выбором PHP-приложений. Все планы включают в себя интересный набор продуктов, которые освобождают вас от таких задач обслуживания, как автоматическое восстановление серверов; выделенные брандмауэры, мониторинг в режиме реального времени, автоматизированное резервное копирование, регулярное исправление безопасности и т.д. Moss Moss - это не просто и административный инструмент или панель управления, это виртуальный партнер по команде для профессионалов в области веб-разработок. Его цель - помочь всем, что ему под силу, присоединяясь к команде разработки программного обеспечения и выполняя задачи администрирования сервера и веб-сайта. Moss берет на себя рутинные задачи администрирования веб-приложений и серверов, позволяя вам уделять больше времени разработки приложений и решению задач бизнеса. Вы можете прибегнуть к услугам Moss при необходимости развертывания, управления или мониторинга серверов и веб-сайтов. При подключении к новому серверу Ubuntu, Moss запрашивает разрешение на вход через SSH и настройку его от вашего имени. Он может управлять системой VPS, облачным сервером и даже домашним сервером, если на нем работает свежая версия Ubuntu. Чтобы приложения работали как можно быстрее, Moss настраивает веб-сайты на использование таких алгоритмов оптимизации, как HTTP/2 и OCSP Stapling. Это также касается безопасности, настройки брандмауэров, установки обновлений безопасности, управления разрешениями пользователей и управления доступом SSH/SFTP к серверам. Vepp Компания Vepp предлагает набор веб-панелей, которые позволяют максимально повысить производительность, гибкость и безопасность веб-сайта, размещенного на VPS, и одновременно минимизировать усилия по администрированию. Независимо от того, являетесь ли вы владельцем веб-сайта, маркетологом или администратором электронной магазина, с помощью Vepp вы можете управлять веб-сайтами WordPress на сервере, не тратя времени на настройку доменов, почтовых ящиков и SSL-сертификатов. Панели Vepp обеспечивают упрощенное управление и быстрый доступ ко всем критически важным компонентам веб-сайта. Кроме того, у вас есть надежные средства защиты, включая антивирусные программы, резервные копии и надежные SSL-сертификаты. Проверка доступности дает вам дополнительную уверенность в том, что ваши веб-сайты будут постоянно работать нормально, в то время как статистика трафика в реальном времени информирует вас о том, как идет ваш интернет-бизнес. Если вы фрилансер или владелец агентства, вы можете увеличить прибыль, предложив своим клиентам простую панель управления для управления своими веб-сайтами. Также платформу Vepp можно развернуть на собственной инфраструктуре и продать ее как решение SaaS. Vesta Vesta предлагает простую и легкую панель управления, в которой могут отсутствовать некоторые передовые функции, такие как настройки нескольких серверов, но при этом основное внимание уделяется производительности. Его фронтэнд на базе Nginx обеспечивает простой доступ к управлению пользователями, веб-сайтами, DNS, почтовыми учетными записями/серверами, базами данных, заданиями cron, резервными копиями, IP-адресами и многим другим. На панели также представлены полные графики и статистические данные, которые позволяют судить, как работает ваш веб-сайт. Конфигурирование сервера выполняется с помощью опции меню, которая отображает статистику использования ресурсов и подробные сведения о конфигурации, такие как версия ОС, количество ЦП, установленная память и т.д. Среди других функций Vesta предлагает брандмауэр, управление/просмотр журналов, управление обновлениями и автоматизацию. Ядро Vesta является продуктом с открытым исходным кодом и написано на bash, родном языке программирования, предпочитаемом администраторами сервера Linux. Список команд, доступных в консоли, включает 381 команду и подсчет. Благодаря bash и GPL Vesta может очень быстро устранять проблемы и реализовывать новые функции. Plesk on Vultr Plesk предоставляет мощную панель управления, предназначенную для упрощения управления приложениями и веб-сайтами. Она представляет простую в использовании панель мониторинга, которая включает все функции, как простые, так и сложные, необходимые для выполнения большинства задач управления веб-сайтом. Он также имеет встроенный редактор кода, позволяющий изменять файлы "на лету". Платформа Vultr позволяет выбрать один из трёх версий Plesk: Web Admin Edition SE, Web Pro Edition и Web Host Edition. Активация лицензии полностью автоматизирована, что максимально упрощает развертывание. Vultr также предлагает множество опций для базовой платформы экземпляра Plesk. Это может быть машина в облаке с процессорами Intel и 100% твердотельными накопителями; выделенный физический сервер с нулевым уровнем виртуализации; блочная система хранения: резервная система хранения с поддержкой твердотельных накопителей объемом до 10 Тбайт; или частная облачная система вычисления. Помимо Plesk, компания Vultr предлагает простую в использовании панель управления, которая позволяет легко развертывать новые экземпляры, выбирать серверную ОС из многих дистрибутивов Linux, выбрать локацию сервера и т.д. cPanel на Kamatera CPanel - популярная панель управления веб-хостингом с GUI и средствами автоматизации, созданная для упрощения регулярных задач обслуживания веб-сайтов. В нем представлена трехуровневая структура, позволяющая конечным владельцам веб-сайтов, реселлерам и администраторам управлять различными аспектами сервером и веб-сайтов через веб-интерфейс. cPanel также предлагает доступ на основе API и командной строки, чтобы позволить разработчикам, сторонним поставщикам программного обеспечения и провайдерам веб-хостинга добавлять различные модели использования к своим функциям. Kamatera позволяет выбрать предпочтительную версию cPanel при создании нового сервера. После установки можно начать использовать графический интерфейс для управления всеми функциями сервера - от доступа по FTP и учетных записей электронной почты, до развертывания новых веб-сайтов и настройки сервера. Компания Kamatera предлагает множество вариантов конфигурации сервера: от 1 vCPU, 1 ГБ ОЗУ и 20 ГБ места на твердотельных накопителях, до 8 vCPU, 16 ГБ ОЗУ и 5 ТБ памяти. Ploi Ploi - средство управления серверами, предназначенное для упрощения работы специалистов по разработке программного обеспечения. Оно фокусируется на упрощении задач развертывания, принимая на себя всю трудную работу разработчиков, чтобы они могли делать то, что любят больше всего: разрабатывать приложения. Ploi позволяет быстро выделять серверы и развертывать сайты с множеством IaaS-провайдеров, включая AWS-EC2, DigitalOcean, Linode, Scalway, UpCloud, Vultr или пользовательскую VPS. Чтобы ускорить процесс развертывания, каждый новый сервер предоставляется с уже предустановленными NGINX, PHP, и Redis. Вы можете свободно устанавливать другие инструменты и приложения, такие как Laravel, WordPress, Git и Cloudflare. Планы Ploi начинаются с 5 серверов, неограниченного числа развертываний и неограниченного числа доменов. Одним щелчком мыши можно применить балансировку нагрузки для распределения трафика между всеми серверами. Если требуется больше серверов или функций, можно масштабироваться до более совершенного плана с такими функциями, как неограниченное количество серверов, мониторинг сервера/сайта и управления командой. Forge на Laravel Forge позволяет выделять и развертывать неограниченное число PHP-приложений на любой облачной платформе будь то, AWS, DigitalOcean, Linode, Vultr и другие. Также можно выбрать программы и службы, которые будут установлены на серверах по умолчанию. Это может быть Nginx, PHP, MySQL, Postgres, Redis и другие. Чтобы развернуть, достаточно запустить команду push на GitHub или Bitbucket и Forge подтянет всё оттуда. Если вы предпочитаете управлять серверами программным способом вместо использования веб-фронтэнда, вы можете использовать API Forge, который предоставляет доступ к большинству его функций. Для повышения безопасности Forge автоматически устанавливает обновления безопасности и обеспечивает защиту через брандмауэр. Кроме того, его серверы требуют аутентификацию через SSH, и каждый сайт работает отдельно, предотвращая взаимодействие приложений с другими сайтам. Пользователи бизнес-планов получают некоторые расширенные функции, такие как обмен панелями управления между коллегами и резервное копирование баз данных MySQL или Postgres в AWS или DigitalOcean Spaces. Итог Даже если в вашей команде есть эксперт, который точно знает, как заботиться о ваших серверах и веб-сайтах, хорошая панель управления может помочь ему/ей более эффективно и продуктивно использовать свое время. Поэтому при рассмотрении вопроса окупаемости такого инструмента, учитывайте экономию не только во времени и деньгах, но и в трудовых затратах.
img
Почитайте предыдущую статью из цикла про установление и прекращение соединения в TCP. UDP предоставляет приложениям сервис для обмена сообщениями. В отличие от TCP, UDP не требует установления соединения и не обеспечивает надежности, работы с окнами, переупорядочивания полученных данных и сегментации больших фрагментов данных на нужный размер для передачи. Однако UDP предоставляет некоторые функции TCP, такие как передача данных и мультиплексирование с использованием номеров портов, и делает это с меньшим объемом служебных данных и меньшими затратами на обработку, чем TCP. Передача данных UDP отличается от передачи данных TCP тем, что не выполняется переупорядочевание или восстановление. Приложения, использующие UDP, толерантны к потерянным данным, или у них есть какой-то прикладной механизм для восстановления потерянных данных. Например, VoIP использует UDP, потому что, если голосовой пакет потерян, к тому времени, когда потеря может быть замечена и пакет будет повторно передан, произойдет слишком большая задержка, и голос будет неразборчивым. Кроме того, запросы DNS используют UDP, потому что пользователь будет повторять операцию, если разрешение DNS не удается. В качестве другого примера, сетевая файловая система (NFS), приложение удаленной файловой системы, выполняет восстановление с помощью кода уровня приложения, поэтому функции UDP приемлемы для NFS. На рисунке 10 показан формат заголовка UDP. Самое главное, обратите внимание, что заголовок включает поля порта источника и назначения для той же цели, что и TCP. Однако UDP имеет только 8 байтов по сравнению с 20-байтовым заголовком TCP, показанным на рисунке 1-1. UDP требует более короткого заголовка, чем TCP, просто потому, что у UDP меньше работы. Приложения TCP / IP Вся цель построения корпоративной сети или подключения небольшой домашней или офисной сети к Интернету состоит в использовании таких приложений, как просмотр веб-страниц, обмен текстовыми сообщениями, электронная почта, загрузка файлов, голос и видео. В этом подразделе исследуется одно конкретное приложение - просмотр веб-страниц с использованием протокола передачи гипертекста (HTTP). Всемирная паутина (WWW) состоит из всех подключенных к Интернету веб-серверов в мире, а также всех подключенных к Интернету хостов с веб-браузерами. Веб-серверы, которые состоят из программного обеспечения веб-сервера, запущенного на компьютере, хранят информацию (в виде веб-страниц), которая может быть полезна для разных людей. Веб-браузер, представляющий собой программное обеспечение, установленное на компьютере конечного пользователя, предоставляет средства для подключения к веб-серверу и отображения веб-страниц, хранящихся на веб-сервере. Хотя большинство людей используют термин "веб-браузер" или просто "браузер", веб-браузеры также называются веб-клиентами, потому что они получают услугу с веб-сервера. Чтобы этот процесс работал, необходимо выполнить несколько определенных функций прикладного уровня. Пользователь должен каким-то образом идентифицировать сервер, конкретную веб-страницу и протокол, используемый для получения данных с сервера. Клиент должен найти IP-адрес сервера на основе имени сервера, обычно используя DNS. Клиент должен запросить веб-страницу, которая на самом деле состоит из нескольких отдельных файлов, а сервер должен отправить файлы в веб-браузер. Наконец, для приложений электронной коммерции (электронной коммерции) передача данных, особенно конфиденциальных финансовых данных, должна быть безопасной. В следующих подразделах рассматривается каждая из этих функций. Унифицированные идентификаторы ресурсов Чтобы браузер отображал веб-страницу, он должен идентифицировать сервер, на котором находится эта веб-страница, а также другую информацию, которая идентифицирует конкретную веб-страницу. Большинство веб-серверов имеют множество веб-страниц. Например, если вы используете веб-браузер для просмотра www.cisco.com и щелкаете по этой веб-странице, вы увидите другую веб-страницу. Щелкните еще раз, и вы увидите другую веб-страницу. В каждом случае щелчок идентифицирует IP-адрес сервера, а также конкретную веб-страницу, при этом детали в основном скрыты от вас. (Эти интерактивные элементы на веб-странице, которые, в свою очередь, переводят вас на другую веб-страницу, называются ссылками.) Пользователь браузера может идентифицировать веб-страницу, когда вы щелкаете что-либо на веб-странице или когда вы вводите унифицированный идентификатор ресурса (URI) в адресную область браузера. Оба варианта - щелчок по ссылке и ввод URI - относятся к URI, потому что, когда вы щелкаете ссылку на веб-странице, эта ссылка фактически ссылается на URI. Большинство браузеров поддерживают какой-либо способ просмотра скрытого URI, на который ссылается ссылка. В некоторых браузерах наведите указатель мыши на ссылку, щелкните правой кнопкой мыши и выберите "Свойства". Во всплывающем окне должен отображаться URI, на который будет направлен браузер, если вы нажмете эту ссылку. В просторечии многие люди используют термины веб-адрес или аналогичные связанные термины Universal Resource Locator (или Uniform Resource Locator [URL]) вместо URI, но URI действительно является правильным формальным термином. Фактически, URL-адрес используется чаще, чем URI, уже много лет. Однако IETF (группа, определяющая TCP / IP) вместе с консорциумом W3C (W3.org, консорциум, разрабатывающий веб-стандарты) предприняли согласованные усилия по стандартизации использования URI в качестве общего термина. С практической точки зрения, URI, используемые для подключения к веб-серверу, включают три ключевых компонента, как показано на рисунке 11. На рисунке показаны формальные имена полей URI. Что еще более важно для понимания, обратите внимание, что текст перед :// определяет протокол, используемый для подключения к серверу, текст между // и / идентифицирует сервер по имени, а текст после / идентифицирует веб-страницу. В этом случае используется протокол передачи гипертекста (HTTP), имя хоста - www.certskills.com, а имя веб-страницы - blog. Поиск веб-сервера с помощью DNS Хост может использовать DNS для обнаружения IP-адреса, соответствующего определенному имени хоста. В URI обычно указывается имя сервера - имя, которое можно использовать для динамического изучения IP-адреса, используемого этим же сервером. Веб-браузер не может отправить IP-пакет на имя назначения, но он может отправить пакет на IP-адрес назначения. Итак, прежде чем браузер сможет отправить пакет на веб-сервер, браузеру обычно необходимо преобразовать имя внутри URI в соответствующий IP-адрес этого имени. Чтобы собрать воедино несколько концепций, на рисунке 12 показан процесс DNS, инициированный веб-браузером, а также некоторая другая связанная информация. С базовой точки зрения пользователь вводит URI (в данном случае http://www.exempel.com/go/learningnetwork), преобразует имя www.exempel.com в правильный IP-адрес и начинает отправлять пакеты на веб сервер. Шаги, показанные на рисунке, следующие: Пользователь вводит URI http://www.exempel.com/go/learningnetwork в адресную область браузера. Клиент отправляет DNS-запрос на DNS-сервер. Обычно клиент узнает IP-адрес DNS-сервера через DHCP. Обратите внимание, что запрос DNS использует заголовок UDP с портом назначения 53-го известного порта DNS (см. таблицу 2 ранее в этой лекции, где приведен список популярных хорошо известных портов). DNS-сервер отправляет ответ, в котором IP-адрес 198.133.219.25 указан как IP-адрес www.exemple.com. Также обратите внимание, что ответ показывает IP-адрес назначения 64.100.1.1, IP-адрес клиента. Он также показывает заголовок UDP с портом источника 53; исходный порт - 53, потому что данные получены или отправлены DNS-сервером. Клиент начинает процесс установления нового TCP-соединения с веб-сервером. Обратите внимание, что IP-адрес назначения - это только что изученный IP-адрес веб-сервера. Пакет включает заголовок TCP, потому что HTTP использует TCP. Также обратите внимание, что TCP-порт назначения - 80, хорошо известный порт для HTTP. Наконец, отображается бит SYN, как напоминание о том, что процесс установления TCP-соединения начинается с сегмента TCP с включенным битом SYN (двоичная 1). Пример на рисунке 12 показывает, что происходит, когда клиентский хост не знает IP-адрес, связанный с именем хоста, но предприятие знает адрес. Однако хосты могут кэшировать результаты DNS-запросов, так что какое-то время клиенту не нужно запрашивать DNS для разрешения имени. Также DNS-сервер может кэшировать результаты предыдущих DNS-запросов; например, корпоративный DNS-сервер на рисунке 12 обычно не имеет настроенной информации об именах хостов в доменах за пределами этого предприятия, поэтому в этом примере DNS-сервер кэшировал адрес, связанный с именем хоста www.example.com. Когда локальный DNS не знает адрес, связанный с именем хоста, ему необходимо обратиться за помощью. На рисунке 13 показан пример с тем же клиентом, что и на рисунке 12. В этом случае корпоративный DNS действует как рекурсивный DNS-сервер, отправляя повторяющиеся DNS-сообщения, чтобы идентифицировать авторитетный DNS-сервер. Шаги, показанные на рисунке, следующие: Клиент отправляет DNS-запрос для www.exemple.com на известный ему DNS-сервер, который является корпоративным DNS-сервером. (Рекурсивный) корпоративный DNS-сервер еще не знает ответа, но он не отклоняет DNS-запрос клиента. Вместо этого он следует повторяющемуся (рекурсивному) процессу (показанному как шаги 2, 3 и 4), начиная с DNS-запроса, отправленного на корневой DNS-сервер. Корень также не предоставляет адрес, но он предоставляет IP-адрес другого DNS-сервера, ответственного за домен верхнего уровня .com. Рекурсивный корпоративный DNS-сервер отправляет следующий DNS-запрос DNS-серверу, полученному на предыдущем шаге, - на этот раз DNS-серверу TLD для домена .com. Этот DNS также не знает адреса, но знает DNS-сервер, который должен быть официальным DNS-сервером для домена exemple.com, поэтому он предоставляет адрес этого DNS-сервера. Корпоративный DNS отправляет другой DNS-запрос DNS-серверу, адрес которого был получен на предыдущем шаге, снова запрашивая разрешение имени www.exeple.com. Этот DNS-сервер, официальный сервер exemple.com, предоставляет адрес. Корпоративный DNS-сервер возвращает DNS-ответ клиенту, предоставляя IP-адрес, запрошенный на шаге 1. Передача файлов по HTTP После того, как веб-клиент (браузер) создал TCP-соединение с веб-сервером, клиент может начать запрашивать веб-страницу с сервера. Чаще всего для передачи веб-страницы используется протокол HTTP. Протокол прикладного уровня HTTP, определенный в RFC 7230, определяет, как файлы могут передаваться между двумя компьютерами. HTTP был специально создан для передачи файлов между веб-серверами и веб-клиентами. HTTP определяет несколько команд и ответов, из которых наиболее часто используется запрос HTTP GET. Чтобы получить файл с веб-сервера, клиент отправляет на сервер HTTP-запрос GET с указанием имени файла. Если сервер решает отправить файл, он отправляет ответ HTTP GET с кодом возврата 200 (что означает ОК) вместе с содержимым файла. Для HTTP-запросов существует множество кодов возврата. Например, если на сервере нет запрошенного файла, он выдает код возврата 404, что означает "файл не найден". Большинство веб-браузеров не показывают конкретные числовые коды возврата HTTP, вместо этого отображая ответ, такой как "страница не найдена", в ответ на получение кода возврата 404. Веб-страницы обычно состоят из нескольких файлов, называемых объектами. Большинство веб-страниц содержат текст, а также несколько графических изображений, анимированную рекламу и, возможно, видео и звук. Каждый из этих компонентов хранится как отдельный объект (файл) на веб-сервере. Чтобы получить их все, веб-браузер получает первый файл. Этот файл может (и обычно делает) включать ссылки на другие URI, поэтому браузер затем также запрашивает другие объекты. На рисунке 14 показана общая идея, когда браузер получает первый файл, а затем два других. В этом случае, после того, как веб-браузер получает первый файл - тот, который в URI называется "/go/ccna", браузер читает и интерпретирует этот файл. Помимо частей веб-страницы, файл ссылается на два других файла, поэтому браузер выдает два дополнительных запроса HTTP GET. Обратите внимание, что, даже если это не показано на рисунке, все эти команды проходят через одно (или, возможно, несколько) TCP-соединение между клиентом и сервером. Это означает, что TCP обеспечит исправление ошибок, гарантируя доставку данных. Как принимающий хост определяет правильное принимающее приложение Эта лекция завершается обсуждением процесса, с помощью которого хост при получении любого сообщения по любой сети может решить, какая из множества своих прикладных программ должна обрабатывать полученные данные. В качестве примера рассмотрим хост A, показанный слева на рисунке 15. На хосте открыто три разных окна веб-браузера, каждое из которых использует уникальный TCP-порт. На хосте A также открыт почтовый клиент и окно чата, оба из которых используют TCP. И электронная почта, и чат-приложения используют уникальный номер TCP-порта на хосте A, как показано на рисунке. В этой части лекции показано несколько примеров того, как протоколы транспортного уровня используют поле номера порта назначения в заголовке TCP или UDP для идентификации принимающего приложения. Например, если значение TCP-порта назначения на рисунке 15 равно 49124, хост A будет знать, что данные предназначены для первого из трех окон веб-браузера. Прежде чем принимающий хост сможет проверить заголовок TCP или UDP и найти поле порта назначения, он должен сначала обработать внешние заголовки в сообщении. Если входящее сообщение представляет собой кадр Ethernet, который инкапсулирует пакет IPv4, заголовки выглядят так, как показано на рисунке 16. Принимающему узлу необходимо просмотреть несколько полей, по одному на заголовок, чтобы идентифицировать следующий заголовок или поле в полученном сообщении. Например, хост A использует сетевой адаптер Ethernet для подключения к сети, поэтому полученное сообщение представляет собой кадр Ethernet. Поле типа Ethernet определяет тип заголовка, который следует за заголовком Ethernet - в данном случае со значением шестнадцатеричного значения 0800, заголовком IPv4. Заголовок IPv4 имеет аналогичное поле, называемое полем протокола IP. Поле протокола IPv4 имеет стандартный список значений, которые идентифицируют следующий заголовок, с десятичным числом 6, используемым для TCP, и десятичным числом 17, используемым для UDP. В этом случае значение 6 определяет заголовок TCP, следующий за заголовком IPv4. Как только принимающий хост понимает, что заголовок TCP существует, он может обработать поле порта назначения, чтобы определить, какой процесс локального приложения должен получить данные. Теперь вас ждет материал про списки управления доступом IPv4
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59