Newsgroup: it.comp.programmare.win32
Titolo: Formato header tcp/ip

quello dell'ip dovrebbe essere cosi:
typedef struct iphdr
{
 unsigned char  ip_verlen;
 unsigned char tos;
 unsigned short total_len;
 unsigned short ident;
 unsigned short frag_and_flags;
 unsigned char  ttl;
 unsigned char proto;
 unsigned short checksum;  unsigned int sourceIP;
 unsigned int destIP;
}
ho scritto giusto?
e quello tcp come č?
grazie,ciao

 e quello tcp come è?
Per entrambi ci sono gli RFC che te lo spiegano...
per il fatto che sia giusto o meno quello che hai
scritto, non ne ho la minima idea, per due ottimi
motivi:
1) int e short NON sono uguali da piattaforma a
piattaforma e quindi, senza sapere niente di dove
stai programmando, non posso dire se è giusto o no;
se come penso stai programmando sotto Win o Linux
per x86, allora *credo* che sia giusto...
2) Non mi ricordo più come è fatto l'header IP :-P

 stai programmando, non posso dire se è giusto o no;
giusto,non l'ho precisato perche essendo su programmare.win32 ... :-)
ciao

  unsigned char  ip_verlen;
non usare char, short e int. Usa int8_t, int16_t e int32_t, definiti in 
<stdint.h>. Se al tuo compilatore manca questo header e si tratta o del 
Microsoft C++, o del Borland C++, praticamente di qualsiasi compilatore 
C/C++ nato su DOS, l'header puoi scrivertelo da te in questo modo:
typedef signed __int8 int8_t;
typedef signed __int16 int16_t;
typedef signed __int32 int32_t;
typedef signed __int64 int64_t;
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t;
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.2. C, C++ and ASM developers
                               and beta testers are welcome!

    come potrebbe essere?
4 + 6 + 6 quanto fa? al più dichiara un bitfield


 4 + 6 + 6 quanto fa? al più dichiara un bitfield
Ciao, vediamo se riesco a fare un post....
Se sei sotto Linux ed hai installati gli header sotto /usr/include/linux,
troverai già belli pronti due file (tra i tanti):
  tcp.h
  ip.h
Sono scritti in una maniera facilmente comprensibile.... e naturalmente
risolvono il tuo problema del bitfield..... con molta eleganza e chiarezza.
Se non hai questi header dovrebbero far parte dei sorgenti del kernel di
linux.
Sono naturalmente molto utili anche sotto windows anche se devi un po'
riadattarli. (sotto windows __U16 e __U32 non mi sebra esistano ma è
semplice capire che sono rispettivamente unsigned short ed unsigned int
sotto Win32).
Ricorda che gli header IP e TCP sono degli standard e non cambiano tra i
sistemi operativi. Una questione: devi fare attenzione a che tipo di
processore stai utilizzando in quanto l'ordine dei bit all'interno dei
BitField cambia in base all'hardware.....
Altra cosa.... Se fai una trattazione di tipo RAW dei pacchetti varso la
scheda di rete volendo puoi inventarti un tuo protocollo personale che non
sia per forza IP/TCP..... (Vedi ad esempio l'esistenza di IP/UDP,
IP/ICMP... e così via....)
Se invece vuoi modificare anche il protocollo IP devi (penso) scavalcare
il sistema operativo ... Sotto linux puoi provare a modificare
direttamente il driver della tua scheda di rete.... e a fare un nuovo
device-driver funzionante con un wrapper in user-mode.....
Saluti,
Luca Landi