Сетевое программирование
Сетевое программирование (англ. 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) — это
топология, в которой узлы образуют регулярную многомерную решётку. При
этом каждое ребро решётки параллельно её оси и соединяет два
смежных узла вдоль этой оси.
Классификация сетей
По типу среды передачи:Проводные (телефонный провод, коаксиальный кабель, витая пара, волоконный-оптический кабель)
Беспроводные (передачей информации по радиоволнам в определённом частотном диапазоне)
Классификация
По функциональному назначению:
Сети хранения данныхСерверные фермыСети управления процессомДомовые сети (Сети SOHO)
Классификация
По сетевым операционным системам:
На основе WindowsНа основе UNIX (подобных)На основе NetWareНа основе Cisco
Сетевая модель OSI
Сетевая модель OSI (англ. open systems interconnection basic reference model — базовая эталонная модель взаимодействия открытых систем) — сетевая модель стека сетевых протоколов OSI/ISO (ГОСТ Р ИСО/МЭК 7498-1-99).Разработана в 1978 год
Прикладной уровень
Прикладной уровень (уровень приложений; англ. 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 — двоичная форма представления этого же адреса
Сокет
Со́кет (англ. 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) и чтобы узнать, не изменился ли он с момента последнего обращения.
PUT
PUT - применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существует ресурс, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content).
TRACE
TRACE - возвращает полученный запрос так, что клиент может увидеть, какую информацию промежуточные серверы добавляют или изменяют в запросе.
CONNECT
CONNECT - преобразует соединение запроса в прозрачный TCP/IP-туннель, обычно чтобы содействовать установлению защищённого SSL-соединения через нешифрованный прокси.
Частичный GET
HTTP позволяет запросить не сразу всё содержимое ресурса, а только указанный фрагмент. Возможность их выполнения необязательна (но желательна) для серверов. Частичные GET в основном используются для докачки файлов и быстрого параллельного скачивания в нескольких потоках.
Top Related