Программное обеспечение для компьютерных сетей
Обновлено: 20.11.2024
Из этого введения в работу с сетями вы узнаете, как работают компьютерные сети, какая архитектура используется для проектирования сетей и как обеспечить их безопасность.
Что такое компьютерная сеть?
Компьютерная сеть состоит из двух или более компьютеров, соединенных между собой кабелями (проводными) или WiFi (беспроводными) с целью передачи, обмена или совместного использования данных и ресурсов. Вы строите компьютерную сеть, используя оборудование (например, маршрутизаторы, коммутаторы, точки доступа и кабели) и программное обеспечение (например, операционные системы или бизнес-приложения).
Географическое расположение часто определяет компьютерную сеть. Например, LAN (локальная сеть) соединяет компьютеры в определенном физическом пространстве, например, в офисном здании, тогда как WAN (глобальная сеть) может соединять компьютеры на разных континентах. Интернет — крупнейший пример глобальной сети, соединяющей миллиарды компьютеров по всему миру.
Вы можете дополнительно определить компьютерную сеть по протоколам, которые она использует для связи, физическому расположению ее компонентов, способу управления трафиком и ее назначению.
Компьютерные сети позволяют общаться в любых деловых, развлекательных и исследовательских целях. Интернет, онлайн-поиск, электронная почта, обмен аудио и видео, онлайн-торговля, прямые трансляции и социальные сети — все это существует благодаря компьютерным сетям.
Типы компьютерных сетей
По мере развития сетевых потребностей менялись и типы компьютерных сетей, отвечающие этим потребностям. Вот наиболее распространенные и широко используемые типы компьютерных сетей:
Локальная сеть (локальная сеть). Локальная сеть соединяет компьютеры на относительно небольшом расстоянии, позволяя им обмениваться данными, файлами и ресурсами. Например, локальная сеть может соединять все компьютеры в офисном здании, школе или больнице. Как правило, локальные сети находятся в частной собственности и под управлением.
WLAN (беспроводная локальная сеть). WLAN похожа на локальную сеть, но соединения между устройствами в сети осуществляются по беспроводной сети.
WAN (глобальная сеть). Как видно из названия, глобальная сеть соединяет компьютеры на большой территории, например, из региона в регион или даже из одного континента в другой. Интернет — это крупнейшая глобальная сеть, соединяющая миллиарды компьютеров по всему миру. Обычно для управления глобальной сетью используются модели коллективного или распределенного владения.
MAN (городская сеть): MAN обычно больше, чем LAN, но меньше, чем WAN. Города и государственные учреждения обычно владеют и управляют MAN.
PAN (персональная сеть): PAN обслуживает одного человека. Например, если у вас есть iPhone и Mac, вполне вероятно, что вы настроили сеть PAN, которая позволяет обмениваться и синхронизировать контент — текстовые сообщения, электронные письма, фотографии и многое другое — на обоих устройствах.
SAN (сеть хранения данных). SAN – это специализированная сеть, предоставляющая доступ к хранилищу на уровне блоков — общей сети или облачному хранилищу, которое для пользователя выглядит и работает как накопитель, физически подключенный к компьютеру. (Дополнительную информацию о том, как SAN работает с блочным хранилищем, см. в разделе «Блочное хранилище: полное руководство».)
CAN (сеть кампуса). CAN также известен как корпоративная сеть. CAN больше, чем LAN, но меньше, чем WAN. CAN обслуживают такие объекты, как колледжи, университеты и бизнес-кампусы.
VPN (виртуальная частная сеть). VPN – это безопасное двухточечное соединение между двумя конечными точками сети (см. раздел "Узлы" ниже). VPN устанавливает зашифрованный канал, который сохраняет личность пользователя и учетные данные для доступа, а также любые передаваемые данные, недоступные для хакеров.
Важные термины и понятия
Ниже приведены некоторые общие термины, которые следует знать при обсуждении компьютерных сетей:
IP-адрес: IP-адрес — это уникальный номер, присваиваемый каждому устройству, подключенному к сети, которая использует для связи Интернет-протокол. Каждый IP-адрес идентифицирует хост-сеть устройства и местоположение устройства в хост-сети. Когда одно устройство отправляет данные другому, данные включают «заголовок», который включает IP-адрес отправляющего устройства и IP-адрес устройства-получателя.
Узлы. Узел — это точка подключения внутри сети, которая может получать, отправлять, создавать или хранить данные. Каждый узел требует, чтобы вы предоставили некоторую форму идентификации для получения доступа, например IP-адрес. Несколько примеров узлов включают компьютеры, принтеры, модемы, мосты и коммутаторы. Узел — это, по сути, любое сетевое устройство, которое может распознавать, обрабатывать и передавать информацию любому другому сетевому узлу.
Маршрутизаторы. Маршрутизатор — это физическое или виртуальное устройство, которое отправляет информацию, содержащуюся в пакетах данных, между сетями. Маршрутизаторы анализируют данные в пакетах, чтобы определить наилучший способ доставки информации к конечному получателю. Маршрутизаторы пересылают пакеты данных до тех пор, пока они не достигнут узла назначения.
Коммутаторы. Коммутатор — это устройство, которое соединяет другие устройства и управляет обменом данными между узлами в сети, обеспечивая доставку пакетов данных к конечному пункту назначения.В то время как маршрутизатор отправляет информацию между сетями, коммутатор отправляет информацию между узлами в одной сети. При обсуждении компьютерных сетей «коммутация» относится к тому, как данные передаются между устройствами в сети. Три основных типа переключения следующие:
Коммутация каналов, которая устанавливает выделенный канал связи между узлами в сети. Этот выделенный путь гарантирует, что во время передачи будет доступна вся полоса пропускания, что означает, что никакой другой трафик не может проходить по этому пути.
Коммутация пакетов предполагает разбиение данных на независимые компоненты, называемые пакетами, которые из-за своего небольшого размера предъявляют меньшие требования к сети. Пакеты перемещаются по сети к конечному пункту назначения.
Переключение сообщений отправляет сообщение полностью с исходного узла, перемещаясь от коммутатора к коммутатору, пока не достигнет узла назначения.
Порты: порт определяет конкретное соединение между сетевыми устройствами. Каждый порт идентифицируется номером. Если вы считаете IP-адрес сопоставимым с адресом отеля, то порты — это номера люксов или комнат в этом отеле. Компьютеры используют номера портов, чтобы определить, какое приложение, служба или процесс должны получать определенные сообщения.
Типы сетевых кабелей. Наиболее распространенными типами сетевых кабелей являются витая пара Ethernet, коаксиальный и оптоволоконный кабель. Выбор типа кабеля зависит от размера сети, расположения сетевых элементов и физического расстояния между устройствами.
Примеры компьютерных сетей
Проводное или беспроводное соединение двух или более компьютеров с целью обмена данными и ресурсами образует компьютерную сеть. Сегодня почти каждое цифровое устройство принадлежит к компьютерной сети.
В офисе вы и ваши коллеги можете совместно использовать принтер или систему группового обмена сообщениями. Вычислительная сеть, которая позволяет это, вероятно, представляет собой локальную сеть или локальную сеть, которая позволяет вашему отделу совместно использовать ресурсы.
Городские власти могут управлять общегородской сетью камер наблюдения, которые отслеживают транспортный поток и происшествия. Эта сеть будет частью MAN или городской сети, которая позволит городским службам экстренной помощи реагировать на дорожно-транспортные происшествия, советовать водителям альтернативные маршруты движения и даже отправлять дорожные билеты водителям, проезжающим на красный свет.
The Weather Company работала над созданием одноранговой ячеистой сети, которая позволяет мобильным устройствам напрямую взаимодействовать с другими мобильными устройствами, не требуя подключения к Wi-Fi или сотовой связи. Проект Mesh Network Alerts позволяет доставлять жизненно важную информацию о погоде миллиардам людей даже без подключения к Интернету.
Компьютерные сети и Интернет
Поставщики интернет-услуг (ISP) и поставщики сетевых услуг (NSP) предоставляют инфраструктуру, позволяющую передавать пакеты данных или информации через Интернет. Каждый бит информации, отправленной через Интернет, не поступает на каждое устройство, подключенное к Интернету. Это комбинация протоколов и инфраструктуры, которая точно указывает, куда направить информацию.
Как они работают?
Компьютерные сети соединяют такие узлы, как компьютеры, маршрутизаторы и коммутаторы, с помощью кабелей, оптоволокна или беспроводных сигналов. Эти соединения позволяют устройствам в сети взаимодействовать и обмениваться информацией и ресурсами.
Сети следуют протоколам, которые определяют способ отправки и получения сообщений. Эти протоколы позволяют устройствам обмениваться данными. Каждое устройство в сети использует интернет-протокол или IP-адрес, строку цифр, которая однозначно идентифицирует устройство и позволяет другим устройствам распознавать его.
Маршрутизаторы – это виртуальные или физические устройства, облегчающие обмен данными между различными сетями. Маршрутизаторы анализируют информацию, чтобы определить наилучший способ доставки данных к конечному пункту назначения. Коммутаторы соединяют устройства и управляют связью между узлами внутри сети, гарантируя, что пакеты информации, перемещающиеся по сети, достигают конечного пункта назначения.
Архитектура
Архитектура компьютерной сети определяет физическую и логическую структуру компьютерной сети. В нем описывается, как компьютеры организованы в сети и какие задачи возлагаются на эти компьютеры. Компоненты сетевой архитектуры включают аппаратное и программное обеспечение, средства передачи (проводные или беспроводные), топологию сети и протоколы связи.
Основные типы сетевой архитектуры
В сети клиент/сервер центральный сервер или группа серверов управляет ресурсами и предоставляет услуги клиентским устройствам в сети. Клиенты в сети общаются с другими клиентами через сервер. В отличие от модели P2P, клиенты в архитектуре клиент/сервер не делятся своими ресурсами. Этот тип архитектуры иногда называют многоуровневой моделью, поскольку он разработан с несколькими уровнями или ярусами.
Топология сети
Топология сети — это то, как устроены узлы и каналы в сети. Сетевой узел — это устройство, которое может отправлять, получать, хранить или пересылать данные. Сетевой канал соединяет узлы и может быть как кабельным, так и беспроводным.
Понимание типов топологии обеспечивает основу для построения успешной сети. Существует несколько топологий, но наиболее распространенными являются шина, кольцо, звезда и сетка:
При топологии шинной сети каждый сетевой узел напрямую подключен к основному кабелю.
В кольцевой топологии узлы соединены в петлю, поэтому каждое устройство имеет ровно двух соседей. Соседние пары соединяются напрямую; несмежные пары связаны косвенно через несколько узлов.
В топологии звездообразной сети все узлы подключены к одному центральному концентратору, и каждый узел косвенно подключен через этот концентратор.
сетчатая топология определяется перекрывающимися соединениями между узлами. Вы можете создать полносвязную топологию, в которой каждый узел в сети соединен со всеми остальными узлами. Вы также можете создать топологию частичной сетки, в которой только некоторые узлы соединены друг с другом, а некоторые связаны с узлами, с которыми они обмениваются наибольшим количеством данных. Полноячеистая топология может быть дорогостоящей и трудоемкой для выполнения, поэтому ее часто используют для сетей, требующих высокой избыточности. Частичная сетка обеспечивает меньшую избыточность, но является более экономичной и простой в реализации.
Безопасность
Безопасность компьютерной сети защищает целостность информации, содержащейся в сети, и контролирует доступ к этой информации. Политики сетевой безопасности уравновешивают необходимость предоставления услуг пользователям с необходимостью контроля доступа к информации.
Существует много точек входа в сеть. Эти точки входа включают аппаратное и программное обеспечение, из которых состоит сама сеть, а также устройства, используемые для доступа к сети, такие как компьютеры, смартфоны и планшеты. Из-за этих точек входа сетевая безопасность требует использования нескольких методов защиты. Средства защиты могут включать брандмауэры — устройства, которые отслеживают сетевой трафик и предотвращают доступ к частям сети на основе правил безопасности.
Процессы аутентификации пользователей с помощью идентификаторов пользователей и паролей обеспечивают еще один уровень безопасности. Безопасность включает в себя изоляцию сетевых данных, чтобы доступ к служебной или личной информации был сложнее, чем к менее важной информации. Другие меры сетевой безопасности включают обеспечение регулярного обновления и исправления аппаратного и программного обеспечения, информирование пользователей сети об их роли в процессах безопасности и информирование о внешних угрозах, осуществляемых хакерами и другими злоумышленниками. Сетевые угрозы постоянно развиваются, что делает сетевую безопасность бесконечным процессом.
Использование общедоступного облака также требует обновления процедур безопасности для обеспечения постоянной безопасности и доступа. Для безопасного облака требуется безопасная базовая сеть.
Ознакомьтесь с пятью основными соображениями (PDF, 298 КБ) по обеспечению безопасности общедоступного облака.
Ячеистые сети
Как отмечалось выше, ячеистая сеть — это тип топологии, в котором узлы компьютерной сети подключаются к как можно большему количеству других узлов. В этой топологии узлы взаимодействуют друг с другом, чтобы эффективно направлять данные к месту назначения. Эта топология обеспечивает большую отказоустойчивость, поскольку в случае отказа одного узла существует множество других узлов, которые могут передавать данные. Ячеистые сети самонастраиваются и самоорганизуются в поисках самого быстрого и надежного пути для отправки информации.
Тип ячеистых сетей
Существует два типа ячеистых сетей — полная и частичная:
- В полной ячеистой топологии каждый сетевой узел соединяется со всеми остальными сетевыми узлами, обеспечивая высочайший уровень отказоустойчивости. Однако его выполнение обходится дороже. В топологии с частичной сеткой подключаются только некоторые узлы, обычно те, которые чаще всего обмениваются данными.
- беспроводная ячеистая сеть может состоять из десятков и сотен узлов. Этот тип сети подключается к пользователям через точки доступа, разбросанные по большой территории.
Балансировщики нагрузки и сети
Балансировщики нагрузки эффективно распределяют задачи, рабочие нагрузки и сетевой трафик между доступными серверами. Думайте о балансировщиках нагрузки как об управлении воздушным движением в аэропорту. Балансировщик нагрузки отслеживает весь трафик, поступающий в сеть, и направляет его на маршрутизатор или сервер, которые лучше всего подходят для управления им. Цели балансировки нагрузки – избежать перегрузки ресурсов, оптимизировать доступные ресурсы, сократить время отклика и максимально увеличить пропускную способность.
Полный обзор балансировщиков нагрузки см. в разделе Балансировка нагрузки: полное руководство.
Сети доставки контента
Сеть доставки контента (CDN) – это сеть с распределенными серверами, которая доставляет пользователям временно сохраненные или кэшированные копии контента веб-сайта в зависимости от их географического положения.CDN хранит этот контент в распределенных местах и предоставляет его пользователям, чтобы сократить расстояние между посетителями вашего сайта и сервером вашего сайта. Кэширование контента ближе к вашим конечным пользователям позволяет вам быстрее обслуживать контент и помогает веб-сайтам лучше охватить глобальную аудиторию. CDN защищают от всплесков трафика, сокращают задержки, снижают потребление полосы пропускания, ускоряют время загрузки и уменьшают влияние взломов и атак, создавая слой между конечным пользователем и инфраструктурой вашего веб-сайта.
Прямые трансляции мультимедиа, мультимедиа по запросу, игровые компании, создатели приложений, сайты электронной коммерции — по мере роста цифрового потребления все больше владельцев контента обращаются к CDN, чтобы лучше обслуживать потребителей контента.
Компьютерные сетевые решения и IBM
Компьютерные сетевые решения помогают предприятиям увеличить трафик, сделать пользователей счастливыми, защитить сеть и упростить предоставление услуг. Лучшее решение для компьютерной сети, как правило, представляет собой уникальную конфигурацию, основанную на вашем конкретном типе бизнеса и потребностях.
Сети доставки контента (CDN), балансировщики нагрузки и сетевая безопасность — все это упомянуто выше — это примеры технологий, которые могут помочь компаниям создавать оптимальные компьютерные сетевые решения. IBM предлагает дополнительные сетевые решения, в том числе:
-
— это устройства, которые дают вам улучшенный контроль над сетевым трафиком, позволяют повысить производительность вашей сети и повысить ее безопасность. Управляйте своими физическими и виртуальными сетями для маршрутизации нескольких VLAN, для брандмауэров, VPN, формирования трафика и многого другого. обеспечивает безопасность и ускоряет передачу данных между частной инфраструктурой, мультиоблачными средами и IBM Cloud. — это возможности безопасности и производительности, предназначенные для защиты общедоступного веб-контента и приложений до того, как они попадут в облако. Получите защиту от DDoS-атак, глобальную балансировку нагрузки и набор функций безопасности, надежности и производительности, предназначенных для защиты общедоступного веб-контента и приложений до того, как они попадут в облако.
Сетевые сервисы в IBM Cloud предоставляют вам сетевые решения для повышения трафика, обеспечения удовлетворенности ваших пользователей и легкого предоставления ресурсов по мере необходимости.
Развить сетевые навыки и получить профессиональную сертификацию IBM, пройдя курсы в рамках программы Cloud Site Reliability Engineers (SRE) Professional.
Сетевые архитектуры и спецификации протоколов имеют важное значение, но хорошего плана недостаточно, чтобы объяснить феноменальный успех Интернета: количество компьютеров, подключенных к Интернету, росло в геометрической прогрессии на протяжении более трех десятилетий (хотя точные цифры трудно назвать). приходи). По оценкам, к концу 2018 года число пользователей Интернета составило около 4,1 млрд – примерно половина населения мира.
Чем объясняется успех Интернета? Безусловно, этому способствовало множество факторов (включая хорошую архитектуру), но одна вещь, которая сделала Интернет столь безудержным успехом, — это тот факт, что большая часть его функций обеспечивается программным обеспечением, работающим на компьютерах общего назначения. Значение этого заключается в том, что новые функциональные возможности могут быть легко добавлены с помощью «просто небольшого программирования». В результате новые приложения и службы появляются с невероятной скоростью.
Дополнительным фактором является значительное увеличение вычислительной мощности обычных компьютеров. Хотя компьютерные сети в принципе всегда были способны передавать любую информацию, такую как образцы цифрового голоса, оцифрованные изображения и т. д., этот потенциал не был особенно интересен, если компьютеры, отправляющие и получающие эти данные, были слишком медленными, чтобы делать что-либо полезное. с информацией. Практически все современные компьютеры способны воспроизводить оцифрованные аудио и видео с приемлемой скоростью и разрешением.
За годы, прошедшие с момента появления первого издания этой книги, написание сетевых приложений стало основным видом деятельности, а не работой лишь нескольких специалистов. На это повлияли многие факторы, в том числе улучшенные инструменты, облегчающие работу, и открытие новых рынков, таких как приложения для смартфонов.
Следует отметить, что знание того, как реализовать сетевое программное обеспечение, является важной частью понимания компьютерных сетей, и, хотя есть вероятность, что вам не будет поручено реализовать низкоуровневый протокол, такой как IP, есть большая вероятность, что вы найдут причину для внедрения протокола прикладного уровня — неуловимого «приложения-убийцы», которое приведет к невообразимой славе и богатству. Для начала в этом разделе представлены некоторые вопросы, связанные с реализацией сетевого приложения поверх Интернета. Как правило, такие программы одновременно являются приложением (т. е. предназначены для взаимодействия с пользователями) и протоколом (т. е. общаются с одноранговыми узлами по сети).
1.4.1 API сокетов¶
При реализации сетевого приложения следует начать с интерфейса, экспортируемого сетью. Поскольку большинство сетевых протоколов реализовано в программном обеспечении (особенно в стеке протоколов), и почти все компьютерные системы реализуют свои сетевые протоколы как часть операционной системы, когда мы говорим об интерфейсе, «экспортируемом сетью», мы обычно имеем в виду к интерфейсу, который ОС предоставляет своей сетевой подсистеме. Этот интерфейс часто называют сетевым интерфейсом прикладного программирования (API).
Хотя каждая операционная система может свободно определять свой собственный сетевой API (и большинство из них имеют), со временем некоторые из этих API стали широко поддерживаться; то есть они были перенесены на операционные системы, отличные от их родной системы. Это то, что произошло с интерфейсом сокетов, первоначально предоставленным в дистрибутиве Unix в Беркли, который теперь поддерживается практически во всех популярных операционных системах и является основой языковых интерфейсов, таких как Java. или библиотеку сокетов Python. Мы используем Linux и C для всех примеров кода в этой книге, Linux, потому что это открытый исходный код, и C, потому что он остается предпочтительным языком для внутренних сетей. (Кроме того, C имеет то преимущество, что раскрывает все низкоуровневые детали, что полезно для понимания лежащих в основе идей.)
Сокеты активировали взрыв приложения
Трудно переоценить важность Socket API. Он определяет точку разграничения между приложениями, работающими поверх Интернета, и деталями реализации Интернета. Благодаря тому, что сокеты обеспечивают четко определенный и стабильный интерфейс, написание интернет-приложений превратилось в многомиллиардную индустрию. Начиная со скромного начала парадигмы клиент-сервер и нескольких простых прикладных программ, таких как электронная почта, передача файлов и удаленный вход в систему, каждый теперь имеет доступ к бесконечному количеству облачных приложений со своих смартфонов.
В этом разделе закладывается основа, вновь рассматривая простоту открытия сокета клиентской программой для обмена сообщениями с серверной программой, но сегодня поверх Socket API накладывается богатая программная экосистема. Этот уровень включает в себя множество облачных инструментов, которые снижают барьер для реализации масштабируемых приложений. Мы возвращаемся к взаимодействию между облаком и сетью в каждой главе, начиная с раздела Перспектива в конце главы 1.
Прежде чем описывать интерфейс сокета, важно помнить о двух аспектах. Каждый протокол предоставляет определенный набор служб, а API предоставляет синтаксис, с помощью которого эти службы могут вызываться в конкретной компьютерной системе. Затем реализация отвечает за сопоставление реального набора операций и объектов, определенных API, с абстрактным набором услуг, определенных протоколом. Если вы проделали хорошую работу по определению интерфейса, то можно будет использовать синтаксис интерфейса для вызова служб многих различных протоколов. Такая общность, безусловно, была целью интерфейса сокетов, хотя он далек от совершенства.
Неудивительно, что основной абстракцией интерфейса сокета является сокет. Хороший способ представить сокет как точку, в которой процесс локального приложения подключается к сети. Интерфейс определяет операции по созданию сокета, подключению сокета к сети, отправке/получению сообщений через сокет и закрытию сокета. Чтобы упростить обсуждение, мы ограничимся показом того, как сокеты используются с TCP.
Первый шаг — создать сокет, который выполняется с помощью следующей операции:
Причина, по которой эта операция принимает три аргумента, заключается в том, что интерфейс сокета был разработан достаточно общим, чтобы поддерживать любой базовый набор протоколов. В частности, аргумент домена определяет семейство протоколов, которые будут использоваться: PF_INET обозначает семейство Интернета, PF_UNIX обозначает конвейер Unix, а PF_PACKET обозначает прямой доступ к сетевому интерфейсу (т. е. в обход стек протоколов TCP/IP). Аргумент типа указывает семантику связи. SOCK_STREAM используется для обозначения потока байтов. SOCK_DGRAM — это альтернатива, обозначающая сервис, ориентированный на сообщения, такой как предоставляемый UDP. Аргумент протокола идентифицирует конкретный протокол, который будет использоваться. В нашем случае этот аргумент — UNSPEC, поскольку комбинация PF_INET и SOCK_STREAM подразумевает TCP. Наконец, возвращаемое значение из сокета — это дескриптор только что созданного сокета, т. е. идентификатор, по которому мы можем обращаться к сокету в будущем. Он передается в качестве аргумента для последующих операций над этим сокетом.
Следующий шаг зависит от того, являетесь ли вы клиентом или сервером.На сервере процесс приложения выполняет пассивное открытие — сервер сообщает, что он готов принимать соединения, но на самом деле соединение не устанавливает. Сервер делает это, вызывая следующие три операции:
Операция привязки, как следует из ее названия, привязывает вновь созданный сокет к указанному адресу. Это сетевой адрес локального участника — сервера. Обратите внимание, что при использовании с интернет-протоколами адрес представляет собой структуру данных, которая включает в себя как IP-адрес сервера, так и номер порта TCP. Порты используются для косвенной идентификации процессов. Они представляют собой форму ключей демультиплексора. Номер порта обычно представляет собой хорошо известный номер, относящийся к предлагаемой услуге; например, веб-серверы обычно принимают соединения через порт 80.
Затем операция прослушивания определяет, сколько соединений может быть ожидающим на указанном сокете. Наконец, операция принятия выполняет пассивное открытие. Это блокирующая операция, которая не возвращается до тех пор, пока удаленный участник не установит соединение, а когда она завершается, она возвращает новый сокет, соответствующий этому только что установленному соединению, а аргумент адреса содержит адрес удаленного участника. Обратите внимание, что когда accept возвращает значение, исходный сокет, который был передан в качестве аргумента, все еще существует и по-прежнему соответствует пассивному открытию; он используется в будущих вызовах accept .
На клиентском компьютере процесс приложения выполняет активное открытие; то есть он сообщает, с кем он хочет общаться, вызывая следующую единственную операцию:
Эта операция не возвращается до тех пор, пока TCP не установит соединение, после чего приложение может начать отправку данных. В этом случае address содержит адрес удаленного участника. На практике клиент обычно указывает только адрес удаленного участника и позволяет системе заполнить локальную информацию. В то время как сервер обычно прослушивает сообщения на хорошо известном порту, клиенту обычно все равно, какой порт он использует для себя; ОС просто выбирает неиспользуемый.
После установления соединения процессы приложений вызывают следующие две операции для отправки и получения данных:
Первая операция отправляет данное сообщение через указанный сокет, а вторая операция получает сообщение из указанного сокета в заданный буфер. Обе операции принимают набор флагов, управляющих определенными деталями операции.
1.4.2 Пример клиент/сервер¶
Теперь мы покажем реализацию простой клиент-серверной программы, которая использует интерфейс сокетов для отправки сообщений через соединение TCP. Программа также использует другие сетевые утилиты Linux, которые мы вводим по ходу дела. Наше приложение позволяет пользователю на одном компьютере вводить и отправлять текст пользователю на другом компьютере. Это упрощенная версия программы разговора для Linux, которая похожа на программу, лежащую в основе приложений для обмена мгновенными сообщениями.
Клиент¶
Начнем с клиентской стороны, которая принимает в качестве аргумента имя удаленной машины. Он вызывает утилиту Linux для преобразования этого имени в IP-адрес удаленного хоста. Следующим шагом является создание структуры адресных данных ( sin ), ожидаемой интерфейсом сокета. Обратите внимание, что эта структура данных указывает, что мы будем использовать сокет для подключения к Интернету (AF_INET). В нашем примере мы используем TCP-порт 5432 в качестве общеизвестного порта сервера; это порт, который не был назначен какой-либо другой интернет-службе. Последним шагом в настройке соединения является вызов socket и connect . После завершения операции соединение устанавливается, и клиентская программа входит в свой основной цикл, который считывает текст со стандартного ввода и отправляет его через сокет.
Сервер¶
Сервер такой же простой. Сначала он создает структуру данных адреса, заполняя свой собственный номер порта ( SERVER_PORT ). Не указывая IP-адрес, прикладная программа готова принимать соединения с любого из IP-адресов локального хоста. Затем сервер выполняет предварительные шаги, связанные с пассивным открытием; он создает сокет, привязывает его к локальному адресу и устанавливает максимально допустимое количество ожидающих соединений. Наконец, основной цикл ожидает, пока удаленный хост попытается подключиться, и когда он это сделает, он получит и распечатает символы, поступающие по соединению.
Компьютерная сеть — это группа из двух или более взаимосвязанных компьютерных систем. Вы можете установить сетевое соединение с помощью кабеля или беспроводной сети.
Каждая сеть включает аппаратное и программное обеспечение, соединяющее компьютеры и инструменты.
В этом учебном пособии по основам компьютерных сетей вы узнаете:
Компоненты компьютерной сети
Вот основные компоненты компьютерной сети:
Переключатели
Коммутаторы работают как контроллер, который соединяет компьютеры, принтеры и другие аппаратные устройства с сетью в кампусе или здании.
Он позволяет устройствам в вашей сети взаимодействовать друг с другом, а также с другими сетями. Это поможет вам совместно использовать ресурсы и сократить расходы любой организации.
Маршрутизаторы
Маршрутизаторы помогают подключаться к нескольким сетям. Это позволяет вам использовать одно подключение к Интернету для нескольких устройств и экономить деньги. Этот сетевой компонент действует как диспетчер, который позволяет анализировать данные, отправляемые по сети. Он автоматически выбирает лучший маршрут для передачи данных и отправляет их по пути.
Серверы:
Серверы – это компьютеры, на которых хранятся общие программы, файлы и сетевая операционная система. Серверы разрешают доступ к сетевым ресурсам всем пользователям сети.
Клиенты:
Клиенты — это компьютерные устройства, которые имеют доступ к сети и используют ее, а также совместно используют сетевые ресурсы. Они также являются пользователями сети, так как могут отправлять и получать запросы от сервера.
Средства передачи:
Среда передачи – это носитель, используемый для соединения компьютеров в сети, например коаксиальный кабель, витая пара и оптоволоконный кабель. Его также называют ссылками, каналами или линиями.
Точки доступа
Точки доступа позволяют устройствам подключаться к беспроводной сети без кабелей. Беспроводная сеть позволяет подключать новые устройства и обеспечивает гибкую поддержку мобильных пользователей.
Общие данные:
Общие данные – это данные, которыми обмениваются клиенты, такие как файлы данных, программы доступа к принтерам и электронная почта.
Сетевая карта:
Карта сетевого интерфейса отправляет, получает данные и управляет потоком данных между компьютером и сетью.
Локальная операционная система:
Локальная ОС, которая помогает персональным компьютерам получать доступ к файлам, печатать на локальном принтере и использовать один или несколько дисков и дисководов компакт-дисков, расположенных на компьютере.
Сетевая операционная система:
Сетевая операционная система — это программа, работающая на компьютерах и серверах. Это позволяет компьютерам общаться через сеть.
Протокол:
Протокол – это набор определенных правил, который позволяет двум объектам обмениваться данными по сети. Для этой цели используются некоторые стандартные протоколы: IP, TCP, UDP, FTP и т. д.
Концентратор — это устройство, разделяющее сетевое подключение на несколько компьютеров. Он действует как распределительный центр, поэтому всякий раз, когда компьютер запрашивает какую-либо информацию с компьютера или из сети, он отправляет запрос на концентратор через кабель. Концентратор получит запрос и передаст его по всей сети.
Кабель локальной сети:
Кабель локальной сети (LAN) также называется кабелем Ethernet или кабелем передачи данных. Он используется для подключения устройства к Интернету.
OSI расшифровывается как Open Systems Interconnection. Это эталонная модель, позволяющая задавать стандарты связи.
Уникальные идентификаторы сети
Ниже приведены некоторые уникальные идентификаторы сети:
Имя хоста:
Каждое устройство в сети связано с уникальным устройством, которое называется именем хоста.
IP-адрес:
IP-адрес (интернет-протокол) является уникальным идентификатором для каждого устройства в Интернете. Длина IP-адреса составляет 32 бита. IPv6-адрес — 128 бит.
DNS-сервер:
DNS означает систему доменных имен. Это сервер, который преобразует URL-адреса или веб-адреса в соответствующие им IP-адреса.
MAC-адрес:
MAC (адрес управления доступом к среде), известный как физический адрес, является уникальным идентификатором каждого хоста и связан с сетевой картой (сетевой интерфейсной картой). Общая длина MAC-адреса: 12 цифр/6 байт/48 бит
Порт — это логический канал, который позволяет пользователям сети отправлять или получать данные в приложение. На каждом хосте может быть запущено несколько приложений. Каждое из этих приложений идентифицируется по номеру порта, на котором они работают.
Другие важные сетевые компоненты
ARP означает протокол разрешения адресов, который помогает пользователям сети преобразовывать IP-адрес в соответствующий физический адрес.
Протокол обратного разрешения адресов дает IP-адрес устройства с заданным физическим адресом в качестве входных данных.
Загрузить флаер продукта — загрузить PDF-файл в новой вкладке. Это фиктивное описание. Загрузить флаер продукта — загрузить PDF в новой вкладке. Это фиктивное описание. Загрузить флаер продукта — загрузить PDF в новой вкладке. Это фиктивное описание.Загрузить флаер продукта — загрузить PDF в новой вкладке. Это фиктивное описание.
Описание
Есть много книг по компьютерам, сетям и программной инженерии, но ни одна из них не интегрирует все три с приложениями. Интеграция важна, потому что программное обеспечение все чаще определяет производительность, надежность, ремонтопригодность и доступность сложных компьютеров и систем. Книги по разработке программного обеспечения обычно изображают программное обеспечение так, как будто оно существует в вакууме и не имеет отношения к более широкой системе. Это неправильно, потому что система — это больше, чем программное обеспечение. Он состоит из людей, организаций, процессов, аппаратного и программного обеспечения. Все эти компоненты должны учитываться комплексно при проектировании систем. С другой стороны, книги о компьютерах и сетях не демонстрируют глубокого понимания тонкостей разработки программного обеспечения. В этой книге вы узнаете, например, как количественно анализировать производительность, надежность, ремонтопригодность и доступность компьютеров, сетей и программного обеспечения по отношению к системе в целом. . Кроме того, вы узнаете, как оценить и снизить риск развертывания интегрированных систем. Вы узнаете, как применять многие модели, связанные с оптимизацией систем. Приведены многочисленные количественные примеры, которые помогут вам понять и интерпретировать результаты моделирования. Эту книгу можно использовать в качестве курса для выпускников первого года обучения компьютерной, сетевой и программной инженерии; в качестве справочника на рабочем месте для инженеров по компьютерам, сетям и программному обеспечению; и в качестве справочника по этим дисциплинам.
Об авторе
Норман Ф. Шнайдевинд, доктор философии, почетный профессор кафедры информационных наук и группы разработки программного обеспечения Военно-морской школы последипломного образования. Доктор Шнайдевинд является членом IEEE, избранным в 1992 г. за «вклад в разработку моделей измерения надежности и показателей программного обеспечения, а также за лидерство в развитии области обслуживания программного обеспечения». В 2001 году он получил награду IEEE Reliability Society «Инженер года». В 2005 году д-р Шнайдевинд был выбран для участия в программе IEEE-USA Congress Fellowship, работая с Комитетом по внутренней безопасности и делам правительства над вопросами кибербезопасности и конфиденциальности.
Читайте также: