Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Разработка интеллектуальных информационных систем или систем, основанных на знаниях




SMTP

 

Основная задача протокола SMTP (Simple Mail Transfer Protocol) заключается в том, чтобы обеспечивать передачу электронных сообщений (почту). Для работы через протокол SMTP клиент создаёт TCP соединение с сервером через порт 25. Затем клиент и SMTP сервер обмениваются информацией пока соединение не будет закрыто или прервано. Основной процедурой в SMTP является передача почты (Mail Procedure). Далее идут процедуры форвардинга почты (Mail Forwarding), проверка имён почтового ящика и вывод списков почтовых групп. Самой первой процедурой является открытие канала передачи, а последней - его закрытие.

Команды SMTP указывают серверу, какую операцию хочет произвести клиент. Команды состоят из ключевых слов, за которыми следует один или более параметров. Ключевое слово состот из 4-х символов и разделено от аргумента одним или несколькими пробелами. Каждая командная строка заканчивается символами CRLF. Вот синтаксис всех команд протокола SMTP (SP - пробел):

HELO         Идентифицирует модуль-передатчик для модуля-приемника (hello).

MAIL         Начинает почтовую транзакцию, которая завершается передачей данных в один или несколько почтовых ящиков (mail).

RCPT        Идентифицирует получателя почтового сообщения (recipient).

DATA            Строки, следующие за этой командой, рассматриваются получателем как данные почтового сообщения. В случае SMTP, почтовое сообщение заканчивается комбинацией символов: CRLF-точка-CRLF.

RSET         Прерывает текущую почтовую транзакцию (reset).

QUIT             Требует выдать ответ ОК и закрыть текущее соединение.

VRFY        Требует от приемника подтвердить, что ее аргумент является действительным именем пользователя. (См. примечание.).

SEND        Начинает почтовую транзакцию, доставляющую данные на один или несколько терминалов (а не в почтовый ящик).

SOML       Начинает транзакцию MAIL или SEND, доставляющую данные на один или несколько терминалов или в почтовые ящики.

SAML       Начинает транзакцию MAIL и SEND, доставляющие данные на один или несколько терминалов и в почтовые ящики.

EXPN        Команда SMTP-приемнику подтвердить, действительно ли аргумент является адресом почтовой рассылки и если да, вернуть адрес получателя сообщения (expand).

TURN        Команда SMTP-приемнику либо сказать ОК и поменяться ролями, то есть стать STMP- передатчиком, либо послать сообщение-отказ и остаться в роли SMTP-приемника.

S: (ожидает соединения)

C: (Подключается к порту 25 сервера)

S:220 mail.company.tld ESMTP CommuniGate Pro 5.1.4i is glad to see you!

C:HELO                                            S:250 domain name should be qualified

C:MAIL FROM: someusername@somecompany.ru

S:250 someusername@somecompany.ru sender accepted

C:RCPT TO:user1@company.tld     S:250 user1@company.tld ok

C:RCPT TO: <user2@company.tld>

S:550 user2@company.tld unknown user account

C:DATA                                            S:354 Enter mail, end with "." on a line by itself

C:from: someusername@somecompany.ru               //чтобы письмо 

C:to: user1@company.tld                           //не было добавлено

C:subject: tema                                   //в категорию спам

C:                                                //

C:Hi!

C:.

S:250 769947 message accepted for delivery

C:QUIT

S:221 mail.company.tld CommuniGate Pro SMTP closing connection

S: (закрывает соединение)


25.HTTP (HyperText Transfer Protocol - протокол передачи гипертекста) был разработан как основа World Wide Web.

Работа по протоколу HTTP происходит следующим образом: программа-клиент устанавливает TCP-соединение с сервером (стандартный номер порта-80) и выдает ему HTTP-запрос. Сервер обрабатывает этот запрос и выдает HTTP-ответ клиенту.

 

Структура HTTP-запроса

HTTP-запрос состоит из заголовка запроса и тела запроса, разделенных пустой строкой. Тело запроса может отсутствовать.

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

Запрос в главной строке состоит из трех частей, разделенных пробелами:

 

Метод (иначе говоря, команда HTTP):

GET - запрос документа. Наиболее часто употребляемый метод; в HTTP/0.9, говорят, он был единственным.

HEAD - запрос заголовка документа. Отличается от GET тем, что выдается только заголовок запроса с информацией о документе. Сам документ не выдается.

POST - этот метод применяется для передачи данных CGI-скриптам. Сами данные следуют в последующих строках запроса в виде параметров.

PUT - разместить документ на сервере. Насколько я знаю, используется редко. Запрос с этим методом имеет тело, в котором передается сам документ.

OPTIONS - Используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. В ответ серверу следует включить заголовок Allow со списком поддерживаемых методов. Также в заголовки ответа может включаться информация о поддерживаемых расширениях.

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

PATCH- Аналогично PUT, но применяется только к фрагменту ресурса.

DELETE - Удаляет указанный ресурс.

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

LINK - Устанавливает связь указанного ресурса с другими.

UNLINK - Убирает связь указанного ресурса с другими.

CONNECT - Преобразует соединение запроса в прозрачный TCP/IP туннель, обычно чтобы содействовать установлению защищенному SSL соединению через не шифрованный прокси.

 

Код состояния является частью первой строки ответа сервера. Он представляет собой целое число из трех арабских цифр[4]. Первая цифра указывает на класс состояния. За кодом ответа обычно следует отделённая пробелом поясняющая фраза на английском языке, которая разъясняет человеку причину именно такого ответа

1xx Informational (рус. Информационный) 2xx Success (рус. Успешно) 3xx Redirection (рус. Перенаправление)           4xx Client Error (рус. Ошибка клиента)

5xx Server Error (рус. Ошибка сервера)

 

Заголовки HTTP (англ. HTTP Headers) — это строки в HTTP-сообщении, содержащие разделённую двоеточием пару параметр-значение. Формат заголовков соответствует общему формату заголовков текстовых сетевых сообщений ARPA (см. RFC 822). Заголовки должны отделяться от тела сообщения хотя бы одной пустой строкой.

Все заголовки разделяются на четыре основных группы:

General Headers (рус. Основные заголовки) Request Headers (рус. Заголовки запроса)

Response Headers (рус. Заголовки ответа) Entity Headers (рус. Заголовки сущности)




Клиент

Сервер и клиент используют протокол транспортного уровня TCP, порт 1000. Программы написаны для ОС Linux, работают только от имени пользователя root.

#include <sys/socket.h>#include <netinet/in.h>#include <stdio.h>int main(){    struct sockaddr_in sa,server; int s; //сокет int e; char buf[80]; s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); sa.sin_family=AF_INET; sa.sin_addr.s_addr=inet_addr("172.16.40.61"); //127.0.0.1 – локальный интерфейс-//петля на компьютере без сети sa.sin_port=0; server.sin_family=AF_INET; server.sin_addr.s_addr=inet_addr("172.16.40.66"); server.sin_port=ntohs(1666); bind(s,&sa,sizeof(sa)); e=connect(s,&server,sizeof(server)); if (e==-1) {printf("unable connect to server \n");return 1;}metka: printf("Input message to server: "); scanf("%s",buf); send(s,buf,strlen(buf),0); e=recv(s,buf,sizeof(buf),0); if (e==-1) printf("error\n"); else {      buf[e]=0;      printf("Server answered: %s\n",buf); }if (strcmp(buf,"Bye")!=0) goto metka; shutdown(s,2);close(s);return 0;}

Сервер   

#include <sys/socket.h>#include <netinet/in.h>#include<stdio.h>int main(int argc,char*argv[]){   struct sockaddr_in sa; int s,sc; //сокеты int e,fl=0; char buf[80]; char mess2[]="Bye"; s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); printf("Socket %d is open\n",s); sa.sin_family=AF_INET; sa.sin_addr.s_addr=inet_addr(argv[1]);//"127.0.0.1"); sa.sin_port=ntohs(1666); bind(s,&sa,sizeof(sa)); listen(s,SOMAXCONN);oncemore: printf("Server ready\n"); sc=accept(s,NULL,NULL); while (1) {      int i;      e=recv(sc,buf,sizeof(buf),0);      if (e<=0) break;      buf[e]=0;       printf("Cliens send: %s %d\n",buf,e);            if ((strcmp(buf,"EXIT")==0)&&(fl==1)) {      fl=0;      send(sc,mess2,sizeof(mess2),0);                  }      scanf("%s",buf);      send(sc,buf,sizeof(buf),0);                          } close(sc); goto oncemore; close(s); return 0;}

     


1.Искусственный интеллект.

Искусственный интеллект - Научное направление, в рамках которого ставятся и решаются задачи аппаратного или программного моделирования тех видов человеческой деятельности, которые традиционно считаются интеллектуальными

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

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

В настоящее время в исследованиях по искусственному интеллекту выделились шесть основных направлений.

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

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

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

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

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

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

 

 

Основные направления исследований в области искусственного интеллекта:


Разработка интеллектуальных информационных систем или систем, основанных на знаниях










Последнее изменение этой страницы: 2018-05-27; просмотров: 205.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...