Golikov 0 18 сентября, 2013 Опубликовано 18 сентября, 2013 (изменено) · Жалоба Выделено отсюда придумать самому:). работает очень просто. перебираете все адреса и обращаетесь в регистр с идентификатором физики, их вроде бы 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 есть канал связи с адресацией, это единственное что зафиксированно стандартом, все прочее - отсебятина. Потому очень важно знать что у вас за физика, и как с ней работать для настройки, как определить ее адрес и так далее.. Часто это для разных физик совпадает, но различия есть. Доки кстати часто выдают после подписки о неразглашении, потому легче найти чужой код работы с конкретной физикой чем доку, но это детали. Когда вы найдете и настроите физику, получите ее регистры и увидите что она настроилась на сеть можете попробовать послать первые данные. Я в начале делал так я брал в емак просто писал ХЕЛЛО ВОРЛД, а на компьютере просматривал ваер шарком трафик, и находил пакет с ХЕЛЛО ВОРЛДом, с пометками что это ошибочный пакет и так далее, но находил. После этого вам нужен будет ТСР стэк. По сути это программа которая ваше сообщение обернет кучей надстроек. Буду добавлены заголовки пакетов, служебная информация, время жизни пакета, айпи адреса отправителя и получателя, индетнтификатор положения и длины данных и прочее прочее прочее... Именно на этом уровне становятся важным айпи адрес, номер порта, до этого момента это все не нужно. И эта же программа будет разбирать входящие сообщения, проверять заголовки, кому они адресованы, распаковывать и отдавать вам уже данные. это езернет на пальцах. Помню в свое время мне не хватало именно такого простого рассказа о том что там и куда. Для меня сейчас многое очевидно, но первый раз может показаться не понятным потому задавайте конкретные вопросы не стесняясь я буду уточнять какие то моменты. Изменено 19 сентября, 2013 пользователем IgorKossak Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
сарматъ 0 18 сентября, 2013 Опубликовано 18 сентября, 2013 (изменено) · Жалоба мне помогает вот этот сайтик все понятно рассказано про езернет кадр http://www.xserver.ru/computer/protokol/tcpip/3/2.shtml раз сюда переехало то вот ссылка на содержание http://www.xserver.ru/computer/protokol/tcpip/3/index.shtml Изменено 19 сентября, 2013 пользователем сарматъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg_IT 0 19 сентября, 2013 Опубликовано 19 сентября, 2013 · Жалоба Внесу свою лепту. Стоит посмотреть тему «конечный автомат TCP». не буду приводить ссылки их много поисковики выдают. Пользуюсь также описаниями стандарта RFC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 22 сентября, 2013 Опубликовано 22 сентября, 2013 · Жалоба вот неплохая ссылочка про ТСР, перевод стандарта http://citforum.ru/nets/tcp/tcpspec.shtml для тех кто любит читать по русски. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба А есть ли русскоязычная книга, которую можно посоветовать начинающему? Ну чтоб все по очереди и по полочкам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg_IT 0 7 октября, 2013 Опубликовано 7 октября, 2013 · Жалоба Д-р. Синди Фейт TCP/IP Архитектура протоколы реализация Э. Таненбаум Компьютерные сети Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romas2010 1 31 января, 2014 Опубликовано 31 января, 2014 · Жалоба Ребятки,у меня есть работающий FTP-сервер,самоделка...используется демо-плата от starterkit.ru SK_MLPC2478/1788 c процессором LPC1788, PHY KS8721,диск эмулируется в SDRAM,который на этом модуле имеется....файловая система,TCP-стек и элементы многозадачности-собственной разработки...Извиняюсь за отсутствие документации,ибо писалось в свободное от работы (и от жены:))) время....обращайтесь [email protected], вышлю коды для KEIL 4.73 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SyncLair 0 3 февраля, 2014 Опубликовано 3 февраля, 2014 · Жалоба Ребятки,у меня есть работающий FTP-сервер,самоделка...используется демо-плата от starterkit.ru SK_MLPC2478/1788 c процессором LPC1788, PHY KS8721,диск эмулируется в SDRAM,который на этом модуле имеется....файловая система,TCP-стек и элементы многозадачности-собственной разработки...Извиняюсь за отсутствие документации,ибо писалось в свободное от работы (и от жены:))) время....обращайтесь [email protected], вышлю коды для KEIL 4.73 Мало видел примеров FTP серверов под LPC. И что вы можете через FAR скопировать чего-нибудь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg_IT 0 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Для ускорения работы по передаче данных с помощью библиотеки 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; // } ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg_IT 0 17 ноября, 2016 Опубликовано 17 ноября, 2016 · Жалоба Функцию tcp_nagle_disable(pcb); можно вызвать один раз при установке соединения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 30 ноября, 2017 Опубликовано 30 ноября, 2017 · Жалоба добрый день, форумчане. Может кто нибудь знает, 1) создаю 10base-t, 2) посылают постоянно NLP 3) на паре приема все время получаю последовательность байт 80h 40h 20h 10h 08h 04h 02h 01h 00h Может кто нибудь знает, что она означает? нигде не могу найти описание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться