66497

Механизмы сетевого взаимодействия

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы – изучить программный интерфейс сетевых сокетов, получить навыки организации взаимодействия программ при помощи протоколов Internet и разработки прикладных сетевых сервисов.

Русский

2014-08-22

39.5 KB

1 чел.

Министерство образования и науки Российской Федерации

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Информационная безопасность компьютерных систем»

ЛАБОРАТОРНАЯ РАБОТА № 8

Механизмы сетевого взаимодействия

по дисциплине «Операционные системы»

Выполнил

студент гр. 2088/1  А.С. Никитин

 <подпись>

Руководитель

 Т.В. Степанова

 <подпись>

Санкт-Петербург

2011

1. Формулировка задания

Цель работы – изучить программный интерфейс сетевых сокетов, получить навыки организации взаимодействия программ при помощи протоколов Internet и разработки прикладных сетевых сервисов.

2. Использованные теоретические сведения

3. Результаты работы

3.1. Выполнение индивидуального задания

Разработать на языке C программу transport, демонстрирующую использование основных функций работы с сокетами UNIX. Программа должна порождать четыре процесса — клиент общается с сервером, который является клиентом для двух других серверов, которые выполняют однонаправленную передачу данных между собой через TCP cокеты,  относящиеся к локальному сетевому интерфейсу lo.

При помощи программы transport оценить скорость передачи данных через стек протоколов TCP/IP при использовании протокола TCP.
#include <sys/types.h>

#include <sys/socket.h>

#include <linux/in.h>

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#include <assert.h>

#include <time.h>

#define BUFSIZE    32

#define TIMES      1048576

#define IP         "127.0.0.1"

#define PORT_C_CS  12124

#define PORT_CS_S1 12235

#define PORT_CS_S2 13151

int server2() {

   int fdsocket, fdnsocket, bcount, i;

   char buffer[BUFSIZE];

   struct sockaddr_in ssocket, csocket;

   long int t;

   double s;

   assert((fdsocket = socket(AF_INET, SOCK_STREAM, 0)) >= 0);

   ssocket.sin_family = AF_INET;

   ssocket.sin_port = htons(PORT_CS_S2);

   ssocket.sin_addr.s_addr = htonl(INADDR_ANY);

   assert(bind(fdsocket, (struct sockaddr *) &ssocket, sizeof(ssocket)) >= 0);

   assert(listen(fdsocket, 16) >= 0);

   bcount = sizeof(csocket);

   assert((fdnsocket = accept(fdsocket, (struct sockaddr *) &csocket, &bcount)) >= 0);

   t = clock();

   for (i = 0; i < TIMES; i++) read(fdnsocket, buffer, BUFSIZE);

   t = clock() - t;

   s = (double) t / (double) CLOCKS_PER_SEC;

   printf("S2: C to S2 speed: %lf\n", (double) BUFSIZE / s);

   close(fdnsocket);

   close(fdsocket);

   return 0;

}

int server1() {

   int fdsocket, fdnsocket, bcount, i;

   char buffer[BUFSIZE];

   struct sockaddr_in ssocket, csocket;

   long int t;

   double s;

   assert((fdsocket = socket(AF_INET, SOCK_STREAM, 0)) >= 0);

   ssocket.sin_family = AF_INET;

   ssocket.sin_port = htons(PORT_CS_S1);

   ssocket.sin_addr.s_addr = htonl(INADDR_ANY);

   assert(bind(fdsocket, (struct sockaddr *) &ssocket, sizeof(ssocket)) >= 0);

   assert(listen(fdsocket, 16) >= 0);

   bcount = sizeof(csocket);

   assert((fdnsocket = accept(fdsocket, (struct sockaddr *) &csocket, &bcount)) >= 0);

   t = clock();

   for (i = 0; i < TIMES; i++) read(fdnsocket, buffer, BUFSIZE);

   t = clock() - t;

   s = (double) t / (double) CLOCKS_PER_SEC;

   printf("S1: C to S1 speed: %lf\n", (double) BUFSIZE / s);

   close(fdnsocket);

   close(fdsocket);

   return 0;

}

int clientserver() {

   int fdsocket, fds1socket, fds2socket, fdcsocket, bcount, i;

   char buffer[BUFSIZE];

   struct sockaddr_in ssocket, s1socket, s2socket, csocket;

   long int t;

   double s;

   assert((fds1socket = socket(AF_INET, SOCK_STREAM, 0)) >= 0);

   s1socket.sin_family = AF_INET;

   s1socket.sin_port = htons(PORT_CS_S1);

   inet_aton(IP, &s1socket.sin_addr);

   assert((fds2socket = socket(AF_INET, SOCK_STREAM, 0)) >= 0);

   s2socket.sin_family = AF_INET;

   s2socket.sin_port = htons(PORT_CS_S2);

   inet_aton(IP, &s2socket.sin_addr);

   assert((fdsocket = socket(AF_INET, SOCK_STREAM, 0)) >= 0);

   ssocket.sin_family = AF_INET;

   ssocket.sin_port = htons(PORT_C_CS);

   ssocket.sin_addr.s_addr = htonl(INADDR_ANY);

   assert(bind(fdsocket, (struct sockaddr *) &ssocket, sizeof(ssocket)) >= 0);

   assert(listen(fdsocket, 16) >= 0);

   bcount = sizeof(csocket);

   while (connect(fds1socket, (struct sockaddr *) &s1socket, sizeof(s1socket)) < 0);

   while (connect(fds2socket, (struct sockaddr *) &s2socket, sizeof(s2socket)) < 0);

   assert((fdcsocket = accept(fdsocket, (struct sockaddr *) &csocket, &bcount)) >= 0);

   t = clock();

   for (i = 0; i < TIMES; i++) {

       read(fdcsocket, buffer, BUFSIZE);

       write(fds1socket, buffer, BUFSIZE);

       write(fds2socket, buffer, BUFSIZE);

   }

   t = clock() - t;

   s = (double) t / (double) CLOCKS_PER_SEC;

   printf("CS: CS speed: %lf\n", (double) (BUFSIZE * 3) / s);

   close(fds1socket);

   close(fds2socket);

   close(fdcsocket);

   close(fdsocket);

   return 0;

}

int client() {

   int fdsocket, bcount, i;

   char buffer[BUFSIZE];

   struct sockaddr_in ssocket;

   assert((fdsocket = socket(AF_INET, SOCK_STREAM, 0)) >= 0);

   ssocket.sin_family = AF_INET;

   ssocket.sin_port = htons(PORT_C_CS);

   inet_aton(IP, &ssocket.sin_addr);

   while (connect(fdsocket, (struct sockaddr *) &ssocket, sizeof(ssocket)) < 0);

   for (i = 0; i < TIMES; i++) write(fdsocket, buffer, BUFSIZE);

   close(fdsocket);

   return 0;

}

int main() {

   int pcl;

   if (pcl = fork()) {

       client();

       wait(pcl);

       return 0;

   }

   if (pcl = fork()) {

       clientserver();

       wait(pcl);

       return 0;

   }

   if (pcl = fork()) {

       server1();

       wait(pcl);

       return 0;

   }

   server2();

   return 0;

}

4. Выводы

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


Приложение

Исходные тексты программ


 

А также другие работы, которые могут Вас заинтересовать

45261. Партнерские отношения как PR-ресурс организации: алгоритм работы со спонсором, содержание спонсорского пакета 29 KB
  Спонсорство обязано быть выгодным как самому спонсору так и инициатору проекта. описание проекта и его идеи с акцентом на деталях наиболее важных для спонсора дается оценка значения проекта для города региона и нужных спонсору социальных групп. программу с информацией о месте и времени события сценарий графики перечисление авторов и участников проекта. указание о поддержке проекта государственными структурами авторитетными учреждениями культуры известными и уважаемыми людьми копии официальных решений рекомендательных писем обращений...
45262. Имидж фирмы: структура, этапы формирования и реализации 27 KB
  Имидж фирмы: структура этапы формирования и реализации. Имидж фирмы целостное восприятие фирмы различными группами общественности формирующееся на основе известной им информации о различных сторонах деятельности фирмы. Структура: структуру имиджа фирмы составляют представления людей относительно фирмы которые условно можно разделить на группы: имидж товара или услуги представления людей относительно уникальных характеристик которыми он обладает его отличительных свойств. внутренний имидж фирмы представление сотрудников о фирме...
45263. Имидж ПР-специалиста: профессиональные составляющие и социально-личностные атрибуты 23.5 KB
  Блэку: наличие здравого смыла природное любопытство умение хорошо говорить и излагать вои мысли в письменной форме гибкость выносливость внимание к мелочам хорошее воспитание и образование целеустремленность умение знать и понимать людей чего они хотят. Профессиональная компетентность: психологическая компетентность умение разбираться в людях коммуникативная кть знание факторов эффективного делового общения видов коммуникации психологического воздействия аутопсихологическая кть самоконтроль самоээфективность...
45264. Самопрезентация специалиста как ПР-ресурс: специфика, формы, технологии 25.5 KB
  Самопрезентация специалиста как ПРресурс: специфика формы технологии. Самопрезентация является составной частью сложного процесса формирования профессионального имиджа специалиста. Самопрезентация может быть как начальным этапом какого-либо делового процесса так и отдельным самостоятельным элементом общения. В общем виде самопрезентация представляет собой управление производимым впечатлением умение представить себя и свое дело.
45265. GSM. Регистрация в сети 64 KB
  Регистрация в сети. При каждом включении телефона после выбора сети начинается процедура регистрации рис. Рассмотрим наиболее общий случай регистрацию не в домашней а в чужой так называемой гостевой сети будем предполагать что услуга роуминга абоненту разрешена. По номеру IMSI VLR гостевой сети определяет домашнюю сеть и запрашивает ее HLR.
45266. GSM. Обновление местоположения. Аутентификация и защита 91.5 KB
  Обновление местоположения. Один из вариантов определения местоположения периодически сообщать о расположении объектов в каждой соте. Другой крайний случай уведомлять систему при изменении местоположения мобильной станции широковещательным сообщением. Компромиссное решение используемое в GSM оповещение о местоположении при смене группы сот в зоне местоположения приводящей к ухудшению связи.
45267. GSM. Передача соединения (хэндовер). Роуминг 169 KB
  Переключение каналов между базовыми станциями контролируемыми разными BSC но одним MSC. Переключение каналов между базовыми станциями за которые отвечают не только разные BSC но и разные MSC. Варианты хэндовера В общем случае проведение хэндовера задача MSC. Но в двух первых случаях называемых внутренними хэндоверами чтобы снизить нагрузку на коммутатор и служебные линии связи процесс смены каналов управляется BSC а MSC лишь информируется о происшедшем.
45268. Протоколы сети GSM. Общая структура 37.5 KB
  Уровень 1 физический уровень который использует структуры канала рассмотренные выше по воздушному интерфейсу. Уровень 2 уровень звена передачи данных по Um интерфейс уровень звена передачи данных это модифицированная версия LPDпротокола используемого в ISDN; она называется LPDm. Уровень 3 сигнальный протокол из GSM использующий также модифицированную версию LPD; самостоятельно разделен на 3 подслоя.
45269. Протоколы сети GSM. Подсистемы сигнальных протоколов, использование ОКС№7 (BSSAP, DSSMAP) 97 KB
  Структура протоколов GSM Для передачи сигнальных сообщений между центром коммутации мобильной связи MSC и системой базовой станции Bse Sttion System используются MTP Messge Trnsfer Prt и подсистемы управления соединением канала сигнализации SCCP Signling Connection Control Prt которые являются частями системы ОКС № 7. Основные сведения о подсистеме управления соединением канала сигнализации ОКС № 7 SCCPCSS№7 Система управления соединением канала сигнализации SCCP Signling Connection Control Prt управляет логическими...