- •Державний комітет зв’язку та інформатизації України
- •Современные проблемы информационных сетей
- •Инструменты и ресурсы
- •Формат пакета ping.
- •Программа tracert в Windows.
- •Порядок вызова
- •Программа tcpdump (снифер) сетевой анализатор для поиска неисправностией в сети и отладки сетевых приложений.
- •Использование tcpdump
- •Выходная информация, формируемая tcpdump
- •Программа netstat
- •4. Интерфейсы
- •Маршрутная таблица
- •Статистика протоколов
- •Процессы
- •Типы процессов
- •Прикладные процессы
- •Атрибуты процессов
- •Реальный (rgid) и эффективный (egid) идентификаторы группы
- •Жизненный путь процесса
- •Сигналы
- •Взаимодействие между процессами
- •Организация каналов
- •Взаимодействие между процессами
- •Размер канала
- •Функции к разделу fifo
- •Пример приложения клиент-сервер, использующего fifo для обмена данными. Клиент посылает серверу сообщенияHello, а сервер выводит это сообщение на терминал.
- •Права доступа к объекту
- •Идентификаторы и имена в ipc
- •Tcp как потоковый протокол
- •Чтение длины записи
- •Функции разрешения имён
- •Преобразование имён хостов
- •Аккуратное размыкание соединение
- •Вызов shutdown
- •Алгоритм Найгла
- •Программная реализация архитектуры клиент – сервер
- •1.2 Разработка программ в архитектуре “клиент-сервер”
- •Заполнение адресной структуры и получение сокета
- •Привязка известного порта и вывод listen
- •Принятие соединения.
- •Обмен данными
- •Программный интерфейс сокетов
- •Сокеты во FreeBsd
- •Типы соединения
- •Адресация
- •Адресация Internet
- •Interface сокетов
- •Создание сокета
- •Програмныйинтерфейс сокетов
- •Поддержка различных типов сокетов в доменах
- •Пример использования сокетов
- •Sdl-описание протокола сеансового уровня эталонной модели взаимосвязи открытых систем
- •Основные понятия
- •Описание служб
- •Описание протоколов
- •Службы ядра сеансового уровня
- •Блок данных протокола
- •Ясо-описание протокола сеансового уровня
- •Разбиение блока сеансового протокола
- •Описание блока блк-дир
- •Описание блока блк-исп
- •Описание процессов дир и рдт
- •Описание процесса исп
Чтение длины записи
Длина записи считывается в переменную reclen. Функция readvrec возвращает 0(конец файла), если число байтов, прочитанных readn не точно совпадает с размером целого или –1 в случае ошибки.
Размер записи преобразуется из сетевого порядка в машинный.
Проверка того, поместится ли в буфер запись
Проверка того, поместится ли в буфер запись, достаточна ли длина буфера, предоставленного вызывающей программой, для размещения в ней записи. Если места недостаточно, то данные считываются в буфер частями по lenбайт, то есть по сути отбрасываются. Изъяв из потока отбрасываемые данные, функция присваивает переменнойerrnoзначениеEMSGSIZEи возвращает –1.
Считывание записи
Считывается сама запись, readvrecвозвращает –1,0 илиreclenв зависимости от того, вернула лиreadnкод ошибки, неполный счётчик или нормальное значение.
Функция strlen
Функция strlenвозвращает длину строкиsl(число символов в строкеslдо нулевого символа в строке, обозначающего её конец).
Функции ntohe и ntohs
Преобразуют целое число из сетевого порядка в машинный. В современных компьютерах целые числа хранятся по-разному в зависимости от архитектуры процессора.
Например, число $12345678 может храниться в памяти:
big endian(Motorola)тупоконечные 12 34 56 78
little endian(INTEL)остроконечные 78563412
Терминология введена Коэном в 1981г.
Определить формат, применяемый в конкретной машине, можно с помощью следующей программы:
#include<stdio.n>
#include<sys/types.n>
#include”etcp.h”
int main(void)
{
u_int32_t x=0x12345678;/*305419896*/
unsigned char xp=(char)&x;
printf(“%0x%0x%0x%0x)n”;
xp[0],xp[1],xp[2],xp[3];
exit(0);
}
Формат хранения байтов важен, так как машины с разным принципом хранения часто общаются друг с другом по протоколам TCP/IP. Такая информация, как адреса отправления и назначения, номера портов, длина дейтограмм, размеры окон, представляются в виде целых чисел, необходимо их одинаково интерпретировать.
Чтобы обеспечить взаимодействие компьютеров с разными архитектурами, величины, относящиеся к протоколам, передаются в сетевом порядке, который по определению является тупоконечным. Сетевые адреса, номера портов, другие данные, представленные в заголовках, задаются программистом, и их нужно преобразовывать в сетевой порядок.
Функции htoneиhtonsвозвращают 32 и 16-разрядные числа в сетевом порядке. Функцииntoneиntonsвозвращают целое число в машинном порядке. На любой машине эти функции следует применять всегда, остальное делает система.
#include<netinet/in.h>
u
В сетевой
uint16_t htons(uint16_t host16);
u
В машинный
uint16_t ntohs(uint16_t network16)
Функции разрешения имён
Gethostbynameиgetservbyname
Преобразование имён хостов
Эти функции возвращают значение, представленные в сетевом порядке. Фрагмент программы:
Struct servent*sp;
Struct sockaddr_in*sap;
Sp=getservbyname(name,protocol);
Sap->sin_port=htons(sp->ss_port);
Приведёт к ошибке, если исполняется не на тупоконечной машине.