IP/TCP/UDP header vs C/C++

NOTE: This article is written in Romanian, for a translation please add me a comment.

Ei bine… nu mare imi fu uimirea dupa ultimile proiecte / teme, mici aplicatii. Uimirea ca habar nu am sa scriu un header tcp. Toata povestea a plecat de la o tema pentru facultate. Un modul de kernel linux/windows care trebuia sa filtreze pachetele TCP si UDP.

Asa ca… mai dupa explicatiile unui coleg, mai cu burta pe wikipedia & others… am priceput cum arata headerele pentru fiecare element mentionat mai sus, si… simt nevoia sa impartasesc si celorlalti, ca poate voua v-o fi mai usor decat mine alta data.

Dar am sa va trec mai intai prin header-ul ipv4, pentru ca trebuie sa stiti si despre el.

IP Header
Una bucata varianta ar fi astfel:

care separa header length de version, si care poate fi mult mai folositoare in cazul in care aveti nevoie de cele doua variabile.
In caz contrar, recomand

Ca studiu de caz ca ofer structura ipdhr extrasa din Linux kernel 2.6.24.2:

cu urmatoarele definitii:

Referinte:
+ http://en.wikipedia.org/wiki/IPv4
+ http://www.codeproject.com/KB/IP/drvfltip.aspx

TCP Header

Despre headerul tcp, nu prea are rost sa va povestesc eu, cand veti putea gasit explicat totul f.f.f.f. bine aici: http://en.wikipedia.org/wiki/Transmission_Control_Protocol

Ca si la header-ul ip, va ofer mai intai o varianta detaliata, in asa fel incat se poate prelua fiecare componenta in parte.

Daca insa NU ne intereseaza lucrul acesta, recomand versiunea urmatoare,

luand in calcul faptul ca pentru flags putem face teste cu expresii de tipul:

Din nou, ca stiudiu de caz – strucutra tcphdr din Linux kernel:

Referinte:
+ http://en.wikipedia.org/wiki/Transmission_Control_Protocol
+ http://www.codeproject.com/KB/IP/drvfltip.aspx
+ http://www.tenouk.com/Module43b.html

UDPHeader

Ca ultima tema, headerul UDP, explicat iarasi, pe indelete in aceasta pagina: http://en.wikipedia.org/wiki/User_Datagram_Protocol,
care este insa mult mai simplu, si mult mai usor de transpus in cod:

Referinte:
+ http://en.wikipedia.org/wiki/User_Datagram_Protocol
+ http://www.codeproject.com/KB/IP/drvfltip.aspx
+ http://www.tenouk.com/Module43b.html

One Comment Add yours

  1. Panioglo Valentin says:

    nice web site… looking good. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *