- •Томский государственный университет систем управления и радиоэлектроники (тусур)
- •Сети эвм и телекоммуникации.
- •1. Цели и задачи дисциплины, ее место в учебном процессе 6
- •2. Содержание курса 6
- •3. Лабораторные работы 13
- •Введение
- •1. Цели и задачи дисциплины, ее место в учебном процессе
- •1.2. Задачи изучения сетей и телекоммуникаций.
- •1.3. Перечень дисциплин, усвоение которых студентами необходимо для изучения баз данных и экспертных систем.
- •2. Содержание курса
- •2.1 Лекции (54 часа)
- •2.2 Темы для самостоятельного изучения. Отчет в виде рефератов и докладов.
- •2.3 Экзаменационные вопросы
- •2.3.1 Экзаменационные билеты
- •3. Лабораторные работы
- •3.1 Работа с WinSocket
- •3.1.1 Определения
- •3.1.2 Создание сервера
- •3.1.3 Создание клиента
- •3.2 Лабораторная работа №1 Работа с сокетами Беркли
- •Глава 1 Работа с WinSocket данного пособия.
- •Протокол передачи времени Time
- •Протокол Finger
- •Задание на лабораторную работу:
- •3.3 Лабораторная работа №2 Протоколы smtp и pop3
- •3.4 Лабораторная работа №3 Моделирование протоколов канального уровня
- •3.5 Лабораторная работа №4 Браузер и ftp-клиент
- •3.6Лабораторная работа №5. Html, Javascript технологияPhp html и Javascript
- •Технология php
- •3.7Лабораторная работа №6. Технология xml
- •3.8 Лабораторная работа №7 Маршрутизация в вс
- •3.9 Лабораторная работа №8 Кэширующий http прокси-сервер и socks5 прокси-сервер
- •3.10 Лабораторная работа №9 распределенныйUdPсервер/udPклиент
- •3.11 Лабораторная работа 10. Перехват сетевых пакетов
- •3.12 Лабораторная работа 11.SasLаутоинтефикация
- •Литература
Протокол передачи времени Time
Данный протокол предназначен для передачи показаний времени по сети. В сети работают так называемые time-серверы, у которых можно запросить точное время. В ответ на запрос клиента, сервер возвращает время в секундах (32х битное двоичное число), прошедшее с 00:00:00 1 января 1900 года.
Этот протокол может использовать в качестве транспортной службы как UDP-протокол, так и TCP-протокол. Стандартный порт протокола - 37.
Если в качестве транспортной службы используется TCP, взаимодействие осуществляется так:
SERVER: прослушивает 37 порт, ожидая соединений;
CLIENT: запрашивает соединение с портом 37 сервера;
SERVER: посылает время в виде двоичного 32х битного числа;
CLIENT: получает время;
SERVER: закрывает соединение;
CLIENT: закрывает соединение;
Если сервер по каким-либо причинам не может определить время на своей стороне, он отказывается от соединения, не посылая ничего.
Если в качестве транспортной службы используется UDP, взаимодействие осуществляется так:
SERVER: прослушивает 37 порт, ожидая соединений;
CLIENT: посылает серверу пустой UDP-пакет, номер порта = 37;
SERVER: получает пустой UDP-пакет;
SERVER: посылает UDP-пакет, содержащий время в виде двоичного 32х битного числа;
CLIENT: получает UDP -пакет, содержащий время;
Если сервер по каким-либо причинам не может определить время на своей стороне, он отбрасывает полученный пустой UDP-пакет и не посылает ничего в ответ.
Протокол Finger
Сетевой протокол Finger предназначен для предоставления информации о пользователях удалённого компьютера. Стандартный порт протокола - 79. Используя данный протокол, вы можете получить данные о списке пользователей, которые работают в данный момент на интересующей вас ЭВМ, о конкретном пользователе (дата последнего сеанса входа в систему и т.д.), о списке загруженных задач, о типах интерфейсов (например, терминалов). Протокол Finger обеспечивает интерфейс для удаленной информационной программы пользователя (RUIP - Remote User Information Program).
Данный протокол базируется на TCP. Локальная ЭВМ осуществляет TCP-соединение с удаленным узлом через указанный порт. После этого становится доступной программа RUIP и пользователь может посылать ей свои запросы. Каждый запрос представляет собой строку текста. RUIP, получив запрос, анализирует его и присылает ответ, после чего соединение закрывается.
Любые пересылаемые данные должны иметь формат ASCII, не иметь контроля по четности и каждая строка должна завершаться последовательностью CRLF (ASCII 13, за которым следует ASCII 10).
Диалог двух машин через TCP выглядит следующим образом:
SERVER: слушает порт 79;
CLIENT: устанавливает соединение на 79 порт;
CLIENT: посылает имя пользователя;
SERVER: посылает информацию о запрашиваемом пользователе;
CLIENT: принимает;
SERVER: закрывает соединение;
CLIENT: закрывает соединение;
Пример реализации протокола Daytime
В качестве примера, приводится текст программы, реализующей работу Daytime Protocol’а.
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/param.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <memory.h>
#include <unistd.h>
#include <time.h>
#define strHost "212.192.122.109"
#define Port 13
int main(void) { int s, res;
int nCharRecv;
struct sockaddr_in clnt_sin;
char timebuf[128];
if ((s=socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("Cannot create socket!!!!\n");
return -1;
}
memset ((char *)&clnt_sin, '\0', sizeof(clnt_sin));
clnt_sin.sin_family = AF_INET;
clnt_sin.sin_addr.s_addr = inet_addr(strHost);
clnt_sin.sin_port = htons(Port);
res = connect (s, (struct sockaddr *)&clnt_sin, sizeof(clnt_sin));
if (res == -1) { perror("connect");
}
else { printf("Connected\n");
}
memset(timebuf, '\0', 128);
nCharRecv = recv(s, &timebuf, sizeof(timebuf), 0);
if (nCharRecv == -1) { printf("Cannot get info from server!!!!\n");
perror("Receive");
return -1;
}
close(s);
printf("Time: %s\n", timebuf);
return 0;
}