80
Введение в сетевые технологии Виталий Унгурян [email protected]

Введение в сетевые технологии

Embed Size (px)

Citation preview

Введение в сетевые технологии

Виталий Унгурян [email protected]

Сетевое программирование

Сетевое программирование (англ. network programming) — это написание программ, взаимодействующих с другими программами посредством компьютерной сети.

Сетевое программирование

Сетевое программирование

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

Сетевое программирование

Клиентский и серверный процессы вместе образуют распределенную систему

Сетевое программирование

Связь между клиентским и серверным процессами может быть или на основе соединений (как например, TCP-протокол, устанавливающий виртуальное соединение или сессию), или без соединений (на основе UDP-датаграмм).

Вычислительная сеть

Компьютерная сеть (вычислительная сеть) — это

система связи компьютеров или вычислительного оборудования

(серверы, маршрутизаторы и другое оборудование).

Классификация

По территориальной распространенности:

BAN (Body Area Network — нательная компьютерная сеть) — сеть надеваемых или имплантированных компьютерных устройств.

Классификация

PAN (Personal Area Network) — персональная сеть, предназначенная для взаимодействия различных устройств, принадлежащих одному владельцу.

Классификация

LAN (ЛВС, Local Area Network) — локальные сети, имеющие замкнутую инфраструктуру. Термин «LAN» может описывать и маленькую офисную сеть, и сеть уровня большого завода, занимающего несколько сотен гектаров. Зарубежные источники дают даже близкую оценку — около шести миль (10 км) в радиусе.

Классификация

CAN (Campus Area Network) — кампусная сеть, объединяет локальные сети близко расположенных зданий.MAN (Metropolitan Area Network) — городские сети между учреждениями в пределах одного или нескольких городов, связывающие много локальных вычислительных сетей.

Классификация

WAN (Wide Area Network) — глобальная сеть, покрывающая большие географические регионы, включающие в себя как локальные сети, так и прочие телекоммуникационные сети и устройства. Глобальные сети являются открытыми и ориентированы на обслуживание любых пользователей.

Классификация

По архитектуре:Клиент-сервер (англ. Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентамиОдноранговая сеть (децентрализованная или пиринговая сеть)

Топология сетей - Шина

Физическая топология "шина" (Bus), именуемая также линейной шиной (Linear Bus), состоит из единственного кабеля, к которому

присоединены все компьютеры сегмента

Топология сетей - Кольцо

Топология сетей - Звезда

Звезда — базовая топология компьютерной сети, в которой все компьютеры сети присоединены к центральному узлу

Топология сетей - Ячейки

Ячеистая топология (англ. Mesh Topology) — сетевая топология компьютерной сети, построенная на принципе ячеек

Топология сетей - Решетка

Решётка (англ. Grid network, иногда также mesh, например 3D-mesh) — это

топология, в которой узлы образуют регулярную многомерную решётку. При

этом каждое ребро решётки параллельно её оси и соединяет два

смежных узла вдоль этой оси.

Топология сетей - Древовидная

Топология сетей - Смешанная

Смешанная топология

Топология сетей - Fat Tree

Классификация сетей

По типу среды передачи:Проводные (телефонный провод, коаксиальный кабель, витая пара, волоконный-оптический кабель)

Беспроводные (передачей информации по радиоволнам в определённом частотном диапазоне)

Классификация

По функциональному назначению:

Сети хранения данныхСерверные фермыСети управления процессомДомовые сети (Сети SOHO)

Классификация

По сетевым операционным системам:

На основе WindowsНа основе UNIX (подобных)На основе NetWareНа основе Cisco

Сетевая модель OSI

Сетевая модель OSI (англ. open systems interconnection basic reference model — базовая эталонная модель взаимодействия открытых систем) — сетевая модель стека сетевых протоколов OSI/ISO (ГОСТ Р ИСО/МЭК 7498-1-99).Разработана в 1978 год

Сетевая модель OSI

Сетевая модель OSI

Прикладной уровень

Прикладной уровень (уровень приложений; англ. application layer) — верхний уровень модели, обеспечивающий взаимодействие пользовательских приложений с сетью:

Протоколы прикладного уровня: RDP, HTTP, SMTP, SNMP, POP3, FTP, XMPP, OSCAR, Modbus, SIP, TELNET и другие

Уровень представления

Представительский уровень (уровень представления; англ. presentation layer) обеспечивает преобразование протоколов и кодирование или декодирование данных. Запросы приложений, полученные с прикладного уровня, на уровне представления преобразуются в формат для передачи по сети, а полученные из сети данные преобразуются в формат приложений.

Сеансовый уровень

Сеансовый уровень (англ. session layer) обеспечивает поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды не активности приложений.

Транспортный уровень

Транспортный уровень (англ. transport layer) предназначен для обеспечения надёжной передачи данных от отправителя к получателю (уровень надёжности может варьироваться).

Протоколы транспортного уровня: ATP, CUDP , DCCP, FCP, IL, NBF, NCP, SCTP, SPX, SST , TCP (Transmission Control Protocol), UDP (User Datagram Protocol).

Сетевой уровень

Сетевой уровень (англ. network layer) модели предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и «заторов» в сети.

Канальный уровень

Канальный уровень (англ. data link layer) предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть.

Физический уровень

Физический уровень (англ. physical layer) — нижний уровень модели, который определяет метод передачи данных, представленных в двоичном виде, от одного устройства (компьютера) к другому. На этом уровне также работают концентраторы, повторители сигнала и медиаконвертеры.

Критика OSI

Пока комитеты ISO спорили о своих стандартах, за их спиной менялась вся концепция организации сетей и по всему миру внедрялся протокол TCP/IP.

OSI

Когда протоколы ISO были наконец реализованы, выявился ряд проблем:

эти протоколы основывались на концепциях, не имеющих в современных сетях никакого смысла;

спецификации были в некоторых случаях неполными;

по своим функциональным возможностям они уступали другим протоколам;

наличие многочисленных уровней сделало эти протоколы медлительными и трудными для реализации.

OSI

Основных причин неудачи модели OSI четыре:

1. Несвоевременность.2. Неудачная технология.3. Неудачная реализация.4. Неудачная политика.

Сетевой протокол

Сетевой протокол — это набор правил, позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.

Сетевой протокол

Стек протоколов TCP/IP — набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет.

Сетевой протокол

Название TCP/IP происходит из двух наиважнейших протоколов семейства — Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были разработаны и описаны первыми в данном стандарте.

Сетевой протокол

Стек протоколов TCP/IP включает в себя четыре уровня:

прикладной уровень (application layer), транспортный уровень (transport layer), сетевой уровень (Internet layer), канальный уровень (link layer).

Протоколы этих уровней полностью реализуют функциональные возможности модели OSI.

Сетевой протокол

Стек протоколов TCP/IP включает в себя четыре уровня:

прикладной уровень (application layer), транспортный уровень (transport layer), сетевой уровень (Internet layer), канальный уровень (link layer).

Протоколы этих уровней полностью реализуют функциональные возможности модели OSI.

Сетевой протокол

IP адрес

IP-адрес (англ. Internet Protocol Address) — уникальный идентификатор (адрес) устройства (обычно компьютера), подключённого к локальной сети или интернету.

IP адрес

IP-адрес представляет собой 32-битовое (по версии IPv4) или 128-битовое (по версии IPv6) двоичное число.

Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками.

IP адрес

128.10.2.30 — традиционная десятичная форма представления адреса

10000000 00001010 00000010 00011110 — двоичная форма представления этого же адреса

Классы IP - адресов

Сокет

Со́кет (англ. socket — разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.

Сокет

Сетевой порт

Сетевой порт — условное число от 1 до 65535, указывающее, какому приложению предназначается пакет.Если прибегнуть к аналогии, то IP адрес - почтовый адрес дома, а порт - номер квартиры конкретного жильца.

Использование портов позволяет независимо использовать TCP протокол сразу многим приложениям на одном и том же компьютере.

Серверное программирование

Клиент-сервер (англ. Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. Физически клиент и сервер — это программное обеспечение.

Серверное программирование

Серверное программирование

Расположение компонентов на стороне клиента или сервера определяет основные модели взаимодействия :

сервер терминалов — распределенное представление данных;

файл-сервер — доступ к удалённой базе данных и файловым ресурсам;

сервер БД — удалённое представление данных;

сервер приложений — удалённое приложение.

Двухзвенная архитектура

Трезвенная архитектура

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

сервиса или уровня).Высокую производительность (т.к. задачи распределены между

серверами).

Многозвенная архитектура

Web-сервер

Web-серверы - изначально представляли доступ к гипертекстовым документам по протоколу HTTP.

Сейчас поддерживают расширенные возможности, в частности работу с бинарными файлами (изображения, мультимедиа и т.п.).

Серверы приложений

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

Серверы баз данных

Серверы баз данных - используются для обработки пользовательских запросов на языке SQL. При этом СУБД находится на сервере, к которому и подключаются клиентские приложения.

Файл-сервер

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

Прокси-сервер

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

Файрвол

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

Почтовый сервер

Почтовые серверы - представляют услуги по отправке и получению электронных почтовых сообщений как правило на основе протоколов IMAP4 или POP3 / SMTP.

HTTP

HTTP - это протокол описывающий взаимодействие между двумя

компьютерами (клиентом и сервером), построенное на базе сообщений, называемых запрос

(Request) и ответ (Response).

Схема взаимодействия клиента и сервера

HTTP стартовая строка

Каждое сообщение состоит из трёх частей: стартовая строка, заголовки и тело. При этом обязательной является только стартовая строка. METHOD URI HTTP/VERSION,где METHOD — это как раз метод HTTP-запроса, URI — идентификатор ресурса, VERSION — версия протокола (на данный момент актуальна версия 1.1).

Заголовки

Заголовки HTTP (англ. HTTP Headers) — это строки в HTTP - сообщении, содержащие разделённую двоеточием пару параметр - значелние.Пример: Server: Apache/2.2.11 (Win32) PHP/5.3.0Last-Modified: Sat, 16 Jan 2010 21:16:42 GMTContent-Type: text/plain; charset=windows-1251Content-Language: ru

Заголовки

Все заголовки разделяются на четыре основных группы:General Headers («Основные заголовки») — могут включаться в любое сообщение клиента и сервера.Request Headers («Заголовки запроса») — используются только в запросах клиента.Response Headers («Заголовки ответа») — только для ответов от сервера.Entity Headers («Заголовки сущности») — сопровождают каждую сущность сообщения.

Тело сообщения

Тело HTTP сообщения (message-body), если оно присутствует, используется для передачи тела объекта, связанного с запросом или ответом. Пример:message-body = entity-body| <entity-body закодировано согласноTransfer-Encoding>

GET — получение ресурса

Используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса.

GET — получение ресурса

Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»:

/path/resource?par1=value1&par2=value2

HEAD

HEAD - аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения.

POST

POST - применяется для скрытой передачи пользовательских данных заданному ресурсу.

PUT

PUT - применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существует ресурс, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content).

PATCH

PATCH - аналогично PUT, но применяется только к фрагменту ресурса.

DELETE

DELETE - удаляет указанный ресурс, если такой запрос поддерживается сервером.

TRACE

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

CONNECT

CONNECT - преобразует соединение запроса в прозрачный TCP/IP-туннель, обычно чтобы содействовать установлению защищённого SSL-соединения через нешифрованный прокси.

Частичный GET

HTTP позволяет запросить не сразу всё содержимое ресурса, а только указанный фрагмент. Возможность их выполнения необязательна (но желательна) для серверов. Частичные GET в основном используются для докачки файлов и быстрого параллельного скачивания в нескольких потоках.

Условный GET

Метод GET изменяется на «условный GET», если сообщение запроса включает в себя поле заголовка «If-Modified-Since». В ответ на условный GET, тело запрашиваемого ресурса передаётся только, если он изменялся после даты, указанной в заголовке «If-Modified-Since».