Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:communication:ethernet [2015/03/01 21:51] mikket:examples:communication:ethernet [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== Ethernet ====== ====== Ethernet ======
  
Line 9: Line 9:
  
 [{{ :examples:communication:ethernet:ethernet.png|Etherneti port}}] [{{ :examples:communication:ethernet:ethernet.png|Etherneti port}}]
-Ethernet on põhiline juhtmetega kohtvõrgu (inglise keeles //Local Area Network//, lühend LAN) tehnoloogia, mille kaudu on omavahel ühendatud enamik maailma arvutitest moodustades niimoodi Interneti. Seda tutvustati esmakordselt aastal 1980 ja aastast 1985 standardiseeriti kui IEEE 802.3.+Ethernet on põhiline juhtmetega kohtvõrgu (inglise keeles //Local Area Network//, lühend LAN) tehnoloogia, mille kaudu on omavahel ühendatud enamik maailma arvutitest moodustades niimoodi interneti. Seda tutvustati esmakordselt aastal 1980 ja aastast 1985 standardiseeriti kui IEEE 802.3.
  
-Etherneti standard määrab juhtmete ja pistikute tüübid, kirjeldab füüsilise signaali ülekande ning määrab andmevahetuse formaadi. Selle standardid on tihedalt seotud OSI füüsilise kihiga, täites mudeli kahe alumise kihi (füüsiline kiht ja lülikiht) funktsioone. Algusaegadel kasutati Etherneti ülesehitamiseks koksiaalkaableid, mis vastasid standardile 10BASE5. Praegu kasutatakse nii vasest keerupaari ja fiiberoptilisi kaableid. Ethernet võimaldab andmevahetust kõikide kohtvõrku ühendatud seadmete vahel kiirustega 10 Mbit/s kuni 100 Gbit/s. Etherneti standard on ajale hästi püsinud ja suurimad alternatiivid on sellel hoopis juhtmevabad võrgustandardid nagu WiFi ja mobiilsidevõrgud.+Etherneti standard määrab juhtmete ja pistikute tüübid, kirjeldab füüsilise signaali ülekande ning määrab andmevahetuse formaadi. Selle standardid on tihedalt seotud OSI füüsilise kihiga, täites mudeli kahe alumise kihi (füüsiline kiht ja lülikiht) funktsioone. Algusaegadel kasutati Etherneti ülesehitamiseks koksiaalkaableid, mis vastasid standardile 10BASE5. Praegu kasutatakse nii vasest keerupaari kui ka fiiberoptilisi kaableid. Ethernet võimaldab andmevahetust kõikide kohtvõrku ühendatud seadmete vahel kiirustega 10 Mbit/s kuni 100 Gbit/s. Etherneti standard on ajas hästi püsinud ja suurimad alternatiivid on hoopis juhtmevabad võrgustandardidnagu WiFi ja mobiilsidevõrgud.
    
-Ethernetil baseeruvas lokaalvõrgus jagatakse andmevood väiksemateks kaadriteks (inglise keeles //frame//). Iga kaader peab sisaldama saatja ja vastuvõtja MAC aadressi ja andmeid veakontrolliks. MAC aadress on unikaalne 48-bitine võrguseadmele tootja poolt antud number. Etherneti kaadri keskosas on piirkond ülekantavate andmete jaoks. Andmed võivad sisaldada teiste protokollide kaadreid, nagu näiteks IP protokoll (inglise keeles //Internet Protocol//). Veakontroll on realiseeritud 32-bitise tsükkelkoodkontrolli meetodil, kus saatepoolel rakendatakse edastamisele kuuluvale andmeplokile 32-bitist polünoomi, mille tulemusena saadav kood lisatakse plokile. Vastuvõtupoolel rakendatakse andmeplokile sama polünoomi ja kui tulemused kokku langevad, loetakse andmeedastus õnnestunuks.+Ethernetil baseeruvas lokaalvõrgus jagatakse andmevood väiksemateks kaadriteks (inglise keeles //frame//). Iga kaader peab sisaldama saatja ja vastuvõtja MAC aadressi ja andmeid veakontrolliks. MAC aadress on unikaalne 48-bitine võrguseadmele tootja poolt antud number. Etherneti kaadri keskosas on piirkond ülekantavate andmete jaoks. Andmed võivad sisaldada teiste protokollide kaadreid, nagu näiteks IP protokolli (inglise keeles //Internet Protocol//). Veakontroll on realiseeritud 32-bitise tsükkelkoodkontrolli meetodil, kus saatepoolel rakendatakse edastamisele kuuluvale andmeplokile 32-bitist polünoomi, mille tulemusena saadav kood lisatakse plokile. Vastuvõtupoolel rakendatakse andmeplokile sama polünoomi ja kui tulemused kokku langevad, loetakse andmeedastus õnnestunuks.
  
-Nagu öeldud baseerub Ethernetil IP protoll mis paneb aluse Internetile kuna selle päises on kirjas 32-bitine IP aadress mille järgi kõik Internetti "püsivaltühendatud seadmed identifitseeritud on. Tänasel päeval on IP protokolli 32-bitisest aadressiruumist (~4 miljardit aadresssi) väheks jäänud ja seepärast on seda asendamas IPv6 milles aadressiruum on 64-bitine. IPv6 tulekust muide sõltub ka IoT (inglise keeles //Internet of Things//"asjade interneti" laiem levik kuna kõik neid "asjad" vajavad omale aadressi. Sarnaselt Ethernetiga edastatakse IP protokolli kaudu ainult andmelõikekuid erinevalt Ehternetist on IP paketi edastamine palju keerulisem kuna see liigub väga erinevaid Ethernet võrke läbides suurte distantside taha. Selleks, et edastada suuri andmehulkasid ja veenduda kõiki üksikute kaadrite kohalejõudmises on kasutusel IP protokollil baseeruv transpordiprotokoll TCP. TCP protokolli järgi veendub saatja andmete kohalejõudmises saaja poolt saadetava kinnitusega.+IP ehk võrgukihi protokollil põhineb internet. Täpsemalt on see reeglistik, mida järgitakse pakettide saatmisel võrguseadmete vahel. IP paketti päises paikneb lisaks muudele andmetele ka 32-bitine IP aadress mille järgi toimub kõigi internetti püsivalt ühendatud seadmete identifitseerimine. Tänasel päeval on IP protokolli 32-bitisest aadressiruumist (~4 miljardit aadressi) väheks jäänud ja seepärast on seda asendamas IPv6milles aadressiruum on 64-bitine. IPv6 tulekust sõltub veel asjadeinterneti (inglise keeles //Internet of Things//, lühend IoT) laiem levikkuna kõik need "asjad" vajavad omale aadressi. Lisaks päisele sisaldab IP pakett veel saadetistmis on andmeväli suvaliste andmete edastamiseks.
  
-TCP protokoll loob omakorda võimaluse erinevate andmete jaoks erinevaid porte (kanaleid) kasutada. Üks port, mis kannab nime HTTP ja numbrit 80, paneb aluse //World Wide Web//'ile (WWW) kuna selle kaudu edastatakse HTML'i ehk hüperteksti markeerimiskeelt (inglise keeles //HyperText Markup Language//) mida kuvavad kõik veebibrauserid. HTTP ja HTML on loodud ainult teineteise tarbeks. HTTP klient, ehk veebibrauserpeab HTTP serverile edastama tekstikujul päringu "GET", veebilehe nime ja mõningad parameetrid ning vastuseks saadab serveril kliendile HTML keeles soovitud veebilehe. Allolev näide on lihtsast HTML keeles veebilehest, mis kuvab tervitusteksti, viite ja rohelist värvi tekstiosa.+IP paketi saatmisel puudub kontroll, kas see ikka jõudis kohale. Probleemi lahendamiseks arendati välja TCP protokoll, mille transpordikihiks on IP pakett. TCP pakett paikneb seega IP paketi sees. TCP on kui ühendus otspunktide vahel (näiteks kliendi ja serveri vahel). Andmevahetuse alguses saadab klient serverile ühenduse loomise soovi. Sellele vastab server paketiga ja saadab omakorda kliendile paketi sooviga luua ühendus. Kui klient selle soovi kinnitab, siis on ühendus kahe otspunkti vahel loodud ja saab alustada andmete vahetamisega. 
 + 
 +TCP protokoll loob omakorda võimaluse erinevate andmete jaoks erinevaid porte (kanaleid) kasutada. Üks port, mis kannab nime HTTP ja numbrit 80, paneb aluse //World Wide Web//-ile (WWW). HTTP pordi kaudu edastatakse hüperteksti markeerimiskeelt (inglise keeles //HyperText Markup Language//, lühend HTML)mida kuvavad veebibrauserid. HTTP klient, ehk veebibrauser peab HTTP serverile edastama tekstikujul päringu "GET", veebilehe nime ja mõningad parameetrid ning vastuseks saadab server kliendile HTML keeles soovitud veebilehe. Allolev näide on lihtsast HTML keeles veebilehest, mis kuvab tervitusteksti, viida ja rohelist värvi tekstiosa.
  
 <code html> <code html>
Line 31: Line 33:
 </code>  </code> 
  
-Hoolimata hulgast prokollidest mida on vaja veebilehe edastamisekson seda Ethernet liidese olemasolul võimalik teha ka mikrokontrolleriga, sest kõik teised protokollid on realiseeritavad tarkvaras. Kasutades mikrokontrollerit veebiserverina on võimalik oma veebibrauserist muuta kontrolleri väljundeid või lugeda sisendite olekut.+Hoolimata hulgast protokollidest mida on vaja veebilehe edastamiseks on seda Ethernet liidese olemasolul võimalik teha ka mikrokontrolleriga, sest kõik teised protokollid on realiseeritavad tarkvaras. Kasutades mikrokontrollerit veebiserverina on võimalik oma veebibrauserist muuta kontrolleri väljundeid või lugeda sisendite olekut.
  
 ===== Praktika ===== ===== Praktika =====
Line 51: Line 53:
     // ENC28J60 seadistamine      // ENC28J60 seadistamine 
     enc28j60Init(mac);     enc28j60Init(mac);
-    enc28j60clkout(2); // Vaikimisi clkout 6.25 MHz muutmine 12.5 MHz +    // Vaikimisi clkout 6,25 MHz muutmine 12,5 MHz 
-    hw_delay_ms(12); // 12 ms+    enc28j60clkout(2); 
 +    hw_delay_ms(12);
                  
     // Magjack LED-ide seadistamine (vaata enc28j60 andmelehte, lehekülg 11)     // Magjack LED-ide seadistamine (vaata enc28j60 andmelehte, lehekülg 11)
     // LEDB = kollane, LEDA = roheline     // LEDB = kollane, LEDA = roheline
     // 0x476 on PHLCON LEDA = ühenduse staatus, LEDB = vastuvõtmine või edastamine     // 0x476 on PHLCON LEDA = ühenduse staatus, LEDB = vastuvõtmine või edastamine
-    // enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10); 
     enc28j60PhyWrite(PHLCON,0x476);     enc28j60PhyWrite(PHLCON,0x476);
     hw_delay_ms(12); // 12ms     hw_delay_ms(12); // 12ms
  
-    // Etherneti/ip kihtide seadistamine:+    // Etherneti/IP kihtide seadistamine
     init_ip_arp_udp_tcp(mac,ip,MYWWWPORT);     init_ip_arp_udp_tcp(mac,ip,MYWWWPORT);
 } }
Line 83: Line 85:
 } }
  
-// Vastuvõetud andmepaketist URL-i tuvastamine  +// Vastuvõetud andmepaketist URL-i tuvastamine ja pingile vastamine
-// Pingile vastamine+
 uint16_t ethernet_analyse_packet(uint8_t *buf,uint16_t plen) uint16_t ethernet_analyse_packet(uint8_t *buf,uint16_t plen)
 { {
Line 96: Line 97:
  
 Näide on mõeldud lihtsa veebiserveri loomiseks. Allpool toodud näiteprogramm loob IP aadressile 192.168.1.100 veebilehe, millel oleva lingi kaudu on võimalik lülitada sisse ja välja Kontrollermoodulil olevat LED-i. Selleks töödeldakse URL-is olevat informatsiooni, mis on eelnevalt salvestatud muutujasse //gPlen//. Otsitakse sealt LED-i olekut määravat tunnust "/1" või "/0" Veebilehe HTML kood asub eraldiseisvas funktsioonis //ethernet_load_webpage// kus see on PSTR makroga salvestatud kontrolleri programmimälusse. Näide on mõeldud lihtsa veebiserveri loomiseks. Allpool toodud näiteprogramm loob IP aadressile 192.168.1.100 veebilehe, millel oleva lingi kaudu on võimalik lülitada sisse ja välja Kontrollermoodulil olevat LED-i. Selleks töödeldakse URL-is olevat informatsiooni, mis on eelnevalt salvestatud muutujasse //gPlen//. Otsitakse sealt LED-i olekut määravat tunnust "/1" või "/0" Veebilehe HTML kood asub eraldiseisvas funktsioonis //ethernet_load_webpage// kus see on PSTR makroga salvestatud kontrolleri programmimälusse.
 +<pagebreak>
 <code c> <code c>
 // Kodulabori Etherneti kasutamise näidisprogramm // Kodulabori Etherneti kasutamise näidisprogramm
-// Kodulabor II ühendused: CS - PE0, SCK - PE1, MISO - PE2, MOSI - PE3+// Kodulabor III ühendused: CS - PE0, SCK - PE1, MISO - PE2, MOSI - PE3
 #include <string.h> #include <string.h>
 #include <homelab/module/ethernet.h> #include <homelab/module/ethernet.h>
Line 134: Line 135:
  
     // Lõputu tsükkel             // Lõputu tsükkel        
-    while(1)+    while (1)
     {     {
         // Pakettide muutmine, kuni endale määratud andmetega paketi saamiseni         // Pakettide muutmine, kuni endale määratud andmetega paketi saamiseni
Line 191: Line 192:
     else     else
      plen=ethernet_load_data(buf,plen,PSTR("<font color=\"#FF0000\"> ON</font>"));      plen=ethernet_load_data(buf,plen,PSTR("<font color=\"#FF0000\"> ON</font>"));
 +     
     // "Refresh" nupu laadimine     // "Refresh" nupu laadimine
     plen=ethernet_load_data(buf,plen,     plen=ethernet_load_data(buf,plen,
et/examples/communication/ethernet.1425246704.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0