Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СистПриклПрогЗабез(Хихловская).doc
Скачиваний:
25
Добавлен:
10.02.2016
Размер:
961.02 Кб
Скачать

Адресация Internet

Во всех глобальных сетях применима адресация IP, который состоит из 4-х десятичных чисел, разделенных точками:

292.108.11.15

Сетевые вызовы UNIX не могут работать с IP-адресами в таком формате. На программном уровне IP-адреса хранятся в структуре in_addar.t предназначена процедура inet_addr:

#include <arpa/inet.h>

in_addr_t inet_addr(const char *ip_address);

Процедура inet_addr принимает IP адрес в форме строки вида 1.2.3.4. и возвращает адрес в виде структуры соответствующего типа. Если неверное задание формата IP адреса, то возвращаемое значение будет равно (in_addr_t)-1, например, in_addr_t server;

Server = inet_addr(“192.168.11.15”);

Для того, чтобы процесс мог ссылаться на адрес своего компьютера, в заголовочном файле :# include<netinet.h>определена постоянная INADDR_ANY, содержащая локальный адрес своего компьютера в формате in_addr_t.

Порты

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

Для стандартных сервисов отводят известные номера портов по согласованию; dtr или rlogin.

Эти номера портов записаны в файле /exe/ services. Номера портов меньше 1024,считаются зарезервированными для системных процессов UNIX. Остальные доступны.

Interface сокетов

Для хранения информации об адресе и порте адресата существуют стандартная структуры. Обобщенная структура адреса сокета определяется в заголовочном файле <sys/socket.h>;struct sockaddr{

Sa_family_t safamily; /семейство адресов/

Char sa_data[ ]; /адрес сокета/

};

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

Сокеты для связи через сеть имеют следующую форму.

#include <netinet/in.h>

struct sochadar_in{

sa_family_t sin_family; /семейство адресов/

in_port_t sin_port; /номер порта/

struct in_addr sin_addr; / IP адрес/

unsigned char sin_hero[8]; /поле выравнивания/

}

Создание сокета

При любых моделях связи клиент и сервер должны создать абонентские точки (transport end points), или сокеты, которые являются дескрипторами, использующими для установки связи между процессами в сети. Они создаются с помощью системного вызова socket.

#include <sys/cocker.h>

int socket(int domain, int type, int protocol);

Параметр domain определяет коммуникационный домен, в котором будет использоваться сокет. Домен AF_INET определяет , что будет использоваться домен INTERNET. Домен AF_UNIX используется при взаимодействии на одном ПК.

Параметр type определяет тип создаваемого сокета. Значение sock_sreah указывает на создание сокета для работы в режиме виртуальных соединений, а sock_dgram- для работы в режиме пересылок дейтограмм.

Параметр protocol определяет протокол, обычно он задается равным 0. По умолчанию sock_SIKEAM использует TCP, а socket dgram протокол и др.системный вызов sock возвращает неотрицательное целое число, которое является дескриптором файла сокета, т.е. является разновидностью обобщенного файла ввода/вывода UNIX.

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

Основные типы сокетов:

  1. Сокет дейтограмм, через который осуществляется теоретически ненадежная, несвязная передача пакетов;

  2. Сокет потока(stream socket),который осуществляет надежную передачу потока байтов без сохранения границ сообщений; обеспечивает передачу экстренных данных;

  3. Сокет пакетов, через который осуществляется надежная последовательная передача данных без дублирования с предварительным установлением связи; границы сообщений сохраняются;

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

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