Čeština / English
Login

Aplikace / Protokol ICMP a PING

Autor: Zdeněk Vašíček ()

Abstrakt: Jednoduchá aplikace demonstrující využití knihovních funkcí pro implementaci funkce PING.

Update: 20110101

Jednou ze základních demonstračních úloh je implementace zjednodušené verze příkazu ping, pomocí kterého lze například ověřit dostupnost určitého počítače v síti. Příkaz využívá služeb protokolu ICMP, který je určen k oznamování chybových stavů jako je například nedostupnost služby, nedosažitelnost počítače/směrovače, ale který též podporuje tzv. echo request, při kterém je odeslán zpět odesílateli paket s totožným datovým obsahem.

1. Popis aplikace

Aplikace se skládá z inicializační části (main) a dále funkce obsluhující přijate ICMP požadavky. V hlavní části je nainicializován DHCP klient tak, abychom získali IP adresu z DHCP serveru a nemuseli ji konfigurovat ručně. Poté následuje volání funkce icmp_bind(icmp_handler), která zaregistruje callback funkci icmp_handler, která bude vyvolána při každém příchodu ICMP paketu. V hlavní smyčce je postupně volána funkce ENC28J60_idle() a následně testován stav DHCP pomocí funkce dhcp_ready(). Obsluha DHCP je realizována pomocí časovače, pro jehož inicializaci a obsluhu slouží makra TIMERA_ISR_INIT a TIMERA_ISR_DHCP.

Při zadání valdiní IP adresy do terminálu se vyvolá postupně následující sekvence příkazů. Pomocí tx_init(ICMP_PROTO) se zinicializuje ICMP paket v odesílacím bufferu, poté se zapíše 23B dat pomocí tx_write_str("abcdefghijklmnopqrstuvw") a následuje dokončení paketu funkcí tx_close() a odeslání ICMP požadavku typu ICMP ECHO pomocí volání funkce icmp_send(dest_ip,ICMP_ECHO,ICMP_ECHO_CODE,1,1).

Při příchodu odpovědi je vyvolána callback funkce icmp_handler, která otestuje ICMP hlavičku a vypíše IP adresu, která generovala odpověď. Při příchodu požadavku na PING je vypsána do terminálu IP adresa odesílatele. Požadavek stejně tak jako ostatní ICMP pakety jsou zahozeny.

2. Zprovoznění aplikace

  1. připojte k FITkitu rozšiřující modul Ethernet obsahující ENC28J60 a připojte modul do sítě LAN

  2. přeložte aplikaci

  3. naprogramujte MCU a FPGA a spusťte terminálový program.

  4. jakmile aplikace obdrží odpověď od DHCP serveru, je možné použít PING

Aplikace nevyžaduje ke své činnosti nastavit kromě propojek umožňujících programování další propojky.

Zobrazeno: 1030x Naposledy: 23.9.2017 12:41:14