Socket et Packet en C - C - Programmation
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.
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
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.
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
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
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 ?
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 ?
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 ?
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 ...
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
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.
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
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
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
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)
Marsh Posté le 19-03-2004 à 22:05:40
extres a écrit : je fais un malloc sur quoi ? |
mais y a rien à accéder. tu t'alloues un bout de mémoire, quelques dizaines d'octets contigus, et tu remplis
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.
Marsh Posté le 19-03-2004 à 22:14:57
bjone a écrit : t'es à l'ouest..... |
non
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 ?
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 ? |
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__
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 ?
Marsh Posté le 19-03-2004 à 22:22:03
enfin je me comprends
bon ce que je veux dire, c'est que la pile IP s'occupe de tout...
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.
Marsh Posté le 19-03-2004 à 22:23:59
bjone a écrit : |
oui, l'entete du datagramme IP est modifiée. la charge elle ne varie pas
Marsh Posté le 19-03-2004 à 22:24:01
extres a écrit : |
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...
Marsh Posté le 19-03-2004 à 22:28:04
extres a écrit : |
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
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