Question

Lors de l'utilisation pcap_open_live à renifler d'une interface, j'ai vu beaucoup d'exemples en utilisant différents nombres comme valeur SNAPLEN, allant de BUFSIZ (<stdio.h>) à « nombres magiques ».

Ce ne serait pas plus logique à définir comme SNAPLEN le MTU de l'interface que nous saisissons de? De cette manière, nous pourrions tenir plusieurs paquets à la fois dans PPCE tampon. Est-il sûr de supposer que le MRU est égal au MTU?

Dans le cas contraire, est-il un moyen non exotique pour définir la valeur SNAPLEN?

Merci

Était-ce utile?

La solution

Le MTU est le plus grand charge utile taille qui pourrait être remis à la couche de liaison; il ne comprend pas les en-têtes de couche de liaison, de sorte que, par exemple, sur Ethernet, il serait 1500, pas 1514 ou 1518, et ne serait pas assez grand pour capturer un paquet Ethernet en taille réelle.

En outre, il ne comprend pas les en-têtes de métadonnées telles que l'en-tête de radiotap pour 802.11 informations radio.

Et si l'adaptateur fait toute forme de déchargement fragmentation / segmentation / réassemblage, les paquets transmis à l'adaptateur ou reçu de l'adaptateur peut pas encore être fragmenté ou segmentés, ou pourraient avoir été réassemblé et, en tant que telle, pourrait être beaucoup plus grand que le MTU.

Comme pour le montage de plusieurs paquets dans la mémoire tampon de PPCE, qui applique uniquement aux mécanismes de capture TPACKET_V1 et TPACKET_V2 mappés en mémoire sous Linux, qui ont des emplacements de paquets de taille fixe; d'autres mécanismes de capture ne réservent pas une fente de taille maximale pour chaque paquet, donc une longueur de cliché plus courte ne sera pas question. Pour TPACKET_V1 et TPACKET_V2, une plus petite longueur d'instantané pourrait faire une différence, bien que, au moins pour Ethernet, libpcap 1.2.1 tentatives, le mieux possible, de choisir une taille de fente tampon appropriée pour Ethernet. (TPACKET_V3 ne semble pas avoir la taille fixe fentes par paquet, auquel cas il n'aurait pas ce problème, mais il ne est apparu dans les noyaux officiellement libérés récemment, et aucun appui existe encore libpcap.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top