Перейти к содержанию
    

Ethernet азы

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

 

придумать самому:).

работает очень просто.

 

перебираете все адреса и обращаетесь в регистр с идентификатором физики, их вроде бы 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне помогает вот этот сайтик все понятно рассказано про езернет кадр

http://www.xserver.ru/computer/protokol/tcpip/3/2.shtml

 

раз сюда переехало то вот ссылка на содержание

http://www.xserver.ru/computer/protokol/tcpip/3/index.shtml

Изменено пользователем сарматъ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Внесу свою лепту.

Стоит посмотреть тему «конечный автомат TCP». не буду приводить ссылки их много поисковики выдают.

Пользуюсь также описаниями стандарта RFC

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот неплохая ссылочка про ТСР, перевод стандарта

http://citforum.ru/nets/tcp/tcpspec.shtml

для тех кто любит читать по русски.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Д-р. Синди Фейт

TCP/IP Архитектура протоколы реализация

 

Э. Таненбаум

Компьютерные сети

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребятки,у меня есть работающий FTP-сервер,самоделка...используется демо-плата от starterkit.ru SK_MLPC2478/1788 c процессором LPC1788, PHY KS8721,диск эмулируется в SDRAM,который на этом модуле имеется....файловая система,TCP-стек и элементы многозадачности-собственной разработки...Извиняюсь за отсутствие документации,ибо писалось в свободное от работы (и от жены:))) время....обращайтесь [email protected], вышлю коды для KEIL 4.73

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребятки,у меня есть работающий FTP-сервер,самоделка...используется демо-плата от starterkit.ru SK_MLPC2478/1788 c процессором LPC1788, PHY KS8721,диск эмулируется в SDRAM,который на этом модуле имеется....файловая система,TCP-стек и элементы многозадачности-собственной разработки...Извиняюсь за отсутствие документации,ибо писалось в свободное от работы (и от жены:))) время....обращайтесь [email protected], вышлю коды для KEIL 4.73

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для ускорения работы по передаче данных с помощью библиотеки 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;
//  }
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

добрый день, форумчане. Может кто нибудь знает,

1) создаю 10base-t,

2) посылают постоянно NLP

3) на паре приема все время получаю последовательность байт 80h 40h 20h 10h 08h 04h 02h 01h 00h

 

Может кто нибудь знает, что она означает? нигде не могу найти описание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...