Při vývoji mého SW pro řadič Ethernetu jsem narazil na následující problém. Řadiče byly dva a vysílaly na sebe v zapojení tzv. point too point. Bohužel chybami v nastavení a řízení řadiče přenos nedošel do paměti přijímacího procesoru z vysílače. Nebylo ale možné, jednoduše zjistit, kde je vlastní chyba a zároveň bylo nutné se věnovat několika problémům najednou.
Proto jsem napsal monitor, který tvrdě vyžaduje síťovou kartu s nastavením IO 300h IRQ 10 a kompatibilní NE 2000. Pevné nastavení je z důvodů rychlosti práce programu (nemusí se vypočítávat adresa) a kromě toho je to obvyklé nastavení karty v PC. Pracuje se pod systémem DOS, tj. v reálném režimu. Spuštěné Windows neumožní přístup k portům karty!
Funkce
Monitor sleduje podle nastavení tok dat na síťovém kabelu a zobrazuje je na obrazovku v hexadecimálním výpisu, nebo je ukládá do souboru. Je možné i vyslat data s pevnou strukturou. Pokud se oživuje jiný síťový řadič, je na výpisu stavových slov a dat vidět co tento oživovaný řadič na síťovém kabelu dělá. Zároveň existuje i možnost tomuto řadiči poslat "holá" data a ověřit i jeho příjem.
Vypisuje se pouze obsah rámce a nikoliv již zpracované protokoly (TCI/IP,BEUI).
Na obrazovku se vypisuje
IT status - obsah registru INTERRUPT STATUS REGISTER (ISR)
Rx status - obsah registru RECIVE STATUS REGISTER (RSR)
Tx status - obsah registru TRANSMIT STATUS REGISTER (TSR)
Toto je výpis vlastních registrů řadiče NE 2000 kompatibilního. Dále se vypisuje informace získaná z přijatého rámce .
status | - | což je obdoba Rx status, |
bytes | - | je délka dat i s adresami stanic |
destin | - | cílová adresa |
source | - | zdrojová adresa |
length | - | obsah délky dat z datového bloku Ethernet pozor !, length a bytes nejsou vždy delka bloku, je to i příznak protokolů např. TCP/IP, NETBEUI, IPX/SPX, atd. |
data | - | pokud se neukládá do souboru, vypíše se hexadecimální obsah dat na obrazovku. |
Spuštění
Po spuštění se vypíše dotaz na povolení ukládání dat do souboru. Prázdné jméno (ENTER) zakazuje ukládání přijatých dat do souboru a jejich informační výpis se zobrazuje na monitoru počítače.
Potom je nutné nastavit "režim příjmu" odpovědí (ano - ne) na jednotlivé dotazy (přijetí i chybného rámce; přijetí rámce pod 64 byte; přijetí broadcast adresy; přijetí multicast adresy; přijetí rámců se všemi adresami; monitor mode). Dotazy odpovídají funkčním bitům jednoho datového registru NE 2000.
Po těchto nastaveních se vypíše NODE adresa použité síťové karty a musí se zadat node adresa řadiče na který chceme vysílat. Adresa může být i ffffffffffff, což je broadcast adresa. Pokud se nebude vysilat může být adresa jakákoliv.
Vysílání
Vysílání dat se uskuteční zmáčknutím jakékoliv klávesy. Vysílá se blok dat dlouhý 80h byte s obsahem 00,01,02, ... 7eh,7fh. Další blok, pro rozlišení je posunut o jedno místo, tj. 01,02,03,...7fh,80h. Vysílá se na adresu zapsanou při spuštění.
Ukončení
Činnost monitoru se ukončuje klávesou ESC.
Omezení
Monitor je zhotoven pro možnost odladění vyvýjeného řadiče a příslušného programu. Není určen pro "debugování" aktivní sítě, i když by to uměl.
Z důvodů zamezení možnosti sledování sítě nebude ani poskytnut formát ukládání toku dat do souboru.Je u něj uměle omezena rychlost a tím při sledování síťového provozu vznikne ztráta dat. Není použita funkce tisku - ze stejného důvodu. Dále je omezena funkce na dobu dvou týdnů od prvního spuštění.
Zobrazení dat uložených v souboru
Zobrazení je umožněno spuštěním programu LANVIEW.EXE. Po spuštění se dotáže na jméno souboru do kterého je uložen záznam dat sítě Ethernet.
Pro omezení většího množství jalových výpisů (např. při sledování toku dat již odladěného řadiče v síti) je možné zadát adresy přijímače a vysílače a pouze tyto bloky dat následně vypsat. Opět se vypíše informace o stavových slovech IT, Rx, Tx a adresách zdroje a cíle rámce, včetně jeho délky získané z ethernet rámce.
Výpis obsahu dat je možný v hexadecimálním nebo ASCII formátu volbou písmen podle helpu dolní řádce monitoru. Dále je přechod na další blok.
Pokud je dáno omezení vypisovaných adres, které se zadalo po spuštění programu, vypisují se pouze rámce s požadovanými adresami nebo s broadcast adresou. Funkce zobrazení adresami je funkcí "nebo", to znamená, že se informace vypíše vyhovuje-li adresa zdroje nebo adresa cíle. Nikoliv vyhovuje-li adresa zdroje a adresa cíle zároveň.
LAN Monitor - lanmon.exe (12 kB).
Na případné dotazy k funkci a nikoliv na zneužití se těším na mém emailu.
Pro informaci je přiložen výtah z manuálu NIC DP 8390D. Jednotlivé bity stavových slov odpovídají tomuto popisu.
INTERRUPT STATUS REGISTER (ISR) 7 6 5 4 3 2 1 0 Bit Symbol Description D0 PRX PACKET RECEIVED: Indicates packet received with no errors. TRANSMIT STATUS REGISTER 7 6 5 4 3 2 1 0 Bit Symbol Description D0 PTX PACKET TRANSMITTED: Indicates transmission without error. RECEIVE STATUS REGISTER 7 6 5 4 3 2 1 0 Bit Symbol Description D0 PRX PACKET RECEIVED INTACT: Indicates packet received without error. |