UDP Over Ethernet – Unde exact și în ce ordine vor apărea informațiile UDP în sarcina utilă a cadrului meu Ethernet? (Ingineria rețelelor, Ethernet, Layer2, Udp, Layer4)

Abe a intrebat.

Am nevoie să capturez informațiile UDP care vin la mine prin intermediul unui cadru Ethernet. Am o conexiune punct la punct prin fibră optică cu 1000BASE-X Ethernet. Informațiile care îmi parvin sunt în formatul GMII, care este format din octeți la o rată de 125 MHz.

Formatul antetului UDP este prezentat mai jos.

              0      7 8     15 16    23 24    31  
             +--------+--------+--------+--------+ 
             |     Source      |   Destination   | 
             |      Port       |      Port       | 
             +--------+--------+--------+--------+ 
             |                 |                 | 
             |     Length      |    Checksum     | 
             +--------+--------+--------+--------+ 
             |                                   |   
             |          data octets              |
             +-----------------------------------+                 

Port sursă = SPPort destinație = DLungime = LChecksum = CS

Pentru referință, cadrul Ethernet este prezentat mai jos.

    +-----------+-------+---------+---------+--------+------------------+---------+ 
    |  Preamble |  SFD  |   DA    |   SA    |   TL   | Data (Payload)   | CRC-32  | 
    |  6 bytes  |1 Byte | 6 bytes | 6 bytes |2 bytes | 46 to 1500 bytes | 4 bytes |
    +-----------+-------+---------+---------+--------+------------------+---------+

Presupunând că datele mele vor fi plasate în câmpul Data (Payload) al cadrului Etnernet, întrebarea mea este:

1) Ordinea octeților dubli va fi: primul DP, al doilea SP, al treilea CS, al patrulea L, al cincilea octet de date1, al șaselea octet de date2, etc.?2) Octeții mai puțin semnificativi mai întâi?

Comentarii

  • V-a ajutat vreun răspuns? Dacă da, ar trebui să acceptați răspunsul, astfel încât întrebarea să nu mai apară la nesfârșit, în căutarea unui răspuns. Alternativ, puteți oferi și accepta propriul răspuns. –  > Por Ron Maupin.
1 răspunsuri
Ron Maupin

Îți lipsește un strat de rețea:

  • Layer-1/2: ethernet
  • Stratul 3: IPv4 sau IPv6
  • Nivelul 4: UDP

Încărcătura utilă a cadrelor ethernet va fi, probabil, fie pachete IPv4, fie IPv6. Trebuie să verificați câmpul EtherType din antetul cadrului ethernet pentru a determina care este, în mod specific, sarcina utilă.

Datagramele UDP vor fi sarcina utilă a pachetelor IPv4 sau IPv6. Puteți verifica câmpul Protocol din antetul pachetului IPv4 sau câmpul Next Header din antetul IPv6 pentru a determina sarcina utilă a pachetelor IP.

În ceea ce privește ordinea octeților, IETF are o Network Byte Order:

1.1. Context și motivație

Documentul „ON HOLY WARS AND A PLEA FOR PEACE” [IEN-137], scris în 1980, susține că industria ar trebui să se mulțumească cu o singură comandă de octeți. De atunci, IETF a ajuns în mare parte la o singură ordine de octeți, cunoscută sub numele de „Network Byte Order”, iar prezentul memorandum are ca scop înregistrarea acestui consens aproximativ. Din păcate, „războiul sfânt” continuă între producătorii de unități centrale de procesare.

2. Definiția ordinului de octeți de rețea

Atunci când un număr este prea mare pentru a încăpea într-un singur octet, se folosesc mai mulți octeți pentru a codifica acel număr. Atunci când astfel de numere sunt trimise printr-un protocol orientat pe octeți (de exemplu, TCP este orientat pe 8 biți-octeți) trebuie selectată o ordine pentru octeți astfel încât ambele capete să interpreteze numerele în același mod, independent de arhitectura CPU. Atunci când octeții care alcătuiesc astfel de numere multibyte sunt ordonați de la octetul cel mai semnificativ la cel mai puțin semnificativ, acest lucru se numește „ordinul octeților de rețea” sau „big endian”.

De exemplu, să luăm numărul hexazecimal fără semn 0xFEEDFACE (număr zecimal 4,277,009,102). Dacă acesta este trimis ca o secvență de octeți pe 8 biți folosind ordinea octeților de rețea (big endian), secvența ar fi următoarea: 0xFE, 0xED, 0xFA, 0xFA, 0xCE. În little endian (de la cel mai puțin semnificativ octet la cel mai semnificativ octet), aceasta ar fi: 0xCE, 0xFA, 0xED, 0xFE.

Pentru ethernet și alte rețele locale IEEE, adresa de destinație este prima, dar pentru IPv4, IPv6, TCP, UDP și alte standarde IETF, adresa sursă este prima.