
- •1. Профили протоколов internet
- •1.1. Определения
- •1.2. Тракт телеобработки данных (тод).
- •1.3 Функции тракта тод
- •2. Базовые профили протоколов internet и семиуровневая модель открытых систем
- •2.1 Наборы функций тракта тод
- •2.2 Тракт тод и модель osi
- •2.2 Модель osi и Internet
- •2.4 Базовые профили протоколов Internet
- •3.Канальные протоколы распределенных сетей
- •3.1 Технология Ethernet
- •3.2 Форматы кадров Ethernet
- •3.3 Схема протокола логического контроля соединения (llc)
- •4. Протокол arp и rarp
- •4.1 Протокол arp
- •4.3 Формат сообщения arp
- •4.4. Порядок преобразования адресов в arp- таблице
- •4.5 Протокол rarp
- •5. Адресация в internet
- •5.1 Базовая адресация в Internet.
- •5.2 Имена сетей и узлов.
- •5.3. Подсети
- •5.4 Маска подсети
- •6. Заголовок дейтаграммы iPv4
- •7. Заголовок дейтаграммы ip V.6
- •8 Функции сетевой маршрутизации
- •8.1 Таблицы маршрутизации.
- •8.2. Прямая ip-маршрутизация.
- •8.3. Косвенная маршрутизация
- •8.4 Формирование таблиц ip-маршрутизации
- •9. Маршрутизация протокола ip
- •9.1. Сетевая маршрутизация
- •9.2 Протокол rip
- •10. Протокол ospf
- •11. Заголовок и протокол udp
- •11.1 Протокол udp
- •12. Протокол tcp
- •12.1 Формат заголовка тср
- •12.2. Протокол tcp. Установление соединения
- •12.3 Протокол tcp. Передача данных.
- •12.4 Механизм окна tcp. Управление потоком данных
- •13. Сокеты
- •13.1 Основы сокетов
- •13.2 Серверы
- •13.3 Локальные сокеты
- •13.4 Internet-Domain сокеты
- •13.5 Пары сокетов
- •14.1. Концепция Word Weide Web (Web или www) .
- •14.2 Гипертексты
- •14.3 Html
- •14.5 Url (Universal Resource Locator).
- •14.6 Протокол http
13. Сокеты
13.1 Основы сокетов
Развитие Internet потребовало разрешить проблему: «Как обеспечить сетевое взаимодействие различных компьютеров (Hard) и установленных на них различных ОС (Soft) ?»
Концептуальное решение проблемы:
1) Установить единство протоколов.
2) Установить единство интерфейсов для протоколов прикладного уровня, подключаемых к вычислительной сети.
Предложено ввести Сокеты (Sockets – точки коммуникационного доступа внутри области коммуникационной сети.
Сокет (Sockets)- функциональный элемент представительского уровня для двунаправленной связи, который может использоваться для взаимодействия с другим процессом на одной и той же машине или с процессом, запущенным на других машинах. Программы Интернета такие как Telnet, rlogin, FTP, talk , и World Wide Web используют сокеты.
Каждый сокет характеризуется:
- протоколом,
- локальным адресом (инициатора соединения),
- удаленным портом.
Например, можно получить WWW-страницу от сервера Web, используя программу Telnet , так как они обе используют сокеты для сетевого взаимодействия. Для открытия подключения с сервером WWW на www.codesourcery.com, необходимо использовать telnet www.codesourcery.com 80. Константа 80 определяет подключение к Web серверу. Если после того, как подключение будет установлено, передать команду get /, то Web серверу через сокеты будет отправлено сообщение, на которое он ответит, передав исходный текст домашней HTML страницы и затем закроет подключение.
Пример:
% telnet www.codesourcery.com 80
Trying 206.168.99.1...
Connected to merlin.codesourcery.com (206.168.99.1).
Escape character is '^]'.
GET /
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Основы создания сокетов
При создании сокета, необходимо определить три параметра: стиль взаимодействия, пространство имен, и пртокол.
Стиль взаимодействия контролирует, как сокет обрабатывает передаваемые данные, и определяет количество партнеров взаимодействия. Через сокеты данные передаются блоками (пакетами). Стиль взаимодействия определяет, как эти пакеты будут обработаны и как они передаются от отправителя к получателю.
Стили соединения гарантируют доставку всех пакетов в том порядке, в каком они были отправлены. Если во время передачи пакеты были потеряны или доставлены в неправильном порядке, получатель автоматически отправляет запрос на их повторную передачу. Стиль соединения напоминает телефонный звонок: адреса отправителя и получателя фиксируются в начале соединения, при установке подключения.
Стили датаграм не гарантирует доставки и правильного порядка прибытия. Пакеты могут быть потеряны или переупорядочены в пути из-за сетевых ошибок. Каждый пакет должен быть помечен его адресатом, и нет гарантии, что он будет доставлен. Система гарантирует только "максимальные усилия", поэтому пакеты могут исчезнуть или прибыть в различном порядке. Сокет стиля датаграмы ведет себя сходно с почтой. Отправитель определяет адрес получателя для каждого индивидуального сообщения.
Пространство имен определяет, как записаны адреса сокета (socket addresses). Адрес сокета идентифицирует один конец подключения сокета. Например, адреса сокета в локальном пространстве имен являются обычными именами файлов. В пространстве имен Интернет адрес сокета состоит из Интернет адреса ( IP адрес) главного компьютера, присоединенного к сети и номера порта, который идентифицирует сокет среди множества сокетов на том же главном компьютере.
Протокол определяет, как передаются данные. Существуют следующие виды протоколов: TCP/IP , первичные сетевые протоколы, используемые Интернетом; сетевой протокол AppleTalk ; локальный UNIX протокол взаимодействия. Не все комбинации стилей, пространств имен и протоколов поддерживаются.
Системные вызовы
Виды системных вызовов:
socket - создать сокет
closes - уничтожить сокет
connect - создать соединение между двумя сокетами
bind - привязать сокет к порту сервера
listen - настройка сокета для принятия подключений
accept - принять запрос на соединение и создать сокет для процесса взаимодействия
Сокеты представляются дескрипторами файлов.
Создание и уничтожение сокетов
С помощью функций socket и close создаются и уничтожаются сокеты. При создании сокета, необходимо определить три параметра сокета: пространство имен, стиль взаимодействия и протокол.
Для указания пространства имен используются константы, начинающиеся с PF_ (сокращение "семейство протокола"). Например, PF_LOCAL или PF_UNIX определяют локальное пространство имен, и PF_INET определяет Интернет пространство имен.
Второй параметр, стиль взаимодействия, представляет собой константу, начинающуюся с SOCK_ . SOCK_STREAM определяет стиль взаимодействия соединение, SOCK_DGRAM - стиль датаграмы.
Третий параметр, протокол, определяет механизм нижнего уровня для передачи и получения данных. Для каждой комбинации пространство имен - стиль взаимодействия существует свой протокол.
Для каждой пары существует лучший протокол, поэтому можно указать 0, что соответствует этому протоколу. Если команда socket выполнена успешно, в качестве результата возвращается дескриптор файла для сокета. С помощью команд read и write , можно читать и записывать данные в сокет.
Вызов connect
Для создания соединение между двумя сокетами, клиент вызывает connect , передавая адрес сокета сервера для подключения. Клиент - процесс, инициализирующий соединение, а сервер - процесс, ожидающий разрешения соединения. Клиент посылает запрос connect , чтобы инициализировать соединение между локальным сокетом и сокетом сервера, переданным в качестве второго параметра. В качестве третьего параметра передается длина, в байтах, адресной структуры, на которую указывает второй параметр.
Отправка данных
Любая техника записи в дескриптор файла, может использоваться при записи в сокет. Функция send , определенная для дескрипторов файлов сокета, аналогична функции write с несколькими дополнительными параметрами.