|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2004
Città: Brescia
Messaggi: 41
|
three-way handshake con socket raw in c
Ciao a tutti, ho un quesito per chi se ne intende di socket raw.
Sto cercando di implementare in C due programmini che facciano il three-way handshake del TCP, tuttavia quando provo ad eseguire i programmi (Alice e Bob), vedo che quando Bob riceve il SYN di Alice, fa partire un RST senza che nessuno glielo abbia detto, probabilmente è opera di linux. Per chiarezza di seguito vi posto quello che succede: tcpdump: listening on lo:0, link-type EN10MB (Ethernet), capture size 96 bytes 13:05:12.822294 IP (tos 0x0, ttl 60, id 6062, offset 0, flags [none], proto: TCP (6), length: 40) localhost.2245 > 192.168.0.1.2212: S, cksum 0x5cce (correct), 1:1(0) win 512 Questo è il SYN inviato da Alice 13:05:14.325142 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.0.1.2212 > localhost.2245: R, cksum 0x5ebb (correct), 0:0(0) ack 2 win 0 Questo è il RST inviato da Bob, peccato che nel codice del mio programma non sia previsto! Come posso evitare questo inconveniente? Inoltre vedo che se uso il comando socket(PF_INET, SOCK_RAW, IPPROTO_TCP), allora posso leggere il paccheto ricevuto con recvfrom() o read(), se invece creo il socket con socket(PF_INET, SOCK_RAW, IPPROTO_RAW), read() e recvfrom() non funzionano. Come mai? Grazie a tutti per l'aiuto. Ringrazio in anticipo per l'aiuto.
__________________
Vale più un uomo paziente che un eroe. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:54.



















