Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TCP или UDP?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
Страницы: 1, 2
blackfin
Цитата(Rst7 @ Jan 19 2008, 16:46) *
Это откуда такое ограничение?
А что, существуют switch'и на большее число портов?
Rst7
Цитата
А что, существуют switch'и на большее число портов?


А что, соединить два или более свичей - это уже не одна сеть?
Aprox
Цитата(blackfin @ Jan 19 2008, 13:38) *
Новые клиенты могут появиться, если пользователь запустит несколько экземпляров браузера на одном компьютере.. Что тогда?

Да, на такую возможность следует заложиться. Hапример, ограничить число подключений к серверу одной штукой.
Цитата
Согласен, если число пакетов в секунду велико, а размер каждого пакета мал, переход к RAW-ethernet пакетам может дать существенный выигрыш в производительности сети.. Но стоит ли рассчитывать на устойчивую работу сети на пределе производительности?

Именно это я и хочу проверить. Искал похожие примеры реализаций, но не нашел. Приходится самому.
Цитата
Кроме того, при использовании switch'а лишенного внутреннего буфера для хранения пакетов могут появиться проблемы с коллизиями пакетов в сегменте switch<->PC. Как следствие - потеря пакетов и т.д. и т.п.
Впрочем, насколько мне известно, Вы эту проблему уже обсуждали:

Да, сегмент switch<->PC предполагается делать на 1Г Ethernet. Такие свитчи имеются а продаже. Сейчас я не готов обсуждать, какие подводные камни ждут на этом пути. Будем пробовать, и набивать шишки.



Цитата(GL_basik @ Jan 18 2008, 12:09) *
Если есть время сначала создавать устройство, потом писать под него софт, а потом под устройство подстраивать топологию сети, тогда можно использовать все что угодно. Но времени обычно нет. А обычно есть сеть и есть информационная система, которая собирает данные о состоянии сети. Соотвественно при проектировании устройства нужно ориентироваться на стандартные протоколы. Чтоб монтажник мог придти в подъезд обжать кабель подключить девайс и уйти, а дейвайс сам бы себя сконфигурил и вписался в информационную систему. Здесь уж RAW пакетами не обойтись...

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

Прочитал в теме про упоминание AJAX - если кто то занимался этим, может наставит на истинный путь. Задача у меня, как говорили выше, классическая. Управление девайсом через WEB-интерфейс. AJAX привлекает:

1. Малая нагрузка на контроллер со стороны Ethernet

2. Динамическое изменение данных на странице без ее перезагрузки.

Возможно у кого нибудь есть наработки по этой библиотеке. Пробовал работать с JsHTTPRequest - эта библа построенна на основе AJAX - но она заточена под крупные сервера с поддержкой PHP.
Rst7
Цитата
Возможно у кого нибудь есть наработки по этой библиотеке.


Наработок нет. Я смотрел, чего там происходит, вроде не особо сложно реализовать. Самого в принципе интересует, можем скооперироваться...
prottoss
Цитата(Rst7 @ Feb 8 2008, 20:42) *
Наработок нет. Я смотрел, чего там происходит, вроде не особо сложно реализовать. Самого в принципе интересует, можем скооперироваться...
Я , честно говоря, не сильно знаком с JavaScript - сложного там ничего нет, но не знание методов объектов и прочих фичей напрягает, потому как двигаю с нуля проект. Посмотрев на некоторые библиотеки, сделал вывод, что написать надо свою, компактную, потому как меньше 15 кБ не видел, да и те, как говорил выше заточенны под взаиможействие с РНР на серверной стороне... Вот счас грызу XMLHTTPRequest - это, по моему, основной объект, через который можно что то серверу послать.
prottoss
Все оказалось на много проще, чем я думал....пока smile.gif Вот HTML-страница
Код
<script type="text/javascript" language="JavaScript">
//Кроссбраузерная функция создания XMLHttpRequest:
function getXmlHttp()
{
var xmlhttp;
  try
{
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
catch(e)
{
   try
  {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  catch (E)
  {
      xmlhttp = false;
    }
  }
  if(!xmlhttp && typeof XMLHttpRequest!='undefined')
{
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function doLoad(send_value)
{
var xmlhttp = getXmlHttp();
xmlhttp.open('POST', 'http://192.168.1.4./test.htm'+send_value, true);
xmlhttp.onreadystatechange = function()
{
   if(xmlhttp.readyState == 4)
  {
      if(xmlhttp.status == 200)
    {
        document.getElementById('recv_txt').value = xmlhttp.responseText;
      }
   }
}
  xmlhttp.send(null);
}
</script>

<form method="post" id="f" enctype="multipart/form-data" onsubmit="return false">
Send Text: <input type="text" name = "stxt" id="send_txt">
<input type="button" value="Send" id="snd" onclick="doLoad(document.getElementById('send_txt').value)">
Recv Text: <input type="text" name= "rtxt" id="recv_txt">
</form>
Я думаю, объяснений не надо. Если что то не понятно - смотрите здесь

http://javascript.itsoft.ru/ и здесь http://xmlhttprequest.ru/#use

Все, больше ниего не надо. Вот лог общения при вводе строки и нажатии на кнопку Send

Цитата
POST /test.htm1234567890 HTTP/1.1
Accept: */*
Accept-Language: ru
Referer: file://E:\TEMP\2\index.htm
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 192.168.1.4.
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.0 200 OK
Server: TinyNET 3.0 server SAM7X256-EK based system.
Connection: Close

Hello, World!
Aprox
Цитата(prottoss @ Feb 8 2008, 16:22) *
Привет всем!

Прочитал в теме про упоминание AJAX - если кто то занимался этим, может наставит на истинный путь. Задача у меня, как говорили выше, классическая. Управление девайсом через WEB-интерфейс. AJAX привлекает:

1. Малая нагрузка на контроллер со стороны Ethernet

2. Динамическое изменение данных на странице без ее перезагрузки.

Возможно у кого нибудь есть наработки по этой библиотеке. Пробовал работать с JsHTTPRequest - эта библа построенна на основе AJAX - но она заточена под крупные сервера с поддержкой PHP.


Я пользовал AJAX для указанных задач. Из всех библиотек больше всего понравилась простотой и компактностью XHConn, представленная в http://xkr.us/code/javascript/XHConn/ Посмотрите этот сайт, там есть и пример.
Aprox
Цитата(Aprox @ Feb 9 2008, 18:04) *
Я пользовал AJAX для указанных задач. Из всех библиотек больше всего понравилась простотой и компактностью XHConn, представленная в http://xkr.us/code/javascript/XHConn/ Посмотрите этот сайт, там есть и пример.

Необходимо добавить, что когда я рыскал в поисках подходящих инструментов для динамической подгрузки страниц WEB-сервера, то понял- это целый отдельный мир WEB-дизайна, в котором запросто утонуть имея другую профессию, например, электронщика- схемотехника. Можно запросто забыть, о чем собственно речь. Поэтому решил не углубляться в дебри, а ограничился минимальным- декларацией класса XHConn и работой с DOM в javasckript. Сама же страница и ее элементы рисуются традиционно, через HTML. По-моему, это самый быстрый и простой путь освоения AJAX непрофессионалу WEB-дизайна.

Если есть время на освоение нового, то советую обратить внимание на Flash -технологии создания WEB-страниц. Это достойный конкурент AJAX. И по гибкости, и по графике, и по управлению, и по динамике, и по компактности. Плюс к тому, не зависит от заморочек броузеров. В Flash уже всторены разные классы по обмену данными http-запросами. Причем, от самого простых, до сложных XML с автоматическим парсингом. Hо увлекаться схемотехнику не следует, а то можно запросто утонуть.
prottoss
Цитата(Aprox @ Feb 10 2008, 15:13) *
дабы не утонуть smile.gif пока решил ограничится тем, о чем говорил выше - XMLHTTPRequest - пока для меня самое то. Полан взаимодействия примерно такой:

1.Клиент формирует запрос POST/GET на скрипт-файл c параметрами. Например GET /form1.sc

2. На стороне сервера открывается соответсвующий файл и парсится.

3. При необходимости выдаются данные клиенту...

По третьему пункту есть вариант выдавать (если GET-запрос) не данные а сразу функцию JavaScript которая рассаживает данные в форме на свои места.



Что нужно на сервере:

1. Таблица описателей переменных.

2. Функции работы с этими переменными.



Элемент таблицы может выглядеть примерно так:

Код
/* MIB object class */
typedef struct __MIB_OBJ
{
   MIB_TYPE type; /* Type of object */
MIB_ACCESS access; /* Access type */

UINT16 id;/* object ID */
   CHAR   *name; /* Name - zero terminated string */
void   *value; /* Value */
UINT16   n_len; /* Name length */
UINT16   v_len; /* Value length */

} MIB_OBJ;




Идентификация переменной по ID или name. Таким образом ЮЗЕРУ необходимо знать имена переменных в девайсе и/или их идентификаторы. ЮЗЕР создает HTML-файл и скрипты для того, что бы сервер знал, как располагать в ответе переменные и стоит ли их располагать там вообще. Кроме того сервер по таблице может определять, как работать с переменными.



Когда все отработаю, естественно встанет вопрос о защите данных. Здесь возможен вариант проверки ID сессиии.... Или нет? Или еще чего? Пока не знаю
Rst7
Цитата
Когда все отработаю, естественно встанет вопрос о защите данных. Здесь возможен вариант проверки ID сессиии.... Или нет? Или еще чего? Пока не знаю


Методов есть много. Один из них - это действительно ID сессии. Однако большой минус, что логин и пасс надо передавать в открытом виде. Тут на помощь может прийти Digest-авторизация - там достаточно безопасный логин, и можно сделать так, что любой доступ к страничке будет с аутентификацией, а пользователю ввести логин с паролем нужно будет только один раз. В реализации - достаточно просто, из криптографии нужен только MD5.

Однако, такие способы не могут противостоять атакам Man-In-The-Middle (т.е. перехват и подмена траффика). Если надо противостоять таким методам взлома, надо делать SSL/TLS (HTTPS). Есть еще способ, который представляет из себя некую комбинацию. Все Ваши устройства находятся в одной сети (ну скажем /24), отделенной от большого итранета/интернета роутером. На роутере поднимается SSH-туннель в подсетку и более никакого доступа не дается. Тогда по большой сети данные ходят безопасно. Реализовывать SSL/TLS или SSH на камне в каждом устройстве я бы поберегся - надо реализовывать кучу криптографии, протоколы и т.д. - тут хорошим решением будет свой роутер (ну хоть на Rainbow wink.gif ) с поднятым линухом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.