реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Ethernet азы
Golikov A.
сообщение Sep 18 2013, 12:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 222
Регистрация: 17-02-06
Пользователь №: 14 454



Выделено отсюда

придумать самомуsm.gif.
работает очень просто.

перебираете все адреса и обращаетесь в регистр с идентификатором физики, их вроде бы 2. И это один из 3 зафиксированных стандартом регистров, вроде бы номер 8, но могу ошибаться надо почитать. Как только при запросе получите вменяемые данные с идентификатором физики, так значит вы нашли адрес.

все прочие вещи должны идти по этому адресу, иначе физика не ответит...

я видел вашу тему но не стал участвовать потому что был в отпуске. Давайте я все расскажу один раз кратко, а вы потом почитаете в частности.

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

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

2. как сложить 0 и 1 в байты - слова, то есть как из того что идет по проводу получить данные в байтах. Это не простая задача при условии что иногда добавляют всякие проверки четности, избыточность и прочую фигню. Ведь вам надо понять где граница бит, а еще иногда 2 бита превращают в 3 чтобы можно было поймать ошибку и так далее.

3. как превратить последовательность байт в сообщение, то есть как понять где начало, где конец сообщения, оценить что оно предалось и так далее

вот тут проходит первая граница езернета
поскольку нолики и единицы могут быть оптикой, могут идти по проводам, могут по воздуху и так далее. А для этого надо по разному собирать слова, разная кодировка избыточности и разные виды одного бита. Сделали спец микросхемы физического уровня или физику(PHY), отвечающая за 1 и 2 в нашей терминологии.

Эта микросхема отвечает за преобразование данных в сигнал и обратно, она же определяет есть ли ошибки передачи из раздела кто-то в шину говорит одновременно и так далее. Людям показалось разумным чтобы данные на входе были одинаковыми со стороны процессоров, это позволит безбоязненно и незаметно переходить с проводов на оптику, ничего не меняя в софте на проце, ему должно быть все равно. Потому на входе сделали так называемый MII, то есть медия индепендет интерфейс. То есть интерфейс независимый от носителя далее.

А за 3 уровень в нашей терминологии отвечает так называемый ЕМАК контроллер. Он переданные ему данные отправляет по MII в микросхему физики, и следит за тем чтобы данные были переданы. Потому что по стандарту езернет если 2 устройства одновременно передают данные то они должны замолчать, сделать паузу произвольной длинны и передать заново, так сделан арбитраж.

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

и вот тут возникают следующие уровни протокола.

Причем протокол езернета сделан так он берет данные - ваше сообщение, приделывает к нему адрес отправителя и получателя, контрольную сумму - получает новое сообщение. В начале к вашим данным приделают мак адреса.

следующий уровень возьмет ваше сообщение с мак адресами и вашими данными и приделает айпи адрес и контрольную сумму, и получит следующий уровень.

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

возвращаясь к вашему примеру.
Внутри процессора вам дали МАК контроллер, он умеет входные данные снабжать мак адресом, добавлять контрольную сумму и пихать на ружу по MII. Вне процессора есть микросхема физики которая принятые данные по MII пихает в сеть. Ей все равно что это за данные, как и мак контроллеру.

Одно условие эта микросхема должна быть настроена и включена, обычно физика нынче умеет детектировать перепутанные входные - выходные линии, отличать 10 - 100 - 1000 мегобит и прочее... Обычно она делает это все на автомате, и требует только настройки и ресета. Для общения с физикой в рамках MII есть канал связи с адресацией, это единственное что зафиксированно стандартом, все прочее - отсебятина. Потому очень важно знать что у вас за физика, и как с ней работать для настройки, как определить ее адрес и так далее.. Часто это для разных физик совпадает, но различия есть. Доки кстати часто выдают после подписки о неразглашении, потому легче найти чужой код работы с конкретной физикой чем доку, но это детали.

Когда вы найдете и настроите физику, получите ее регистры и увидите что она настроилась на сеть можете попробовать послать первые данные. Я в начале делал так я брал в емак просто писал ХЕЛЛО ВОРЛД, а на компьютере просматривал ваер шарком трафик, и находил пакет с ХЕЛЛО ВОРЛДом, с пометками что это ошибочный пакет и так далее, но находил.

После этого вам нужен будет ТСР стэк. По сути это программа которая ваше сообщение обернет кучей надстроек. Буду добавлены заголовки пакетов, служебная информация, время жизни пакета, айпи адреса отправителя и получателя, индетнтификатор положения и длины данных и прочее прочее прочее... Именно на этом уровне становятся важным айпи адрес, номер порта, до этого момента это все не нужно. И эта же программа будет разбирать входящие сообщения, проверять заголовки, кому они адресованы, распаковывать и отдавать вам уже данные.

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

Сообщение отредактировал IgorKossak - Sep 19 2013, 09:15
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 18 2013, 13:04
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



мне помогает вот этот сайтик все понятно рассказано про езернет кадр
http://www.xserver.ru/computer/protokol/tcpip/3/2.shtml

раз сюда переехало то вот ссылка на содержание
http://www.xserver.ru/computer/protokol/tcpip/3/index.shtml

Сообщение отредактировал сарматъ - Sep 19 2013, 10:34
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Sep 19 2013, 17:01
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 920
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Внесу свою лепту.
Стоит посмотреть тему «конечный автомат TCP». не буду приводить ссылки их много поисковики выдают.
Пользуюсь также описаниями стандарта RFC
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 22 2013, 19:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 222
Регистрация: 17-02-06
Пользователь №: 14 454



вот неплохая ссылочка про ТСР, перевод стандарта
http://citforum.ru/nets/tcp/tcpspec.shtml
для тех кто любит читать по русски.
Go to the top of the page
 
+Quote Post
smk
сообщение Sep 30 2013, 15:29
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 215
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



А есть ли русскоязычная книга, которую можно посоветовать начинающему? Ну чтоб все по очереди и по полочкам.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Oct 7 2013, 04:27
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 920
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Д-р. Синди Фейт
TCP/IP Архитектура протоколы реализация

Э. Таненбаум
Компьютерные сети
Go to the top of the page
 
+Quote Post
romas2010
сообщение Jan 31 2014, 14:48
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 25-11-11
Пользователь №: 68 515



Ребятки,у меня есть работающий FTP-сервер,самоделка...используется демо-плата от starterkit.ru SK_MLPC2478/1788 c процессором LPC1788, PHY KS8721,диск эмулируется в SDRAM,который на этом модуле имеется....файловая система,TCP-стек и элементы многозадачности-собственной разработки...Извиняюсь за отсутствие документации,ибо писалось в свободное от работы (и от женыsm.gif)) время....обращайтесь romik_76@mail.ru, вышлю коды для KEIL 4.73
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Feb 3 2014, 16:12
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(romas2010 @ Jan 31 2014, 18:48) *
Ребятки,у меня есть работающий FTP-сервер,самоделка...используется демо-плата от starterkit.ru SK_MLPC2478/1788 c процессором LPC1788, PHY KS8721,диск эмулируется в SDRAM,который на этом модуле имеется....файловая система,TCP-стек и элементы многозадачности-собственной разработки...Извиняюсь за отсутствие документации,ибо писалось в свободное от работы (и от женыsm.gif)) время....обращайтесь romik_76@mail.ru, вышлю коды для KEIL 4.73

Мало видел примеров FTP серверов под LPC. И что вы можете через FAR скопировать чего-нибудь?


--------------------
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Nov 16 2016, 13:31
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 920
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Для ускорения работы по передаче данных с помощью библиотеки lwip нужно применить такой код
Код
tcp_nagle_disable(pcb);
tcp_write(pcb, Ptr, Size, 0);
tcp_output(pcb);

И в коде функции tcp_output(pcb); закоментировать три строки
Код
...
//  if (tcp_input_pcb == pcb) {
//    return ERR_OK;
//  }
...
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Nov 17 2016, 11:27
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 920
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Функцию tcp_nagle_disable(pcb); можно вызвать один раз при установке соединения.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th October 2017 - 15:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01276 секунд с 7
ELECTRONIX ©2004-2016