Лекция 05 - Сети ЭВМ. Принципы организации. Протоколы

advertisement
СИСТЕМНОЕ И ПРИКЛАДНОЕ
ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ
Лекция 5.
Сети ЭВМ.
Принципы организации.
Протоколы обмена данными.
Принципы организации
компьютерных сетей
Назначение
• Общие ресурсы
• вычислительные мощности
• принтеры
• хранилища данных (бэкапы)
• Общий доступ к информации
• организация централизованного хранения
• коммуникации пользователей
- централизованный (e-mail и т.п.)
- прямой (обмен сообщениями и данными)
3
Виды сетей
• По масштабу и географии:
• Персональные (PAN – Personal Area Network)
- беспроводное окружение ПК
• Локальные (LAN)
- частные (предприятия, учреждения, квартиры)
• Глобальные сети (WAN)
- сети провайдеров
- виртуальные частные сети (VPN)
• Объединения сетей (Internet и др.)
• По каналу связи:
• Наземные («проводные»)
• Беспроводные (стационарные и мобильные)
• Виртуальные (абстрагируются от канала)
4
Технологии передачи данных
• Широковещательные сети
• пакет рассылается всем машинам в сети
• два способа адресации:
- целевой машине (по конкретному адресу)
- всем – многоадресная передача (multicast, по спец.
адресу)
• Передача от узла к узлу
• прокладывается маршрут по цепочке машин
• между каждой парой передача по схеме «один
отправитель и один получатель» (unicast)
5
Топология сетей
• Одноранговые
• равноправные участники
• Древовидные
• часто:
- в «листьях» конечные
пользователи и серверы,
- в «узлах» маршрутизаторы
6
Вопросы выбора топологии
• Назначение сети (эффективность
взаимодействия)
• распределённые вычисления
• запросы к серверу
• коммуникации peer-to-peer
• Баланс надёжности и цены
• связность сети стоит денег
• низкая связность = риск разрывов сети
• Организация адресного пространства
• иерархия сетей и вопросы маршрутизации
• NAT
7
Сетевая модель OSI
•
ISO OSI (Open Systems
Interconnection) Reference Model (1995
год)
Цель: разделение структуры сети по
функциональным уровням/уровням
абстракции:
•
•
•
•
Сервис – «что делает уровень»
Интерфейс – «как обращаться к уровню»
Протоколы – внутренняя специфика
уровня (как он обеспечивает сервис)
8
Уровни модели OSI
Физический (IEEE 802.15 (Bluetooth), IRDA, EIA RS-232, 802.11 WiFi,
GSM,…)
1.
•
реальная передача битов по каналу связи
Канальный (Ethernet, PPP, PPPOE, IEEE 802.11 WLAN)
2.
•
•
защита данных от ошибок передачи
разбиение данных на «кадры», обработка «кадров подтверждения»
Сетевой (IP/IPv4/IPv6, IPsec)
3.
•
•
определение маршрутов пересылки
трансляция логических адресов в физические (IP->MAC)
Транспортный (UDP, TCP, SCTP, RTP)
4.
•
•
обеспечение надёжной передачи данных (порядок, сохранность)
чаще всего, взаимодействие point-to-point
Сеансовый (H.245, NetBIOS, PPTP, PRC, PRCP, SMPP)
5.
•
обеспечивает сеанс связи, обмен информацией и синхронизацию
передачи данных
Уровень представления
6.
•
преобразование протоколов, шифрование/дешифрование данных
Прикладной (HTTP, SMTP/POP3/IMAP, FTP, RDP, XMPP, SNMP, …)
7.
•
уровень взаимодействия пользовательских приложений
9
Стек протоколов TCP/IP
1. Прикладной уровень
•
HTTP, FTP, DNS, …
2. Транспортный
•
TCP, UDP, SCTP, …
3. Сетевой
•
•
IP
+ вспомогательные протоколы
4. Канальный
•
Ethernet, Wireless Ethernet, …
10
Модель OSI vs. TCP/IP
• Теория vs. практика
• OSI
- Сначала стандарты, потом протоколы
- Пришлось дорабатывать модель «под реальность», вводя
подуровни
- Реализация провалилась
• TCP/IP: модель по существующим протоколам
- соответствовала только сетям TCP/IP (напр., технологию
Bluetooth не описывает)
- нет чёткого разграничения концепций служб, интерфейсов и
протоколов
• Связь с установлением соединений и без:
• OSI: на сетевом уровне – оба способа, на транспортном –
только соединения
• TCP/IP: на сетевом уровне – только связь без установления
соединения, на транспортном – оба
11
Сетевое оборудование
• Пассивное – передача и ретрансляция
сигнала
• кабель, розетки, разъёмы и патч-панели,
концентраторы (хабы) и т.п.
• Активное – управление ретрансляцией
• коммутатор (свитч)
- целевая ретрансляция (Ethernet)
• маршрутизатор (роутер)
- в т.ч. беспроводная «точка доступа»)
- определяет направление ретрансляции по IPадресу и таблице маршрутизации
12
Сетевые устройства
по уровням
По уровням:
• Прикладной – шлюз приложения
• Транспортный – транспортный шлюз
• Сетевой – маршрутизатор (роутер)
• Канальный – мост, коммутатор
• Физический – концентратор, повторитель
13
Коммутация
• Концентратор (хаб)
• «спайка» проводов в одной точке
• широковещательная рассылка кадров по сети
• Коммутатор (свитч)
• «знает», где расположены получатели
• организует адресную пересылку
14
Маршрутизация
Маршрутизаторы:
• работают на сетевом уровне
• данные передаются пакетно
• оперируют таблицей маршрутов:
• адрес – направление (порт)
• «алгоритм маршрутизации»
• прокладка альтернативных маршрутов
- из-за разрывов или задержек на основном
15
Алгоритмы маршрутизации
• Статическая маршрутизация
• маршруты заложены при загрузке и не
меняются
• Динамическая маршрутизация
• маршрутизация по вектору расстояний (до
1979)
• маршрутизация с учётом состояния линий
- опрос соседних маршрутизаторов, сбор ответов
и вычисление метрик расстояния (возраст
пакета) и кратчайших путей
16
Network Address Translation
NAT – Трансляция сетевого адреса
• диапазоны локальных адресов:
• 10.0.0.0 – 10.255.255.255/8 (16 777 216 хостов)
• 172.16.0.0 – 172.31.255.255/12 (1 048 576 хостов)
• 192.168.0.0 – 192.168.255.255/16 (65 536 хостов)
17
Network Address Translation
• Работает для TCP/UDP
• Для исходящего пакета:
• подменяет IP-адрес источника на свой
• поле «порт источника» TCP/UPD-пакета
подменяется идентификатором абонента
- из таблицы NAT-блока
• пересчитываются контрольные суммы заголовков
• Для входящего:
• по номеру порта восстанавливается IP и порт
абонента
• пакет корректируется, включая контрольные
суммы, и пересылается абоненту
18
Стандартизация сетей
Источники стандартов:
• ITU – Международный союз электросвязи (ITU-T – сектор
стандартизации)
•
«Рекомендации» по аспектам телекоммуникаций (стандарты для факсов,
видеоконференций, видео/аудио кодеков, оптоволоконных сетей и т.п.)
• ISO – международная организация по стандартизации
•
член ITU-T, вырабатывает международные стандарты для всего на свете
• IEEE – Институт инженеров электротехники и электроники
•
стандарты в области электроники и информатики (стандарты локальных
сетей, беспроводных и проводных способов связи, USB, POSIX)
• IETF – Инженерный совет Интернета (Internet Engineering Task
Force)
•
•
Свод RFC (Request For Comments, «рабочие предложения»), некоторые – в
статусе стандарта (Internet Standart)
Стандарты сетевых протоколов (сетевого-прикладного уровней)
• W3C – Консорциум Всемирной паутины
•
«Рекоммендации» (в статусе стандартов) по технологиям WWW (HTML, CSS,
DOM, XML, URI/URL, SOAP, PNG, SVG, …)
19
Сетевые протоколы
и работа с ними
TCP/IP
• Сетевой уровень:
• ARP (Address Resolution Protocol)
- выяснение MAC по IP для установления получателя
• ICMP (Internet Control Message Protocol)
- диагностические и сервисные функции
• трассировка маршрутов, пинг, управление скоростью
передачи
• Транспортный уровень
• TCP, UDP (организация передачи)
• Прикладной уровень
• DNS
• DHCP
21
User Datagram Protocol
22
Transmission Control Protocol
23
Winsock
• Реализация протоколов TCP/IP в Windows
• Чтобы использовать Winsock2 :
• Добавляем зависимость от библиотеки
(Ws2_32.lib) в опциях проекта
• Включаем заголовок Winsock2.h с объявлениями
функций
• Инициализируем библиотеку
- WSAStartup
• На выходе из приложения завершаем работу с
Winsock DLL
- WSACleanup
24
#include <iostream>
#include <Winsock2.h>
int main()
{
WSADATA wsaData;
int err = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (err != 0) {
// Could not find a usable Winsock DLL
return 1;
}
// Confirm that the WinSock DLL supports 2.2
if (LOBYTE(wsaData.wVersion) != 2
|| HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return 1;
}
// The Winsock DLL is acceptable.
// TODO: place code here
WSACleanup();
}
25
Winsock: основные функции
Name
Description
accept
Permits an incoming connection attempt on a socket.
bind
Associates a local address with a socket.
closesocket
Closes an existing socket.
connect
Establishes a connection to a specified socket.
getaddrinfo
Provides protocol-independent translation from an ANSI host name to an address.
getsockopt
Retrieves a socket option.
ioctlsocket
Controls the I/O mode of a socket.
listen
Places a socket a state where it is listening for an incoming connection.
recv
Receives data from a connected or bound socket.
recvfrom
Receives a datagram and stores the source address.
select
Determines the status of one or more sockets, waiting if necessary, to perform synchronous I/O.
send
Sends data on a connected socket.
sendto
Sends data to a specific destination.
setsockopt
Sets a socket option.
shutdown
Disables sends or receives on a socket.
socket
Creates a socket that is bound to a specific service provider.
There are the most common functions. Look MSDN Winsock Reference for full list of functions
26
User Datagram Protocol
#include <winsock2.h>
int foo() {
// Create a socket
SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s == INVALID_SOCKET)
return exitOnError();
// Bind on 127.0.0.1:20000
sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = htons(20000);
if (SOCKET_ERROR == bind(s, (SOCKADDR*)&address,
sizeof(address)) ) {
return exitOnError(s);
}
// …
27
User Datagram Protocol
// Receve datagram from "client"
sockaddr_in client;
int struct_size = sizeof(client);
char data[1024];
int received = recvfrom(s, data, sizeof(data), 0,
(SOCKADDR*)&client, &struct_size);
if ( SOCKET_ERROR == received )
return exitOnError(s);
// Send datagram to "client"
int sent = sendto(s, data, received, 0,
sizeof(client));
if ( SOCKET_ERROR == received )
return exitOnError(s);
(SOCKADDR*)&client,
// close socket
closesocket(s);
cleanupSockets();
return 0;
}
28
TCP-сервер
// Create socket
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET)
return exitOnError();
// Bind 127.0.0.1:20000
sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = htons(20000);
if ( SOCKET_ERROR == bind(s,
(SOCKADDR*)&address,
sizeof(address) ) )
{
return exitOnError(s);
}
// Start listening
if (listen(s, 1) == SOCKET_ERROR)
return exitOnError(s);
29
TCP-сервер
// Accept connection
SOCKET accepted = accept(s, 0, 0);
if (accepted == INVALID_SOCKET)
return exitOnError(s);
// Receive data from client
char data[1024];
int received = recv(accepted, data, sizeof(data), 0);
if ( SOCKET_ERROR != received ) {
// Send data back to client
int sent = send(accepted, data, received, 0);
if ( SOCKET_ERROR == sent ) {
closesocket(accepted);
return exitOnError(s);
}
}
// close sockets
closesocket(accepted);
closesocket(s);
30
TCP-клиент
// Create socket
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (s == INVALID_SOCKET)
return exitOnError();
// Connect to server on 127.0.0.1:20000
sockaddr_in target;
target.sin_family = AF_INET;
target.sin_addr.s_addr = inet_addr("127.0.0.1");
target.sin_port = htons(20000);
if ( SOCKET_ERROR == connect(s,
(SOCKADDR*)&target,
sizeof(target)) )
{
return exitOnError(s);
}
31
TCP-клиент
char data[128]; memset(data, 1, sizeof(data));
// Send data to server
int sent = send(s, data, sizeof(data), 0);
if ( SOCKET_ERROR != sent ) {
// Receive data from server
int received = recv(s, data, sizeof(data), 0);
if ( SOCKET_ERROR == received )
return exitOnError(s);
std::cout << "bytes received: " << received
<< std::endl;
}
// close socket
closesocket(s);
cleanupSockets();
32
HTTP
• Запрос:
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
Accept: text/html
Connection: close
(пустая строка)
33
HTTP
• Ответ сервера:
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
(далее следует запрошенная страница в HTML)
34
HTTP: пример из MSDN (C#)
using System.Net;
public class WebRequestGetExample {
public static void Main() {
WebRequest request = WebRequest.Create(
“http://example.my/page.html”
);
// If required by the server, set the
credentials.
request.Credentials =
CredentialCache.DefaultCredentials;
35
HTTP: пример из MSDN (C#)
// Get the response.
HttpWebResponse response =
(HttpWebResponse)request.GetResponse();
// Display the status.
Console.WriteLine(response.StatusDescription);
// Get the stream containing content returned by
the server.
Stream dataStream = response.GetResponseStream();
// Do something with stream (read, print to file)
// …
dataStream.Close();
response.Close();
}
}
36
FTP
File Transfer Protocol (пример из Википедии)
220 FTP server ready.
USER ftp //анонимный пользователь
230 Login successful.
PASV
227 Entering Passive Mode (192,168,254,253,233,92)
//Клиент должен открыть соединение на переданный IP
LIST
150 <список файлов>
226 Directory send OK.
CWD incoming
250 Directory successfully changed.
PASV
227 Entering Passive Mode (192,168,254,253,207,56)
STOR gyuyfotry.avi
150 Ok to send data. //Клиент передает содержимое файла
226 File receive OK.
QUIT
221 Goodbye.
37
FTP: пример для Qt
QFtp *ftp = new QFtp(parent);
ftp->connectToHost("ftp.qt.nokia.com");
ftp->login();
ftp->cd("qt");
ftp->get("INSTALL");
ftp->close();
38
World Wide Web
Internet
• 1969 – первое соединение
• 1971 – e-mail и FTP
• к 1984 – система доменных имён DNS
• 1988 – Internet Relay Chat (IRC)
Зарождение World Wide Web:
• 1989 – концепция, HTTP, HTML, URI
• 1990 – диалап-доступ к Internet
• С 1991 WWW доступна в Internet
• 1993 – браузер Mosaic
• 1995 – W3C, WWW доминирует в Internet,
40
Технологии WWW: гипертекст
• Как термин – 1963 (Тед Нельсон)
• Как прототип – 9.12.1968, “The Mother of All
Demos”, Дуглас Энгельбарт
• 80е – первые редакторы
• 1986 – стандарт SGML (предшествовал HTML
и XML)
• 1990 – протокол HTTP и язык разметки HTML
(Тим Бернерс-Ли)
• 2000 – XHTML (Extensible HTML)
• повышенные критерии корректности и валидации
41
Технологии WWW: CGI
• Common Gateway Interface (Общий интерфейс
шлюза)
• 1993 - стандарт интерфейса между веб-сервером и
внешними программами
• при обработке запроса веб-сервер запускает консольную
программу, возвращающую html-страницу в stdout
• позволяет динамически генерировать контент
script-URI = <scheme> "://"
<server-name> ":" <server-port> <scriptpath> <extra-path> "?" <query-string>
• Оптимизации и альтернативы:
• FastCGI (1996) и SimpleCGI (2006)
• модули расширения веб-серверов (напр., mod_php)
- запуск стороннего ПО «внутри» сервера
42
Технологии WWW: CSS
• Cascading Style Sheets (каскадные таблицы
стилей)
• Мотив – недостаток HTML: смешение данных и их
представления
• Принцип наследования
- вложенные элементы наследуют стиль «предка»
• Принцип каскадирования – правила приоритета
при конфликтах:
- стиль браузера наименее приоритетен
- за ним – пользовательский стиль браузера
- выше всех – стиль автора страницы
• здесь унаследованный документом стиль стоит «внизу»
• над ним – стили подключённых к документу внешних
таблиц
• выше – стили, заданные селекторами в тегах style
• ещё выше – стили тега
• самый высокий приоритет – у стилей !important
43
Технологии WWW: DHTML
• Dynamic HTML
• обобщённое понятие для набора
технологий по созданию интерактивных и
анимированных веб-сайтов
• включает
-
HTML
клиентский скриптовый язык (напр., JavaScript)
язык описания представления (напр., CSS)
DOM (объектная модель документа)
44
Технологии WWW: DOM
•
Document Object Model
•
•
•
интерфейс доступа к содержимому
HTML/XHTML/XML
Первый стандарт – в 1998,
последующие
-
2000 - DOM level 2: getElementById и
событийная модель
2004 - DOM level 3: XPath, события
клавиатуры, сериализация в XML
45
Технологии WWW: DOM
Пример дерева документа
Простой пример дерева DOM:
|-> Document
|-> Element (<html>)
|-> Element (<body>)
|-> Element (<div>)
|-> text node
|-> Anchor
|-> text node
|-> Form
|-> Text-box
|-> Text Area
|-> Radio Button
|-> Check Box
|-> Select
|-> Button
46
Технологии WWW: ECMAScript
• ECMA – European Computer Manufacturers
Association
• ECMAScript – общий стандарт языка,
реализуемый различными диалектами
• JavaScript, Jscript, ActionScript
• Исторически - 2 конкурента:
• JavaScript (Netscape Navigator 2.0)
• Jscript (MS IE 3.0) – совместимый диалект
• Затем Netscape передала JS на
стандартизацию в ECMA
47
Технологии WWW: AJAX
• Asynchronous JavaScript and XML
• фоновый обмен данными с сервером
• обновление элементов без полного обновления страницы
• Принципы
• Динамическое обращение к серверу «на лету»
- XMLHttpRequest
- динамическое создание:
• дочерних фреймов
• тега <script>
• тега <img>
• Использование DHTML для изменения содержания страницы
• Форматы передачи данных:
• текст, HTML, JSON, XML, …
48
Технологии WWW: AJAX
49
Технологии WWW: JSON
•
Java Script Object Notation
• текстовый формат обмена данными (2001 год) –
подмножество JavaScript
• применение – сериалиазция и передача структур данных по
сети
•
Пример:
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street", "city": "New York",
"state": "NY", "postalCode": "10021"
},
"phoneNumber": [
{ "type": "home", "number": "212 555-1234" },
{ "type": "fax", "number": "646 555-4567" }
]
}
50
Технологии WWW: jQuery
• Мульти-браузерная библиотека на языке
JavaScript
• цель – упростить написание клиентских скриптов
• отделяет поведение от структуры HTML
• релиз – январь 2006
• Содержит:
•
•
•
•
•
•
перемещение по дереву DOM
визуальные эффекты
анимация
события
Ajax
манипуляция DOM с помощью CSS-селекторов
51
Технологии WWW: jQuery
(пример)
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("p").hide();
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
52
Технологии WWW: Flash
• Мультимедийная платформа Adobe Flash
• Flash Player в качестве плагина – виртуальная машина для
исполнения кода flash-программы
• В HTML-документе – тег object/embed для встроенного
контента
<!DOCTYPE html>
<html>
<head> <title>Flash</title> </head>
<body>
<embed
src=“path/flash.swf"
width="400“
height="300"
type="application/x-shockwave-flash“>
</body>
</html>
53
Ссылки и материалы
• Таненбаум Э., Уэзеролл Д. Компьютерные
сети.
• Лекции Яндекса по компьютерным сетям:
• http://tech.yandex.ru/education/kit/3/talks/526/
• продолжение:
http://tech.yandex.ru/education/kit/3/talks/527/
• Учебная площадка по веб-технологиям
• http://w3schools.com
- HTML, CSS, JavaScript, jQuery, XML, ASP.NET, PHP, SQL,
etc
54
Download