mikrocontroller.net

Forum: FPGA, VHDL & Co. Berechnung der UDP, IP und Ethernet-Checksum


Autor: Header (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte nur fragen wie man die Checksummen von UDP, IP und Ethernet 
berechnet. Zu Ethernet hab ich gar nichts gefunden und zu UDP und IP hab 
ich folgendes gefunden, versteh es aber nicht.

IP
The checksum field is the 16 bit one's complement of the one's
complement sum of all 16 bit words in the header and text.  If a
segment contains an odd number of header and text octets to be
checksummed, the last octet is padded on the right with zeros to
form a 16 bit word for checksum purposes.  The pad is not
transmitted as part of the segment.  While computing the checksum, the 
checksum field itself is replaced with zeros.

UDP
Checksum is the 16-bit one's complement of the one's complement sum of a
pseudo header of information from the IP header, the UDP header, and the
data,  padded  with zero octets  at the end (if  necessary)  to  make  a
multiple of two octets.

Autor: Jörn Kaipf (joern)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Ethernetframe wird mit einer CRC32 Prüfsumme gesichert, IP und UDP 
mit einer einfachen Prüfsumme. Bei UDP/IP werden einfach immer 16Bit 
Werte aufaddiert und später der Überlauf wieder zu einer 16 Prüfsumme 
"zusammengefaltet".

In "C" sieht das so aus:
Unsigned short CalcChecksum(void *addr, unsigned int Count)
{
   /* Compute Internet Checksum for "count" bytes
    * beginning at location "addr". */
    register long sum = 0;
    while (count > 1) {
      /* This is the inner loop */
      sum += * (unsigned short) addr++;
      count -= 2;
    }
    /* Add left-over byte, if any */
    if( count > 0 )
    sum += * (unsigned char *) addr;
    /* Fold 32-bit sum to 16 bits */
    while (sum>>16)
    sum = (sum & 0xffff) + (sum >> 16);
    checksum = ~sum;
}

läßt sich aber auch recht einfach in Logik auslagern.

Viele Grüße
Jörn

Autor: DC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie würde das ganze in Logik aussehen?

Autor: Christian Peters (kron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck dir mal diese Seite an,
damit kannst du dir fix und fertig Code generieren lassen:
http://www.easics.com/webtools/crctool

Autor: Jörn Kaipf (joern)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Blockschaltbild im Anhang

Autor: MAZINE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Top...

thx

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.