Bonjour,

J'essaye de me former aux réseaux et je suis actuellement entrain d'étudier une pile tcp/ip open-source :
https://github.com/tass-belgium/picotcp

J'ai installé sur une machine virtuelle et crée une interface virtuelle tap0 en suivant l'exemple suivant :
https://github.com/tass-belgium/picotcp/wiki/Examples

L'exemple fonctionne bien même si je ne comprends pas totalement. De ce que je pige, on attribue une ip à l'interface tap0 : sudo ifconfig tap0 192.168.5.5

Puis lors de l'exécution du code, on assigne une autre ip à l'interface tap0 puis on ping la première ip que l'on a attribué, c'est à ce niveau que je capte pas vraiment.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    int id;
    struct pico_ip4 ipaddr, netmask;
    struct pico_device* dev;

    /* initialise the stack. Super important if you don't want ugly stuff like
     * segfaults and such! */
    pico_stack_init();

    /* create the tap device */
    dev = pico_tap_create("tap0");
    if (!dev)
        return -1;

    /* assign the IP address to the tap interface */
    pico_string_to_ipv4("192.168.5.4", &ipaddr.addr);
    pico_string_to_ipv4("255.255.255.0", &netmask.addr);
    pico_ipv4_link_add(dev, ipaddr, netmask);

    printf("starting ping\n");
    id = pico_icmp4_ping("192.168.5.5", NUM_PING, 1000, 10000, 64, cb_ping);
Dans tous les cas, ça marche puisque wireshark capture les trames icmp. Mais je me demande aussi pourquoi toujours sur ma machine virtuelle je ne peux pas ping l'interface tap0 via l'interface par défaut enp3s0

Merci par avance