Socket et Packet en C

Socket et Packet en C - C - Programmation

Marsh Posté le 19-03-2004 à 20:10:19    

Bonjour,
 
Comment faire en C un paquet UDP/IP :
 
Je dois creer une socket IP puis mettre dans le buffer un paquet UDP "fait a la main" et l envoyer
 
ou
 
Faire une socket UDP mais comment apres acceder au champ d'entete IP et UDP ?
 
Merci

Reply

Marsh Posté le 19-03-2004 à 20:10:19   

Reply

Marsh Posté le 19-03-2004 à 20:13:25    

lire la documentation spécifique à ton système

Reply

Marsh Posté le 19-03-2004 à 20:27:54    

sur un systeme UNIX
 
tu aurais un lien ? car j ai cherche mais a chaque fois, il parle que de socket UDP, ils disent pas comment acceder au entete.

Reply

Marsh Posté le 19-03-2004 à 20:45:08    

ben lis mieux tes liens et vois comment on paramètres tout ça pour envoyer un paquet a une adresse donnée

Reply

Marsh Posté le 19-03-2004 à 20:49:07    

Je viens de voir deja que pour creer une socket ip il faut etre root ce qui dans mon cas n'est pas possible donc ca serait la 2eme solution.
 
En fait mon probleme vient du fait que l entete IP et l entete UDP n auront pas la meme adresse de destination.

Reply

Marsh Posté le 19-03-2004 à 20:59:39    

non.
 
 
j'ai l'impression que t'as rien compris à rien, alors peut être du devrais voir comment ça marche le protocole UDP/IP comparé à TCP/IP, et ensuite te mettre à la programmation

Reply

Marsh Posté le 19-03-2004 à 21:11:37    

le non c'est pour ?

Reply

Marsh Posté le 19-03-2004 à 21:18:05    

n'importe qui peut créer des socket

Reply

Marsh Posté le 19-03-2004 à 21:23:45    

dans les docs que j ai lu, creer une socket avec SOCK_RAW est accessible qu au root

Reply

Marsh Posté le 19-03-2004 à 21:24:49    

quitte parle de crée un SOCK_RAW ?

Reply

Marsh Posté le 19-03-2004 à 21:24:49   

Reply

Marsh Posté le 19-03-2004 à 21:29:25    

cree une socket IP non ?
 
une socket UDP c est SOCK_DGRAM, et SOCK_RAW une socket IP.
 
j ai encore faux ? :/

Reply

Marsh Posté le 19-03-2004 à 21:34:37    

et le paquet IP, tu vas le faire tout seul peut être ? mettre les adresses, le crc, la payload, le ttl, les champs de versions, le protocole, le numéro de fragment, les flags, etc ?

Reply

Marsh Posté le 19-03-2004 à 21:38:51    

si je cree une socket UDP, je peux pas acceder aux champs IP, je fais comment alors ?

Reply

Marsh Posté le 19-03-2004 à 21:40:59    

y a pas de champ IP.
un packet IP, c'est juste un train de bits.
 
bon quand t'auras compris, ce qu'est UDP, et ce que c'est que faire un paquet IP (la couche en dessous), remonte ce sujet ...

Reply

Marsh Posté le 19-03-2004 à 21:42:32    

ok

Reply

Marsh Posté le 19-03-2004 à 21:44:34    

je sais que dans UDP dans l entete il y a un champ destination et source, et quand il est encapsule dans un paquet IP, ce dit paquet contient lui aussi un champ destination, source et tous ce que tu as decrit en haut

Reply

Marsh Posté le 19-03-2004 à 21:46:49    

et donc tu veux faire quoi ?

Reply

Marsh Posté le 19-03-2004 à 21:50:03    

mon champ destination dans le paquet IP doit avoir une adresse, et dans mon paquet UDP lui aura une autre adresse.

Reply

Marsh Posté le 19-03-2004 à 21:50:18    

oui et  ?

Reply

Marsh Posté le 19-03-2004 à 21:55:48    

et je fais comment pour modifier le champ de destination IP ?
 
car si je fais un sendto avec ma socket UDP, le champ destination IP et UDP sont les memes


Message édité par extres le 19-03-2004 à 21:57:31
Reply

Marsh Posté le 19-03-2004 à 21:59:18    

ben tu vois tes doigts ? tu vois ton clavier ? ben voilà, tu fais un malloc et tu remplis ton datagramme. c'est tout ce que t'as à faire

Reply

Marsh Posté le 19-03-2004 à 22:02:05    

je fais un malloc sur quoi ?
 
si je savais comment y acceder, je serai pas venu sur le forum

Reply

Marsh Posté le 19-03-2004 à 22:05:13    

t'es à l'ouest.....
 
http://www.zytrax.com/tech/protocols/tcp.html
 
que tu sois en TCP ou en UDP ou autre, c'est le header IP qui contiens l'address IP source et destination, les champs de destinations IP et UDP sont forcément les mêmes.... (puisqu'il y en a qu'un)

Reply

Marsh Posté le 19-03-2004 à 22:05:40    

extres a écrit :

je fais un malloc sur quoi ?
 
si je savais comment y acceder, je serai pas venu sur le forum

mais y a rien à accéder. tu t'alloues un bout de mémoire, quelques dizaines d'octets contigus, et tu remplis

Reply

Marsh Posté le 19-03-2004 à 22:10:54    

et j en fais quoi de ce octet ?
 
bjone : si le cheksum=0, alors il y a aussi un champ source et destination.

Reply

Marsh Posté le 19-03-2004 à 22:11:22    

exact, mais qu'est-ce t'en as à foutre ?

Reply

Marsh Posté le 19-03-2004 à 22:14:57    

bjone a écrit :

t'es à l'ouest.....
 
http://www.zytrax.com/tech/protocols/tcp.html
 
que tu sois en TCP ou en UDP ou autre, c'est le header IP qui contiens l'address IP source et destination, les champs de destinations IP et UDP sont forcément les mêmes.... (puisqu'il y en a qu'un)  

non

Reply

Marsh Posté le 19-03-2004 à 22:17:42    

voila, comment une station A fait pour acceder à une station C, en passant par une station B ?
 
la station A se connecte a la B avec une socket
B recoit le paquet et voit que dans l'entete UDP c est l adresse de C alors il lui envoie, comme un routeur
 
je fais ca comment ? je fais une socket UDP entre A et B, et le buffer que je met dedans c est l'adresse de C ?

Reply

Marsh Posté le 19-03-2004 à 22:19:40    

extres a écrit :

voila, comment une station A fait pour acceder à une station C, en passant par une station B ?
 
la station A se connecte a la B avec une socket
B recoit le paquet et voit que dans l'entete UDP c est l adresse de C alors il lui envoie, comme un routeur
 
je fais ca comment ? je fais une socket UDP entre A et B, et le buffer que je met dedans c est l'adresse de C ?

c'est pas des stations c'est des routeurs qui font ça.
 
 
sinon bonne nouvelle, t'as toujours pas compris que IP envoit __toujours__ des datagrammes et que TCP/UDP c'est la couche __supérieure__

Reply

Marsh Posté le 19-03-2004 à 22:21:25    

:)
 
comment fais la station pour se connecter au routeur et envoyer une adresse internet en meme temps ?

Reply

Marsh Posté le 19-03-2004 à 22:22:03    


 
enfin je me comprends :D
 
bon ce que je veux dire, c'est que la pile IP s'occupe de tout...

Reply

Marsh Posté le 19-03-2004 à 22:23:15    

mais tu racontes quoi bordel ? t'as rien compris à rien du tout.
personne se connecte à un routeur. si le paquet doit etre routé pour atteindre son destinataire, alors il l'est.

Reply

Marsh Posté le 19-03-2004 à 22:23:59    

bjone a écrit :


 
enfin je me comprends :D
 
bon ce que je veux dire, c'est que la pile IP s'occupe de tout...

oui, l'entete du datagramme IP est modifiée. la charge elle ne varie pas

Reply

Marsh Posté le 19-03-2004 à 22:24:01    

extres a écrit :

:)
 
comment fais la station pour se connecter au routeur et envoyer une adresse internet en meme temps ?


 
la pile IP s'occupe de ça.
dans ta pile, tu as des adresses de passerelles, etc...
le protocole est conçu pour te faire ça de manière à peu près automatique et transparente...

Reply

Marsh Posté le 19-03-2004 à 22:28:04    

extres a écrit :

:)
 
comment fais la station pour se connecter au routeur et envoyer une adresse internet en meme temps ?


 
Bon pour arrêter le massacre, tu devrais jeter un oeil à ce document pour une initiation rapide à tcp/ip :
http://www.commentcamarche.net/internet/tcpip.php3

Reply

Marsh Posté le 19-03-2004 à 22:40:16    

merci a tous, j y reflechirai demain

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed