PDA

View Full Version : [C] - Costruzione frame livello di collegamento


clockover
24-04-2010, 13:13
Salve a tutti, come da titolo... è possibile costruire un frame ethernet? Non sono riuscito a trovare ancora nulla in giro per la rete... Grazie..

cionci
24-04-2010, 19:19
Sistema operativo ? Compilatore ? Eventuali framework e librerie ?

clockover
25-04-2010, 00:13
Grazie della risposta... utilizzo Linux 2.6, molto spesso anche Osx 10.6, entrambi con compilatore gcc versione 4.2.1 per Osx e per Linux non ricordo perchè non ce l'ho sottomano!

cionci
25-04-2010, 09:03
Dai uno sguardo qui: http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html

clockover
25-04-2010, 09:40
Dai uno sguardo qui: http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html

Gradissimo.... avevo già dato uno sguardo alle librerie af_*.h però non avevo capito come funzionava... adesso do una letta alla guida... che personaggio il tipo del sito :D :D

clockover
26-04-2010, 13:19
Alla grande :D :D

clockover
26-04-2010, 16:33
Non capisco una cosa.. perchè inserire 2 volte l'indirizzo di destinazione! Nella struct sockaddr_ll il tipo del link inserisce nuovamente il MAC address di destinazione! Ma l'informazione è ridondante! Infatti ho fatto varie prove, e comunque funziona lo stesso anche senza inserire i valori nella struct dato che sono già nell'header!

Teo@Unix
26-04-2010, 21:26
Difatti non dovrebbe servire, per spedire frame ethernet di solito mi basta il nome della interfaccia.

A differenza dell'esempio io ti consiglio di usare write e read per inviare e leggere dal socket raw.

clockover
26-04-2010, 23:42
Difatti non dovrebbe servire, per spedire frame ethernet di solito mi basta il nome della interfaccia.

A differenza dell'esempio io ti consiglio di usare write e read per inviare e leggere dal socket raw.

Infatti poi ci ho ragionato mentre andavo a lavoro e ho pensato che giustamente se nell'header c'è tutto quello che mi serve mi basterebbe una write... Inoltre sempre ripensandoci su quello è un frame ARP... un frame ethernet completo non dovrebbe avere anche il preambolo??

nuovoUtente86
27-04-2010, 01:05
una richiesta arp viaggia incapsulata in un normale frame ethernet il cui preambolo di sincronizzazione è composto da 7 byte in sequenze di 101010...

cionci
27-04-2010, 07:11
un frame ethernet completo non dovrebbe avere anche il preambolo??
Il preambolo fa parte del protocollo di MAC. Ci pensa l'interfaccia a metterlo.

clockover
27-04-2010, 08:04
Il preambolo fa parte del protocollo di MAC. Ci pensa l'interfaccia a metterlo.

A ok adesso mi è più chiara la cosa!

clockover
27-04-2010, 08:11
A differenza dell'esempio io ti consiglio di usare write e read per inviare e leggere dal socket raw.

Read e write non funzionano invece.. ci ho provato.. Anche perchè nel struct sockaddr_ll c'è da specificare l'interfaccia... cosa che non è possibile includere con la write o con una read..