À quoi sert la commande Linux de capture de paquets tcpdump ?

青灯夜游
Libérer: 2020-11-03 11:15:15
original
9389 Les gens l'ont consulté

La commande Linux de capture de paquets tcpdump est utilisée pour vider les données de transmission réseau. Elle peut intercepter complètement « l'en-tête » des paquets de données transmis dans le réseau et fournir une analyse. Elle prend en charge la couche réseau, le protocole, l'hôte et le réseau ; ou filtrez le port et fournissez des instructions logiques telles que et, ou, ne pas pour vous aider à supprimer les informations inutiles.

À quoi sert la commande Linux de capture de paquets tcpdump ?

Recommandations associées : "Tutoriel vidéo Linux"

Introduction

La commande Linux tcpdump est utilisée pour vider les données de transmission réseau.

Exécutez la commande tcpdump pour répertorier les en-têtes de paquets transitant par l'interface réseau spécifiée. Dans le système d'exploitation Linux, vous devez être un administrateur système.

Pour définir tcpdump en termes simples, c'est : dumper le trafic sur un réseau, un outil d'analyse de paquets qui intercepte les paquets de données sur le réseau selon la définition de l'utilisateur. tcpdump peut intercepter complètement les « en-têtes » des paquets de données transmis sur le réseau et fournir une analyse. Il prend en charge le filtrage par couche réseau, protocole, hôte, réseau ou port, et fournit des instructions logiques telles que et, ou, ne pas vous aider à supprimer les informations inutiles.

Exemples de commandes pratiques

Démarrer par défaut

tcpdump
Copier après la connexion

Normal situation Ensuite, démarrer directement tcpdump surveillera tous les paquets de données circulant sur la première interface réseau.

Surveiller les paquets de données de l'interface réseau spécifiée

tcpdump -i eth1
Copier après la connexion

Si vous ne spécifiez pas de carte réseau, par défaut, tcpdump ne surveillera que le première interface réseau, généralement eth0, aucun des exemples ci-dessous ne spécifie une interface réseau.

Surveiller les paquets de l'hôte spécifié

Imprimer tous les paquets entrant ou sortant du coucher du soleil

tcpdump host sundown
Copier après la connexion

peut également être spécifié par adresse IP. , par exemple, intercepter tous les paquets de données reçus et envoyés par tous les 210.27.48.1 hôtes

tcpdump host 210.27.48.1
Copier après la connexion

Imprimer les paquets de données communiqués entre helios et hot ou as

tcpdump host helios and \( hot or ace \)
Copier après la connexion

Intercepter la communication de l'hôte 210.27.48.1 et de l'hôte 210.27.48.2 ou 210.27.48.3

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
Copier après la connexion

impriment avec tout autre hôte les paquets IP communiqués entre chacun autre, mais hors paquets avec helios.

tcpdump ip host ace and not helios
Copier après la connexion

Si vous souhaitez obtenir l'hôte 210.27.48.1 en plus de l'hôte 210.27.48.2ip paquets communiqués par tous les hôtes autres que 🎜>, utilisez la commande :

tcpdump ip host 210.27.48.1 and ! 210.27.48.2
Copier après la connexion

pour intercepter toutes les données envoyées par l'hôte

nom d'hôte

tcpdump -i eth0 src host hostname
Copier après la connexion
surveiller toutes les données envoyées Paquets à l'hôte

nom d'hôte

tcpdump -i eth0 dst host hostname
Copier après la connexion

Surveillez les paquets vers l'hôte et le port spécifiés

si vous souhaitez obtenir l'hôte pour

telnet paquets reçus ou envoyés par 210.27.48.1, utilisez la commande suivante

tcpdump tcp port 23 and host 210.27.48.1
Copier après la connexion
pour surveiller le

udp 123 port 123 Surveiller les paquets pour le réseau spécifié pour le port de service ntp Tous les paquets de communication entre les hôtes du réseau (nt : ucb-ether, peut être compris ici comme l'adresse réseau du « réseau de Berkeley ». L'original la signification de cette expression peut être exprimée comme suit : Imprimer l'adresse réseau de ucb-ether Tous les paquets)

tcpdump udp port 123
Copier après la connexion
Imprimer tous les paquets ftp passant par le snup de la passerelle (notez que l'expression est entourée de guillemets simples, ce qui empêche le shell d'interpréter mal les parenthèses)

tcpdump net ucb-ether
Copier après la connexion

Imprimer tous les paquets IP dont l'adresse source ou l'adresse de destination est l'hôte local(Si le réseau local est connecté à un autre réseau via une passerelle, l'autre réseau ne peut pas être compté comme le réseau local. (nt: La traduction de cette phrase est tortueuse, doit être complétée).localnet doit être remplacé par le nom du réseau local lorsqu'il est réellement utilisé)

tcpdump 'gateway snup and (port ftp or ftp-data)'
Copier après la connexion

Surveiller les paquets de données du protocole spécifié

Imprimer les paquets de données de début et de fin dans la session TCP, et la source ou la destination du paquet de données n'est pas un hôte sur le réseau local. (nt: localnet, il doit être remplacé par le nom du réseau local lorsqu'il est réellement utilisé))

tcpdump ip and not net localnet
Copier après la connexion

Imprime tous les ports source ou de destination qui sont au nombre de 80, le protocole de couche réseau est IPv4 et contiennent data, au lieu des paquets SYN, FIN et ACK uniquement qui ne contiennent pas de données (la version ipv6 de l'expression peut être utilisée comme exercice)

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
Copier après la connexion

(nt : peut être compris comme, ip[2). :2] représente la longueur de l'intégralité du paquet de données IP, (ip[0]&0xf)<<2) représente la longueur de l'en-tête du paquet de données IP (ip[0] &0xf représente le champ DIH dans le package, et l'unité de ce champ est 32 bits, qui doit être converti

成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为 ((tcp[12]&0xf0) >> 4) << 2, 
即 ((tcp[12]&0xf0)>>2). ((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去
tcp头的长度不为0, 这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的'Payload Length' 与 'tcp头的长度'的差值, 并且其中表达方式'ip[]'需换成'ip6[]'.)

打印长度超过576字节, 并且网关地址是snup的IP数据包

tcpdump 'gateway snup and ip[2:2] > 576'
Copier après la connexion

打印所有IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
Copier après la connexion

打印除'echo request'或者'echo reply'类型以外的ICMP数据包( 比如,需要打印所有非ping 程序产生的数据包时可用到此表达式 .
(nt: 'echo reuqest' 与 'echo reply' 这两种类型的ICMP数据包通常由ping程序产生))

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
Copier après la connexion

tcpdump 与wireshark

Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
Copier après la connexion

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

使用tcpdump抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
Copier après la connexion

0x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"。

tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序(如Wireshark)进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

输出信息含义

首先我们注意一下,基本上tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数

tcpdump 的输出格式与协议有关.以下简要描述了大部分常用的格式及相关例子.

链路层头

对于FDDI网络, '-e' 使tcpdump打印出指定数据包的'frame control' 域, 源和目的地址, 以及包的长度.(frame control域
控制对包中其他域的解析). 一般的包(比如那些IP datagrams)都是带有'async'(异步标志)的数据包,并且有取值0到7的优先级;
比如 'async4'就代表此包为异步数据包,并且优先级别为4. 通常认为,这些包们会内含一个 LLC包(逻辑链路控制包); 这时,如果此包
不是一个ISO datagram或所谓的SNAP包,其LLC头部将会被打印(nt:应该是指此包内含的 LLC包的包头).

对于Token Ring网络(令牌环网络), '-e' 使tcpdump打印出指定数据包的'frame control'和'access control'域, 以及源和目的地址,
外加包的长度. 与FDDI网络类似, 此数据包通常内含LLC数据包. 不管 是否有'-e'选项.对于此网络上的'source-routed'类型数据包(nt:
意译为:源地址被追踪的数据包,具体含义未知,需补充), 其包的源路由信息总会被打印.

对于802.11网络(WLAN,即wireless local area network), '-e' 使tcpdump打印出指定数据包的'frame control域,
包头中包含的所有地址, 以及包的长度.与FDDI网络类似, 此数据包通常内含LLC数据包.

(注意: 以下的描述会假设你熟悉SLIP压缩算法 (nt:SLIP为Serial Line Internet Protocol.), 这个算法可以在
RFC-1144中找到相关的蛛丝马迹.)

Pour le réseau SLIP (ntr : les liens SLIP, qui peuvent être compris comme un réseau, c'est-à-dire une connexion établie via une ligne série, et une simple connexion peut également être considérée comme un réseau),
'indicateur de direction ' du paquet de données (« Indicateur de direction ») ("I" signifie entrée, "O" signifie sortie), les informations de type et de compression seront imprimées en premier.

les types sont divisés. en ip, utcp et ctcp (nt : inconnu, à compléter) Pour les paquets ip, les informations de connexion ne seront pas imprimées (nt : connexion SLIP, les informations de connexion du paquet ip peuvent être inutiles ou indéfinies.
reconfirmer). Pour les paquets de données TCP, connexion L'identifiant est imprimé à côté de l'indication de type. Si le package est compressé, son en-tête codé sera imprimé
À ce moment, pour les packages compressés spéciaux, il sera affiché comme suit. :
*S+n ou *SA +n, où n représente le nombre d'augmentations ou de diminutions du (numéro de séquence ou (numéro de séquence et numéro de réponse)) du colis (nt | rt : S, SA est gênant et doit être traduit à nouveau).
Pour les packages compressés non spéciaux, zéro ou plusieurs « modifications » seront imprimées au format suivant :
« drapeau » +/-/=n Le. longueur des données du paquet et la longueur de l'en-tête compressé.
où 'Le drapeau' peut prendre les valeurs suivantes :
U (représente un pointeur urgent), W (faisant référence à la fenêtre tampon), A (réponse), S ( numéro de séquence), I (ID du package) et l'expression incrémentale '=n' signifie qu'une nouvelle valeur lui a été attribuée, +/- signifie une augmentation ou une diminution

Par exemple, ce qui suit montre l'impression d'un message sortant. paquet TCP compressé, qui contient un identifiant de connexion ; réponse Le nombre a augmenté de 6,
Le numéro de séquence a augmenté de 49 et le numéro d'identification du paquet a augmenté de 6, la longueur des données du paquet est de 3 octets (octect), et l'en-tête compressé fait 6 octets. (nt : il semble que ce ne soit pas un paquet de données compressé spécial).

Paquet de données ARP/RARP

Les informations de sortie de tcpdump pour Arp/rarp. Le package inclura le type de demande et les paramètres correspondant à la demande. Le format d'affichage est concis et clair. Ce qui suit est un exemple de paquet au début du processus 'rlogin'
(connexion à distance) de l'hôte rtsg à l'hôte csam. :
arp who-has csam tell rtsg
arp réponse csam is-at CSAM
La première ligne indique : rtsg a envoyé un paquet arp (ntr : envoyé à l'ensemble du segment de réseau, paquet arp) pour interroger le Adresse Ethernet de csam
Csam (nt : visible d'en bas, c'est Csam) à Sa propre adresse Ethernet répondue (dans cet exemple, l'adresse Ethernet est identifiée par le nom en majuscule, et l'adresse Internet
( c'est-à-dire l'adresse IP) est identifiée par le nom entièrement en minuscules).

Si vous utilisez tcpdump -n, vous pouvez voir clairement les adresses Ethernet et IP au lieu des identifiants de nom :
arp who-has 128.3. 254.6 tell 128.3.254.68
arp réponse 128.3.254.6 is-at 02:07:01: 00:01:c4

Si nous utilisons tcpdump -e, nous pouvons clairement voir que le premier paquet de données est diffusé sur l'ensemble du réseau, tandis que le deuxième paquet de données est point à point :
RTSG Broadcast 0806 64 : arp who-has csam tell rtsg
CSAM RTSG 0806 64 : arp réponse csam is-at CSAM
Le premier paquet de données indique : l'adresse Ethernet source du paquet arp est RTSG, et l'adresse de destination est tout le segment du réseau Ethernet, la valeur du champ type est hexadécimal 0806 (représentant ETHER_ARP (nt : identifiant de type de paquet arp)),
La longueur totale du paquet est de 64 octets

Paquet TCP

(Remarque : ce qui suit supposera que vous êtes familier. avec TCP comme décrit dans la RFC-793. Si vous ne le connaissez pas, la description suivante et le programme tcpdump ne vous seront peut-être pas d'une grande aide. (ntp : l'avertissement peut être ignoré,
Continuez simplement à lire, et retournez aux endroits inconnus.).

Habituellement, tcpdump affiche les paquets de données TCP dans le format suivant :
src > dst sont les adresses IP source et de destination et les ports correspondants. Les drapeaux sont constitués de S(SYN), F(FIN), P(PUSH, R(RST),

Il est composé de W (ECN CWT (nt | rep : inconnu, doit être complété)) ou E (ECN-Echo (nt | rep : inconnu, doit être complété)).

Un seul '.' signifie qu'il n'y a pas d'identifiant de segment de données (). Data-seqno) décrit une position dans l'espace des numéros de séquence correspondant aux données de ce paquet (nta : les données entières sont segmentées,
chaque segment a un numéro de séquence, et tous les numéros de séquence constituent un espace de numéros de séquence) (veuillez reportez-vous à l'exemple suivant). Ack décrit la même connexion, la même direction et le numéro de séquence du prochain fragment de données
que l'extrémité locale doit recevoir (l'autre partie doit envoyer Window is available to the local end). . La taille du tampon de réception des données (c'est également la taille selon laquelle l'autre partie doit organiser les données lors de l'envoi des données).
Urg (urgent) indique qu'il y a des données urgentes dans le paquet de données. options de TCP, ces options sont toutes pointées Exprimées entre parenthèses (comme ).

Les trois champs src, dst et flags seront toujours affichés ou non, cela dépend des informations. dans l'en-tête du protocole TCP.

Il s'agit de la première étape de la connexion d'une application rlogin de trsg à csam.
rtsg.1023 > csam.login : S 768512:768512(0) win 4096
csam login. & gt; RTSG.1023 : S 947648 : 947648 (0) ACK 768513 Win 4096 & LT ; MSS 1024 & GT ; > rtsg.1023 : .ack 2 victoire 4096
rtsg.1023 > csam.login : P 2:21(19) ack 1 victoire 4096
csam.login > (1) ack 21 gagne 4077
csam.login > rtsg.1023 : P 2:3(1) ack 21 gagne 4077 urg 1
csam.login > ) ack 21 win 4077 urg 1
La première ligne indique qu'un paquet de données est envoyé depuis le port tcp 1023 de l'hôte rtsg vers le tcp de l'hôte csam Sur le port login (nt: le port du protocole udp et le port du protocole TCP sont deux espaces distincts, bien que la plage de valeurs soit la même). S signifie que l'indicateur SYN est défini. Le numéro de séquence du paquet est 768512 et ne contient pas de données (le format de représentation est : 'first:last(nbytes)', ce qui signifie 'le numéro de séquence des données dans ce package commence par le premier et se termine par le dernier, à l'exclusion du dernier et un total de noctets de
utilisateurs sont inclus dans les données'. ) Il n'y a pas de réponse de ferroutage (nt: dans ce qui suit, la deuxième ligne est le paquet de données avec réponse de ferroutage), la taille de la fenêtre d'acceptation disponible est de 4096 octets et la valeur maximale acceptable du côté requête (rtsg)
La taille du segment de données est de 1 024 octets (nta : cette information est envoyée au csam final qui répond en tant que demande de négociation ultérieure entre les deux parties

Csam a répondu au rtsg avec fondamentalement le même paquet SYN, la différence). est juste plus un 'accusé de réception' (ntr: réponse ack ramenée, pour le paquet SYN de rtsg

rtsg a également répondu au paquet SYN de csam avec un paquet ACK comme réponse 'signifie que. aucun indicateur n'est défini dans ce paquet. Étant donné que ce paquet de réponse ne contient pas de données, il n'y a pas de numéro de séquence de segment de données dans le paquet
. Rappel : le numéro de séquence de ce paquet ACK est juste un petit entier 1. Oui Ce qui suit. explication : pour une session sur une connexion TCP, tcpdump imprime uniquement le numéro de séquence du paquet initial aux deux extrémités de la session, et les paquets correspondants suivants affichent uniquement la différence par rapport au numéro de séquence du paquet initial, c'est-à-dire la séquence suivante. le numéro de séquence initial, peut être considéré comme la position « octet relatif » du fragment de données actuellement transmis sur cette session dans l'ensemble des

données à transmettre (nt : la première position des deux côtés est 1, c'est-à-dire le numéro de départ de l'octet relatif). '-S' remplacera cette fonction,

de sorte que le numéro de séquence original du paquet de données soit imprimé

La signification de la sixième ligne est : rtsg envoyé. 19 octets vers csam Data (les octets sont numérotés de 2 à 20, le sens de transmission est rtsg vers csam). L'indicateur PUSH est défini dans le paquet,
csam crie qu'elle a reçu des octets inférieurs à 21 de rtsg , mais. n'inclut pas l'octet numéroté 21. Ces octets sont stockés dans le tampon de réception du socket de csam. En conséquence,
la taille de la fenêtre du tampon de réception de csam sera réduite de 19 octets (nt : peut être obtenu à partir des lignes 5 et 4. Vous pouvez le voir. le changement de la valeur de l'attribut win à la ligne 7). csam a également envoyé un octet
à rtsg dans le package à la ligne 7. Aux lignes 8 et 9, csam a continué à envoyer deux octets à rtsg respectivement. paquet de données, et ce paquet de données porte le drapeau PUSH.

Si le paquet TCP capturé (nt: l'instantané ici) est trop petit, tcpdump ne peut pas obtenir complètement ses données d'en-tête, à ce moment, tcpdump essaiera de analysez l'en-tête incomplet,

et affichez la partie non analysable restante sous la forme '[|tcp]'. Si l'en-tête contient de fausses informations d'attribut (par exemple, son attribut de longueur est en fait plus long que l'en-tête. La longueur réelle de l'en-tête est longue. ou court), tcpdump affichera '[bad opt]' pour l'en-tête
Si la longueur de l'en-tête nous indique quelques options (nt | rt : d'en bas, fait référence à l'en-tête du paquet TCP Certaines options pour le. ip dans la section, regardez en arrière) sera dans ce package,
et la longueur de la véritable IP (le paquet de données n'est pas suffisant pour accueillir ces options, tcpdump affichera '[mauvaise longueur hdr]'.

Capturez les paquets TCP avec des indicateurs spéciaux (tels que l'indicateur SYN-ACK, l'indicateur URG-ACK, etc.).


Dans l'en-tête TCP, il y a 8 bits pour la zone de bits de contrôle, sa valeur est :
CWR | ECE | URG | PSH | RST | FIN
(nt | rt : cela peut être déduit de l'expression : ces 8 bits sont OU. Pour combiner, vous pouvez revenir en arrière et lire)

Supposons maintenant que nous souhaitions surveiller les paquets de données générés pendant tout le processus d'établissement d'une connexion TCP. Cela peut être rappelé comme suit : TCP utilise le protocole de prise de contact à trois voies pour établir une nouvelle connexion. cette prise de contact à trois

séquence de connexion, et les paquets de données avec les indicateurs de contrôle TCP correspondants sont les suivants :

1) L'initiateur de la connexion (nt : appelant) envoie un paquet de données avec l'indicateur SYN
2) Réception La partie (nt:Recipient) répond avec un paquet de données avec les drapeaux SYN et ACK
3) L'initiateur reçoit la réponse du destinataire puis envoie un paquet de données avec le drapeau ACK pour répondre

0 15 31
----------------------------------------- --------------------------
| port source | port de destination |
----------- -- ------------------------------------------------ -- --
| numéro de séquence |
------------------------------------ ----------- --------------------------
| numéro d'accusé de réception |
--- ---------- --------------------------------------------- ---------- --
| rsvd |C|E|U|A|P|R|S|F| ---------- --------------------------------------------- ----------
| Somme de contrôle TCP | pointeur urgent |
-------------------------- ------------- -----------------------------

Un en-tête TCP, généralement de 20 octets s'il ne contient pas de données d'option (nt | rt:options est compris comme des données d'option et doit être rétro-traduit). La première ligne contient des octets numérotés de 0 à 3,

et la deuxième ligne contient des octets numérotés de 4-). 7.

Si le nombre commence à 0 et que l'indicateur de contrôle TCP est situé à 13 octets (nt : la moitié gauche de la quatrième ligne

0 7| 31

--------- -------|-------------------|------------- --|---------- ------
| rsvd |C|E|U|A|P|R|S|F| ------------- --|---------------|---------------|-- ------------- -
| -----|
|C|E|U|A|P|R|S|F|
|-- -------------|

| 7 5 3 0|

Voici les bits du drapeau de contrôle qui nous intéressent. De droite à gauche, ces bits sont numérotés de 0 à 7, de sorte que le bit PSH soit au numéro 3 et le bit URG au numéro 5.


Rappelez-vous que nous recevons uniquement les paquets qui contiennent le drapeau SYN. ​​Voyons ce qui se passe à l'octet 13. un en-tête de paquet si le bit SYN est activé :

|C|E|U|A|P|R|S|F|
|------------- --|

|0 0 0 0 0 0 1 0|

|---------------|

|7 6 5 4 3 2 1 0|


Données dans le segment de contrôle, seul le bit numéro 1 est défini

Supposons que l'octet numéroté 13 est un type de caractère non signé de 8 bits et est trié en fonction du numéro d'octet du réseau (nt). : pour une section de mot, l'ordre des octets du réseau est équivalent à l'ordre des octets de l'hôte), sa valeur binaire
est la suivante :
00000010

et sa valeur décimale est :

0 *2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 2( nt :1 >Proche de la cible, car nous savons déjà que si SYN dans l'en-tête du paquet de données est défini, alors la valeur du 13ème octet dans l'en-tête est 2 (ntr : dans l'ordre du réseau, c'est-à-dire le plus important La section de mot

est devant (devant, c'est-à-dire que l'adresse mémoire réelle de l'octet est relativement petite, l'octet le plus important fait référence au bit haut du nombre dans la représentation mathématique, comme 3) en 356) .


est exprimé comme L'expression relationnelle que tcpdump peut comprendre est :
tcp[13] 2

Par conséquent, nous pouvons utiliser cette expression relationnelle comme condition de filtre de tcpdump, et le le but est de surveiller les paquets de données qui contiennent uniquement l'indicateur SYN :

tcpdump -i xl0 tcp[13] 2 (nt: xl0 fait référence à l'interface réseau, comme eth0)


Cette expression signifie "laisser le 13ème octet du paquet TCP a la valeur 2", qui est également le résultat que nous voulons.

Maintenant, supposons que nous devions capturer le paquet avec l'indicateur SYN, qu'il contienne ou non d'autres indicateurs. (nt : tant qu'il a SYN, c'est ce que nous voulons). Regardons ce qui se passe lorsqu'un paquet avec
SYN-ACK (les drapeaux nt:SYN et ACK) arrive :

|C|E|U| A|P|R|S|F|

|---------------|
|0 0 0 1 0 0 1 0|

|--- -------- ----|

|7 6 5 4 3 2 1 0|

Les bits 1 et 4 de l'octet 13 sont définis et sa valeur binaire est :

00010010

converti en décimal est :

0*2^7 + 0*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0 *2^ 2 + 1*2^1 + 0*2 = 18(nt : 1 * 2^6 signifie 1 fois 2 élevé à la puissance 6. C'est peut-être plus clair, c'est-à-dire que l'exposant dans l'expression originale est 7 6. .. 0 a été déplacé ci-dessous pour exprimer)

Maintenant, vous ne pouvez pas utiliser uniquement 'tcp[13] 18' comme expression de filtre de tcpdump, car cela entraînera la sélection uniquement des paquets contenant le SYN -Drapeau ACK. Les autres sont rejetés.
Rappelez-vous que notre objectif est le suivant : tant que le drapeau SYN du paquet est défini, nous ignorons les autres drapeaux

Afin d'atteindre notre objectif, nous. il faut mettre 13. La valeur binaire de l'octet No. est associée à un autre nombre (nt : ET logique) pour obtenir la valeur du bit SYN. ​​Le but est le suivant : tant que SYN est défini

, nous le combinons donc. avec la valeur SYN n ° 13 de la section (nt: 00000010).

00010010 SYN-ACK 00000010 SYN

AND 00000010 (nous voulons SYN) AND 00000010 (nous voulons SYN)

-- ------ --------

= 00000010 = 00000010

Nous pouvons constater que peu importe si l'ACK ou d'autres indicateurs du paquet sont définis, l'opération ET ci-dessus nous donnera la même valeur, et son expression décimale est 2 (l'expression binaire est 00000010).
Ainsi on sait que pour les paquets avec le flag SYN, le résultat de l'expression suivante est toujours vrai :

( (valeur de l'octet 13 ) AND ( 2 ) ) ( 2 ) (nt: valeur de l'octet 13, que c'est-à-dire la valeur de l'octet 13)

L'inspiration est venue et nous avons obtenu l'expression de filtre suivante de tcpdump
tcpdump -i xl0 'tcp[13] & 2 2'

Remarque que les guillemets simples ou les barres obliques inverses (nt: les guillemets simples sont utilisés ici) ne peuvent pas être omis, ce qui peut empêcher le shell d'interpréter ou de remplacer &.

Paquet de données UDP

Le format d'affichage du paquet de données UDP peut être expliqué par le paquet de données généré par l'application spécifique rwho :
actinide.who > Broadcast.who : udp 84

La signification est : le port qui sur l'hôte actinide a envoyé un paquet udp au port qui sur l'hôte de diffusion (nt: actinide et Broadcast font tous deux référence à l'adresse Internet).
Ce paquet transporte des données utilisateur de 84 octets.

Certains services UDP peuvent être identifiés à partir du port source ou de destination du paquet, ou à partir des informations de protocole de couche supérieure affichées. Par exemple, les demandes de service de nom de domaine (requêtes DNS,
dans RFC-1034/1035), et les appels Sun RPC vers NFS (appels à distance lancés vers le serveur NFS (nt : Sun RPC), les appels à distance sont décrits dans la

Demande de service de nom UDP

(Remarque : La description suivante suppose que vous êtes familier avec le protocole Domain Service (ntr : décrit dans la RFC-103), sinon vous constaterez que la description suivante est une bible ( nt : bible grecque,
Ne vous embêtez pas, je' Je vous fais peur, continuez à lire))

La demande de service de nom a le format suivant :
src > dst: id op? flags qtype qclass name (len)
(nt: From the suivant, le format doit être src > dst: id op flags qtype qclass? name (len))
Par exemple, on affiche en fait :
h2opolo.1538 > berkeley.edu. (37)

L'hôte h2opolo interroge le serveur de noms exécuté sur helios pour l'enregistrement d'adresse de ucbvax.berkeley.edu (nt : qtype est égal à A) . '. Le symbole
'+' signifie que l'indicateur de requête récursive est défini (nt: le serveur DNS peut interroger le serveur DNS de niveau supérieur pour les enregistrements d'adresses qui ne sont pas inclus dans ce serveur. Cette requête est finalement transmise). La requête
envoyée par le paquet IP a une longueur de données de 37 octets, qui n'inclut pas les données d'en-tête des protocoles UDP et IP. Parce que cette opération de requête est la valeur par défaut (nt | rt : compréhension normale), le Le champ op est omis.
Si le champ op n'est pas omis, il sera affiché entre '3' et '+'. De même, qclass est également la valeur par défaut, C_IN, et ne sera donc pas affiché si c'est le cas. non omis, il sera affiché entre 'Après A'.

La vérification des exceptions affichera des champs supplémentaires entre crochets : Si une requête contient également une réponse (nt: peut être compris comme une réponse à une autre requête précédente) , et cette réponse contient un segment d'enregistrement faisant autorité ou supplémentaire,
ancount, nscout, arcount (nt: la signification du champ spécifique doit être complété) sera affiché comme '[na]', '[nn]', '[nau ]', où n représente le nombre approprié. Si les bits de réponse
suivants dans le paquet (tels que le bit AA, le bit RA, le bit rcode), ou l'un des bits « doivent être 0 » dans l'octet 2 ou 3 est set (nt : défini sur 1), '[b2&3]=x' sera affiché, où x représente la valeur de
octet d'en-tête 2 et octet 3

Réponse du service de nom UDP

.

paire de paquets de données de réponse du service de nom, tcpdump aura le format d'affichage suivant
src > dst : id op rcode flags a/n/au type class data (len)
Par exemple, l'affichage spécifique est comme suit :
helios.domain > h2opolo.1538 : 3 3/3/7 A 128.32.137.3 (273)
helios.domain > )

Non. Une ligne signifie : helios a répondu à la demande de requête n°3 envoyée par h2opolo avec 3 enregistrements de réponse (nt | rt : enregistrements de réponse), 3 enregistrements de serveur de noms,
et 7 enregistrements supplémentaires. Le premier enregistrement de réponse (nt : le premier des 3 enregistrements de réponse) est de type A (nt : représente l'adresse), et ses données sont l'adresse Internet 128.32.137.3.
Ce paquet UDP de réponse contient 273 octets de données (non inclus Données d'en-tête UPD et IP). Le champ op et le champ rcode sont ignorés (nt: la valeur réelle de op est Query, rcode, c'est-à-dire que la valeur réelle du code de réponse
est NoError), et le champ de classe est également ignoré (nt | rt : sa valeur est C_IN, qui est également la valeur par défaut des enregistrements de type A)

La deuxième ligne indique : helios a répondu à la demande de requête n°2 envoyée par h2opolo. Dans la réponse, rcode est codé comme NXDomain (nt : indique un domaine inexistant)), et il n'y a pas d'enregistrement de réponse, mais il contient des enregistrements de serveur de noms, à l'exclusion des enregistrements de serveur faisant autorité (nt | ck : d'après ce qui précède, les enregistrements d'autorité ici sont les enregistrements
supplémentaires correspondants ci-dessus '*' indique que l'indicateur de réponse du serveur faisant autorité est défini (). tdp : Par conséquent, les enregistrements supplémentaires représentent des enregistrements d'autorité).
Puisqu'il n'y a pas d'enregistrement de réponse, les champs de type, de classe et de données sont ignorés.

Il peut y avoir d'autres caractères dans le champ d'indicateur, tels que. '-'(nt : indique une requête récursive, c'est-à-dire que l'indicateur RA n'est pas défini), '|'(nt : indique un message tronqué, c'est-à-dire que l'indicateur TC

est défini si la réponse (nt). | ct : peut être compris comme des paquets UDP contenant des réponses du service de noms, tcpdump sait comment analyser les données de ce type de paquets)' La section 'question' ne contient pas d'entrée (nt : la signification de chaque entrée doit être ajouté), '[nq]' sera imprimé.

Il convient de noter que le volume de données de requête et de réponse du serveur de noms est relativement important et que la longueur de capture par défaut est de 68 octets (nt: snaplen, compréhensible Une option de configuration pour tcpdump) peut ne pas suffire pour capturer l'intégralité du contenu des

paquets. Si vous avez vraiment besoin d'examiner de plus près la charge du serveur de noms, vous pouvez augmenter la valeur snaplen avec l'option -s de tcpdump.


Décodage SMB/CIFStcpdump peut décoder le contenu des paquets des applications liées à SMB/CIFS/NBT (nt: 'Server Message Block Common' respectivement ', 'Internet File System'

'Abréviation de NETBIOS, un protocole réseau implémenté sur TCP/IP'. Ces services utilisent généralement le port UDP 137/138 et le port TCP 139). 🎜> la capacité de décodage des paquets de données peut toujours être utilisée (nt: NetBEUI est une version améliorée de NETBIOS


tcpdump ne décode par défaut que les paquets de données correspondants dans le mode le plus simple, si nous voulons un décodage détaillé. Les informations peuvent être utilisées). être affiché en utilisant son option de démarrage -v. Il convient de noter que -v générera des informations très détaillées,
Par exemple, pour un seul paquet SMB, un écran ou plus d'informations seront générés, donc cette option, utilisez-la. uniquement lorsque cela est nécessaire.

Pour plus d'informations sur le format du paquet SMB et la signification de chaque champ, veuillez vous référer à www.cifs.org ou au répertoire pub/samba/specs/ du site miroir samba.org On. linux Le patch SMB
(nt | rt: patch) fourni par Andrew Tridgell (tridge@samba.org

Requêtes et réponses NFS

tcpdump pour Sun NFS (Network File System). ) Les paquets UDP de requête et de réponse sont imprimés au format suivant :

src.xid > dst.nfs : len op args

src.nfs > >

Ce qui suit est un ensemble spécifique de données de sortie
sushi.6709 > wrl.nfs : 112 readlink fh 21,24/10.73165
wrl.nfs > ../ var"

sushi.201b > wrl.nfs:

144 recherche fh 9,74/4096.6878 "xcolors"
wrl.nfs > sushi.201b:
réponse ok 128 recherche fh 9, 74/4134.3150

La première ligne de sortie indique : L'hôte sushi a envoyé une "demande d'échange" (nt: transaction) à l'hôte wrl. L'identifiant de cette demande est 6709 (notez que l'hôte Le nom est suivi de Exchange
Numéro d'identification de la demande, pas du numéro de port source. Ces données de demande font 112 octets, ce qui n'inclut pas la longueur des en-têtes UDP et IP. Le type d'opération est readlink (nt : c'est-à-dire cette opération). est une opération de lecture de lien symbolique),
Le paramètre de fonctionnement est fh 21,24/10.73165 (nta : il peut être analysé comme suit en fonction de l'environnement d'exploitation réel, fd signifie que la description est un descripteur de fichier, 21,24 désigne le couple de numéros de périphérique maître/esclave du périphérique correspondant à ce handle, 10 représente le numéro de i-node correspondant à ce handle (nta : chaque fichier correspondra à un i-node dans le système d'exploitation, limité aux systèmes Unix),

73165 est un nombre (ntr : peut être compris comme identifiant cette demande. Un nombre aléatoire, la signification spécifique doit être ajoutée)).


Dans la deuxième ligne, wrl a répondu par « ok », et a renvoyé le véritable répertoire du lien symbolique que sushi voulait lire dans le champ de résultats (ntr : c'est-à-dire que le lien symbolique que sushi a besoin de lire est en fait un répertoire. La troisième ligne de

indique : sushi). demande à nouveau à wrl de trouver le fichier 'xcolors' dans le répertoire décrit par 'fh 9,74/4096.6878'. Obligatoire Notez que la signification des données affichées dans chaque ligne dépend du type
du champ op (nt : la signification des arguments correspondant aux différentes opérations est différente), et son format suit le protocole NFS, dans un souci de simplicité et de clarté

Si l'option -v (option d'impression détaillée) de tcpdump est définie, des informations supplémentaires seront. affiché. Par exemple :

sushi.1372a > wrl.nfs :

148 read fh 21,11/12.195 8192 bytes @ 24576
wrl.nfs > lire REG 100664 ids 417/0 sz 29388

(-v) affiche généralement également les champs TTL, ID, longueur et fragmentation de l'en-tête IP, mais dans cet exemple, ils sont tous omis (ntr : on peut comprendre qu'il a été supprimé pour le plaisir par souci de brièveté) ))
Dans la première ligne, sushi demande à wrl de lire 8192 octets de données du fichier 21,11/12.195 (nt: le format est décrit ci-dessus), en commençant au décalage de 24576 octets.
Réponse Wrl lu avec succès ; puisque la deuxième ligne n'est que le fragment de début de la demande de réponse, elle ne contient que 1472 octets (d'autres données viendront dans les fragments de réponse suivants, mais ces paquets n'auront plus d'en-têtes NFS
, même l'en-tête UDP les informations sont vides (nt: la source et la destination doivent être présentes), ce qui empêchera ces fragments de répondre aux conditions de filtre et ne seront donc pas imprimés). En plus d'afficher les informations sur les données du fichier, l'option -v affichera également Afficher des informations supplémentaires sur les attributs du fichier : type de fichier (type de fichier, "REG" signifie fichier ordinaire), mode de fichier (mode d'accès au fichier, représentation octale), uid et gid (nt : propriétaire du fichier et
propriétaire du groupe), taille du fichier (taille du fichier).

Si l'indicateur -v est donné plusieurs fois (nt: comme -vv), tcpdump affichera des informations plus détaillées.

Obligatoire Il convient de noter que il y a beaucoup de données dans le paquet de requête NFS. Si le snaplen (nt : longueur de capture) de tcpdump est trop court, ses informations détaillées ne seront pas affichées. Vous pouvez utiliser

'-s 192' pour augmenter le snaplen. , qui peut être utilisé pour surveiller la charge réseau des applications NFS (nt: trafic).

Les paquets de réponse NFS ne suivent pas strictement les paquets de requête correspondants précédents (nt: opération RPC). Par conséquent, tcpdump suivra le. reçu le plus récemment Une série de paquets de requête, puis mis en correspondance avec le paquet de requête correspondant via son

numéro de séquence d'échange (nt: ID de transaction). Cela peut causer un problème si le paquet de réponse arrive trop tard, au-delà de la plage de suivi. du paquet de requête correspondant par tcpdump,
Ce paquet de réponse ne sera pas analysé

Requête et réponse AFS

AFS(nt. : Andrew File System, Transarc, Inconnu, Doit être ajouté) La demande et la réponse ont les protocoles suivants

src.sport > dst.dport : rx packet-type

src.sport > .dport : nom d'appel d'appel de service de type paquet rx
src.sport > dst.dport : nom d'appel de réponse de service de type paquet rx

elvis.7001 >

rx data fs call renommer l'ancien fid 536876964/ 1/1 ".newsrc.new"
nouveau fid 536876964/1/1 ".newsrc"
pike.afsfs > réponse renommer

sur la première ligne, l'hôte Elvis a envoyé un paquet de données RX à Pike

Il s'agit d'un paquet de demande pour le service de fichiers (ntr : paquet de données RX, l'envoi d'un paquet de données peut être compris comme). envoi d'un paquet pour demander le service de l'autre partie), C'est aussi le début d'un appel RPC
(nt : RPC, appel de procédure distante). Ce RPC demande à pike d'effectuer une opération de renommage (nt : rename), et précise. les paramètres pertinents :
Le descripteur de répertoire d'origine est 536876964/1/1, le nom de fichier d'origine est '.newsrc.new', le nouveau descripteur de répertoire est 536876964/1/1, le nouveau nom de fichier est '.newsrc' .
L'hôte Pike a fait une requête RPC pour cette réponse d'opération de renommage (la réponse indique que l'opération de renommage a réussi, car la réponse est un paquet contenant du contenu de données plutôt qu'un paquet d'exception

Généralement). en parlant, toutes les requêtes 'AFS RPC' recevront un nom lorsqu'elles seront affichées (nt: decode, decode), ce nom est souvent le nom de l'opération de la requête RPC

De plus, certains paramètres de ces requêtes RPC le seront également. recevoir un nom lorsqu'il est affiché (nt | rt : decode, decode , d'une manière générale, la dénomination est également très simple. Par exemple,
un paramètre intéressant sera directement affiché comme « intéressant ». La signification est difficile à prononcer et nécessite à traduire à nouveau).

Ce format d'affichage L'intention initiale du design est de « comprendre en un coup d'œil », mais il peut ne pas être très

utile aux personnes qui ne connaissent pas les principes de fonctionnement. d'AFS et RX (ntr : ne vous inquiétez pas, cela vous fera peur par écrit, continuez simplement à lire

Si l'indicateur -v (verbeux) est donné à plusieurs reprises (ntr : comme -vv). ), tcpdump imprimera le paquet de confirmation (nt : compréhensible comme un paquet différent du paquet de réponse) et des informations d'en-tête supplémentaires

(nt : peut être compris comme tous les paquets, pas seulement les informations d'en-tête supplémentaires du paquet de confirmation), par exemple, l'ID de l'appel RX (l'ID de la « demande d'appel » dans le paquet de demande),
le numéro d'appel (« numéro de demande d'appel »), le numéro de séquence (ntr : numéro de séquence du paquet),
numéro de série (nt | rt : peut être compris comme un autre signal série lié aux données contenues dans le paquet, la signification spécifique doit être complétée), demander l'identification du paquet (nt : le paragraphe suivant est une description répétitive, donc il est omis), de plus, les informations de négociation MTU dans le paquet de confirmation seront également imprimées (nta : le paquet de confirmation est le paquet de confirmation relatif au paquet de demande, Unité de transmission maximale, Unité de transmission maximale).

Si l'option -v est répétée trois fois (nt: comme -vvv), alors l'« index de sécurité » (« index de sécurité ») et l'« index de service » ( « identifiant de service ») seront imprimés

.

Pour les paquets de données anormaux (nt: abort packet, qui peut être compris comme, ce paquet est utilisé pour informer le destinataire qu'une exception s'est produite), tcpdump imprimera les codes d'erreur
Mais pour les paquets de balise Ubik (. nt : paquet d'indication de balise Ubik, Ubik peut être compris comme un protocole de communication spécial, les paquets de balise, les paquets de données de phare, peuvent être compris comme certains paquets de données indiquant
informations clés dans la communication), le numéro d'erreur ne sera pas imprimé, car pour le protocole Ubik, le paquet de données anormal n'indique pas une erreur, mais plutôt une réponse positive (ntr : c'est-à-dire voter oui).

La requête AFS contient une grande quantité de données et de nombreux paramètres, donc tcpdump est requis Le snaplen est relativement volumineux. Vous pouvez généralement augmenter le snaplen en définissant l'option '-s 256' lors du démarrage de tcpdump pour
surveiller la charge de communication de l'application AFS

Les paquets de réponse AFS ne s'affichent pas. le type d'identification à distance RPC appartient à Call.Par conséquent, tcpdump suivra les paquets de requête au cours de la période récente et fera correspondre les paquets de réponse reçus via le numéro d'appel (numéro d'appel) et l'ID de service
(index de service). n'est pas pour le paquet de demande de période récente, tcpdump ne pourra pas analyser le paquet.

Protocole KIP AppleTalk

(nt | rt : DDP dans UDP peut être compris comme DDP, The AppleTalk Data Delivery Protocol,
est équivalent au protocole de couche réseau qui prend en charge la pile de protocoles KIP AppleTalk, et DDP lui-même est transmis via UDP,
qui est le réseau couche implémentée sur UDP pour d'autres réseaux. , KIP AppleTalk est un ensemble complet de piles de protocoles réseau développées par Apple

Les paquets AppleTalk DDP sont encapsulés dans des paquets UDP, et leur décapsulation (nt: équivalent au décodage) et le vidage des informations correspondantes suit également les règles des paquets DDP.
(nt:encapsulate, encapsulation, équivalent à encodage, désencapsulation, décapsulation, équivalent au décodage, dump, dump, fait généralement référence à l'impression de ses informations).

Le fichier /etc/atalk.names contient la correspondance entre les identifiants numériques des réseaux et nœuds AppleTalk et leurs noms. Le format de fichier ressemble généralement à ceci :
nom du numéro

1.254 ether 16.1 icsd- net
1.254.110 ace

Les deux premières lignes indiquent qu'il existe deux réseaux AppleTalk La troisième ligne donne les hôtes sur le réseau spécifique (un hôte sera identifié par 3 octets,

L'identifiant d'un réseau ne comporte généralement que deux octets, ce qui est aussi la principale différence entre les deux identifiants) (nt: 1.254.110 peut être compris comme l'hôte as sur le réseau Ethernet
Il doit y en avoir). un espace entre l'identifiant et son nom correspondant. Séparé par des espaces. En plus du contenu ci-dessus, /etc/atalk.names contient également des lignes vides et des lignes de commentaires (lignes commençant par '#').

Le L'adresse réseau complète AppleTalk sera affichée au format suivant :

net.host.port

Ce qui suit est un affichage spécifique :

144.1.209.2 > .2 > icsd-net.112.220
jssmag.149.235 > icsd-net.2

(Si le fichier /etc/atalk.names n'existe pas ou s'il n'y a pas d'entrée pour le fichier correspondant Hôte/réseau AppleTalk, l'adresse réseau du paquet sera affichée sous forme numérique).

Dans la première ligne, le nœud 209 sur le réseau 144.1 envoie un paquet d'application NBP

(nt | rt : NBP, protocole de liaison de nom, protocole de liaison de nom. Du point de vue des données, le serveur NBP fournira ce service sur le port 2.

'DDP port 2' peut être compris comme 'DDP correspond au port 2 de la couche transport'. DDP lui-même n'a aucune notion de port. , ce point n'est pas déterminé et doit être complété).

La deuxième ligne est similaire à la première ligne, sauf que toutes les adresses de la source peuvent être identifiées par 'bureau'. '.

La troisième ligne signifie : 149 sur le réseau jssmag Le nœud a envoyé un paquet de données via 235 au port 2 (port NBP) de tous les nœuds du réseau icsd-net (Il est à noter que

In. le réseau AppleTalk, s'il n'y a pas de nœud dans l'adresse, cela signifie l'adresse de diffusion, donc le nœud Il est préférable de distinguer l'identifiant et l'identifiant du réseau dans /etc/atalk.names
nt : Sinon, pour un. identifiant x.port, il est impossible de déterminer si x fait référence au port de tous les hôtes du réseau ou au port de l'hôte x spécifié

tcpdump peut analyser NBP (Name Binding Protocol) et ATP (). AppleTalk Transport Protocol). Pour les autres protocoles de couche application, seul le nom du protocole correspondant sera imprimé (

Si ce protocole n'enregistre pas de nom commun, seul son numéro de protocole sera imprimé) et la taille des données. paquet.


Le paquet de données NBP sera affiché au format suivant :

icsd-net.112.220 > jssmag.2 : nbp-lkup 190 : "=:LaserWriter@*"

jssmag. 209.2 > icsd-net.112.220 : nbp-réponse 190 : "RM1140:LaserWriter@*" 250
techpit.2 > 🎜>
La première ligne indique : Le nœud 112 du réseau icsd-net a envoyé le nom de 'LaserWriter' via le port 220 au port 2 de tous les nœuds du réseau jssmag Requête de requête (nt:
Le nom ici peut être compris comme le nom d'une ressource, telle qu'une imprimante). Le numéro de séquence de cette requête de requête est 190.

La deuxième ligne indique : Le nœud 209 du réseau jssmag a répondu au port 220 du nœud icsd-net.112 via le port 2 : J'ai une ressource 'LaserWriter', et son nom de ressource
est 'RM1140', et Fournit des services de modification de ressources sur le port 250. Le numéro de séquence de cette réponse est 190, ce qui correspond au numéro de séquence interrogé précédemment.

La troisième ligne est également la réponse à la requête de la première ligne : Node techpit demande icsd via le port 2 Le port 220 du nœud -net.112 a répondu : J'ai la ressource 'LaserWriter', son nom de ressource
est 'techpit' et le service de modification de ressource est fourni sur le port 186. Le numéro de séquence de cette réponse est 190, correspondant au numéro de séquence précédemment interrogé.

Le format d'affichage du paquet ATP est le suivant :
jssmag.209.165 > 0xae030001
helios.132 > e040000
hélios. 132 > 9.165 : atp-resp 12266:2 (512) 0xae040000
helios.132 > ssmag.209.165 : atp -resp 1226 6:5 (512) 0xae040000
helios.132 > p*12266 : 7 (512) 0xae04 0000
jssmag.209.165 > helios.132 : atp-req 12266<3,5> 6:3 (512)0xae040000
hélios.132> 01
jssmag.209.133 > helios .132 : atp-req * 12267<0-7> 0xae030002

La première ligne indique que le nœud Jssmag.209 a envoyé un paquet de requête avec le numéro de session 12266 au nœud helios, demandant à helios
répondre avec 8 paquets de données (ces 8 Le numéro de séquence du paquet de données est 0-7 (nt: Le numéro de séquence est différent du numéro de session. Ce dernier est le numéro d'une transmission complète.
Le premier est le numéro de chaque paquet de données dans la transmission, la transaction, la session, sont généralement aussi appelées transmission)). Le nombre hexadécimal à la fin de la ligne représente
la valeur du champ 'userdata' dans le paquet de requête (nt: from). ci-dessous, cela n'imprime pas toutes les données utilisateur).

Helios a répondu avec 8 paquets de données de 512 octets. Le numéro qui suit le numéro de session (nt : 12266) indique le numéro de séquence du paquet de données dans le fichier. session.
Le nombre entre parenthèses indique le numéro de séquence du paquet de données. La taille des données, qui n'inclut pas l'en-tête atp. Il y a un signe '*' à l'extérieur du paquet avec le numéro de séquence 7 (ligne 8). ,
indiquant que l'indicateur EOM du paquet est défini. (nt: EOM, End Of Media, peut être compris comme indiquant que la réponse aux données d'une session est terminée

La 9ème ligne suivante). indique que Jssmag.209 a fait une autre requête à Helios : numéros de séquence 3 et 5. Veuillez renvoyer le paquet de données. Helios renvoie les deux paquets de données après avoir reçu cette

requête. Après que jssmag.209 ait à nouveau reçu ces deux paquets de données, il s'est terminé activement. (libéré) la session.

Dans la dernière ligne, jssmag.209 envoie un paquet de requête à helios pour démarrer la session suivante. Le '*' dans le paquet de requête indique que le flag XO du paquet n'a pas été activé. été défini.

(nt: XO, exactement une fois, peut Il est entendu que dans cette session, le paquet de données n'est traité qu'une seule fois par la partie réceptrice. Même si l'autre partie transmet le paquet de données à plusieurs reprises,

la partie destinataire ne le traitera qu'une seule fois. Cela nécessite l'utilisation d'un mécanisme de réception et de traitement des paquets de données spécialement conçu).


Fragmentation des paquets IP

(ntr : fait référence à la division d'un paquet IP en plusieurs paquets IP)Les paquets de données IP fragmentés (ntr : petits paquets de données IP générés après la rupture d'un gros paquet de données IP) ont les deux formats d'affichage suivants. (frag id:size@offset+)

(frag id:size@offset)

(Le premier format indique qu'il y a des fragments suivants après ce fragment. Le deuxième format indique que ce fragment est le dernier fragment. )

id représente le numéro de fragmentation (ntr : Comme vu ci-dessous, chaque gros paquet IP à fragmenter se verra attribuer un numéro de fragmentation afin de distinguer si chaque petit fragment est fragmenté à partir du même paquet de données size indique la taille de ce fragment, à l'exclusion des fragments. Les données d'en-tête. offset représente le décalage des données contenues dans ce fragment dans l'intégralité du paquet IP d'origine ((nt : à partir de ce qui suit,
Un paquet de données IP est fragmenté comme un tout, y compris l'en-tête et les données, et pas seulement les données sont divisées).

每个碎片都会使tcpdump产生相应的输出打印. 第一个碎片包含了高层协议的头数据(nt:从下文来看, 被破碎IP数据包中相应tcp头以及
IP头都放在了第一个碎片中 ), 从而tcpdump会针对第一个碎片显示这些信息, 并接着显示此碎片本身的信息. 其后的一些碎片并不包含高层协议头信息, 从而只会在显示源和目的之后显示碎片本身的信息. 以下有一个例子: 这是一个从arizona.edu 到lbl-rtsg.arpa途经CSNET网络(nt: CSNET connection 可理解为建立在CSNET 网络上的连接)的ftp应用通信片段:
arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+)
arizona > rtsg: (frag 595a:204@328)
rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560

有几点值得注意:
第一, 第二行的打印中, 地址后面没有端口号.
这是因为TCP协议信息都放到了第一个碎片中, 当显示第二个碎片时, 我们无法知道此碎片所对应TCP包的顺序号.

第二, 从第一行的信息中, 可以发现arizona需要向rtsg发送308字节的用户数据, 而事实是, 相应IP包经破碎后会总共产生512字节
数据(第一个碎片包含308字节的数据, 第二个碎片包含204个字节的数据, 这超过了308字节). 如果你在查找数据包的顺序号空间中的
一些空洞(nt: hole,空洞, 指数据包之间的顺序号没有上下衔接上), 512这个数据就足够使你迷茫一阵(nt: 其实只要关注308就行,
不必关注破碎后的数据总量).

一个数据包(nt | rt: 指IP数据包)如果带有非IP破碎标志, 则显示时会在最后显示'(DF)'.(nt: 意味着此IP包没有被破碎过).

时间戳

tcpdump的所有输出打印行中都会默认包含时间戳信息.
时间戳信息的显示格式如下
hh:mm:ss.frac (nt: 小时:分钟:秒.(nt: frac未知, 需补充))
此时间戳的精度与内核时间精度一致, 反映的是内核第一次看到对应数据包的时间(nt: saw, 即可对该数据包进行操作). 
而数据包从物理线路传递到内核的时间, 以及内核花费在此包上的中断处理时间都没有算进来.

命令使用

tcpdump采用命令行方式,它的命令格式为:

tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ]
           [ -C file_size ] [ -F file ]
           [ -i  ] [ -m module ] [ -M secret ]
           [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
           [ -W filecount ]
           [ -E spi@ipaddr algo:secret,...  ]
           [ -y datalinktype ] [ -Z user ]
           [ expression ]
Copier après la connexion

tcpdump的简单选项介绍

-A  以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: 即Handy  capturing web pages).

-c  count
    tcpdump将在接受到count个数据包后退出.

-C  file-size (nt: 此选项用于配合-w file 选项使用)
    该选项使得tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(nt: 这里指1,,000个字节,并非1,,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M= *  = ,,)

-d  以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停止.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印一些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)

-dd 以C语言的形式打印出包匹配码.

-ddd 以十进制数的形式打印出包匹配码(会在包匹配码之前有一个附加的前缀).

-D  打印系统中所有tcpdump可以在其上进行抓包的网络接口. 每一个接口会打印出数字编号, 相应的接口名字, 以及可能的一个网络接口描述. 其中网络接口名字和数字编号可以用在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓包的网络接口.

    此选项在不支持接口列表命令的系统上很有用(nt: 比如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接口的数字编号在windows  或其后的系统中很有用, 因为这些系统上的接口名字比较复杂, 而不易使用.

    如果tcpdump编译时所依赖的libpcap库太老,-D 选项不会被支持, 因为其中缺乏 pcap_findalldevs()函数.

-e  每行的打印输出中将包括数据包的数据链路层头部信息

-E  spi@ipaddr algo:secret,...

    可通过spi@ipaddr algo:secret 来解密IPsec ESP包(nt | rt:IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, 一整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的工作模式称为隧道模式; 后者的工作模式称为传输模式 . 工作原理, 另需补充).

    需要注意的是, 在终端启动tcpdump 时, 可以为IPv4 ESP packets 设置密钥(secret).

    可用于加密的算法包括des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或者没有(none).默认的是des-cbc(nt: des, Data Encryption Standard, 数据加密标准, 加密算法未知, 另需补充).secret 为用于ESP 的密钥, 使用ASCII 字符串方式表达. 如果以 0x 开头, 该密钥将以16进制方式读入.

    该选项中ESP 的定义遵循RFC2406, 而不是 RFC1827. 并且, 此选项只是用来调试的, 不推荐以真实密钥(secret)来使用该选项, 因为这样不安全: 在命令行中输入的secret 可以被其他人通过ps 等命令查看到.

    除了以上的语法格式(nt: 指spi@ipaddr algo:secret), 还可以在后面添加一个语法输入文件名字供tcpdump 使用(nt:即把spi@ipaddr algo:secret,... 中...换成一个语法文件名). 此文件在接受到第一个ESP 包时会打开此文件, 所以最好此时把赋予tcpdump 的一些特权取消(nt: 可理解为, 这样防范之后, 当该文件为恶意编写时,不至于造成过大损害).

-f  显示外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, 非本机ip地址), 采用数字方式而不是名字.(此选项是用来对付Sun公司的NIS服务器的缺陷(nt: NIS, 网络信息服务, tcpdump 显示外部地址的名字时会用到她提供的名称服务): 此NIS服务器在查询非本地地址名字时,常常会陷入无尽的查询循环).

    由于对外部(foreign)IPv4地址的测试需要用到本地网络接口(nt: tcpdump 抓包时用到的接口)及其IPv4 地址和网络掩码. 如果此地址或网络掩码不可用, 或者此接口根本就没有设置相应网络地址和网络掩码(nt: linux 下的  网络接口就不需要设置地址和掩码, 不过此接口可以收到系统中所有接口的数据包), 该选项不能正常工作.

-F  file
    使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.

-i  

    指定tcpdump 需要监听的接口.  如果没有指定, tcpdump 会从系统接口列表中搜寻编号最小的已配置好的接口(不包括 loopback 接口).一但找到第一个符合条件的接口, 搜寻马上结束.

    在采用2.2版本或之后版本内核的Linux 操作系统上,  这个虚拟网络接口可被用来接收所有网络接口上的数据包(nt: 这会包括目的是该网络接口的, 也包括目的不是该网络接口的). 需要注意的是如果真实网络接口不能工作在模式(promiscuous)下,则无法在这个虚拟的网络接口上抓取其数据包.

    如果 -D 标志被指定, tcpdump会打印系统中的接口编号,而该编号就可用于此处的interface 参数.

-l  对标准输出进行行缓冲(nt: 使标准输出设备遇到一个换行符就马上把这行的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有用. 比如, 可通过以下命令组合来达到此目的:
    ``tcpdump  -l  |  tee dat 或者 ``tcpdump  -l   > dat  &  tail  -f  dat.(nt: 前者使用tee来把tcpdump 的输出同时放到文件dat和标准输出中, 而后者通过重定向操作, 把tcpdump的输出放到dat 文件中, 同时通过tail把dat文件中的内容放到标准输出中)

-L  列出指定网络接口所支持的数据链路层的类型后退出.(nt: 指定接口通过-i 来指定)

-m  module
    通过module 指定的file 装载SMI MIB 模块(nt: SMI,Structure of Management Information, 管理信息结构MIB, Management Information Base, 管理信息库. 可理解为, 这两者用于SNMP(Simple Network Management Protoco)协议数据包的抓取. 具体SNMP 的工作原理未知, 另需补充).

    此选项可多次使用, 从而为tcpdump 装载不同的MIB 模块.

-M  secret  如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定一个公共的密钥secret.

-n  不对地址(比如, 主机地址, 端口号)进行数字表示到名字表示的转换.

-N  不打印出host 的域名部分. 比如, 如果设置了此选现, tcpdump 将会打印 而不是 .

-O  不启用进行包匹配时所用的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有用.

-p  一般情况下, 把网络接口设置为非模式. 但必须注意 , 在特殊情况下此网络接口还是会以模式来工作; 从而,  的设与不设, 不能当做以下选现的代名词: 或  (nt: 前者表示只匹配以太网地址为host 的包, 后者表示匹配以太网地址为广播地址的数据包).

-q  快速(也许用更好?)打印输出. 即打印很少的协议相关信息, 从而输出行都比较简短.

-R  设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825而不是RFC1829(nt: AH, 认证头, ESP, 安全负载封装, 这两者会用在IP包的安全传输机制中). 如果此选项被设置, tcpdump 将不会打印出域(nt: relay prevention field). 另外,由于ESP/AH规范中没有规定ESP/AH数据包必须拥有协议版本号域,所以tcpdump不能从收到的ESP/AH数据包中推导出协议版本号.

-r  file
    从文件file 中读取包数据. 如果file 字段为  符号, 则tcpdump 会从标准输入中读取包数据.

-S  打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号.(nt: 相对顺序号可理解为, 相对第一个TCP 包顺序号的差距,比如, 接受方收到第一个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序列号为1, 2分别表示与第一个数据包的差距为1 和 . 而如果此时-S 选项被设置, 对于后来接收到的第2个, 第3个数据包会打印出其绝对顺序号:, ).

-s  snaplen
    设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节(而支持网络接口分接头(nt: NIT, 上文已有描述,可搜索关键字找到那里)的SunOS系列操作系统中默认的也是最小值是96).68字节对于IP, ICMP(nt: Internet Control Message Protocol,因特网控制报文协议), TCP 以及 UDP 协议的报文已足够, 但对于名称服务(nt: 可理解为dns, nis等服务), NFS服务相关的数据包会产生包截短. 如果产生包截短这种情况, tcpdump的相应打印输出行中会出现[|proto]的标志(proto 实际会显示为被截短的数据包的相关协议层次). 需要注意的是, 采用长的抓取长度(nt: snaplen比较大), 会增加包的处理时间, 并且会减少tcpdump 可缓存的数据包的数量, 从而会导致数据包的丢失. 所以, 在能抓取我们想要的包的前提下, 抓取长度越小越好.把snaplen 设置为0 意味着让tcpdump自动选择合适的长度来抓取数据包.

-T  type
    强制tcpdump按type指定的协议所描述的包结构来分析收到的数据包.  目前已知的type 可取的协议为:
    aodv (Ad-hoc On-demand Distance Vector protocol, 按需距离向量路由协议, 在Ad hoc(点对点模式)网络中使用),
    cnfp (Cisco  NetFlow  protocol),  rpc(Remote Procedure Call), rtp (Real-Time Applications protocol),
    rtcp (Real-Time Applications con-trol protocol), snmp (Simple Network Management Protocol),
    tftp (Trivial File Transfer Protocol, 碎文件协议), vat (Visual Audio Tool, 可用于在internet 上进行电
    视电话会议的应用层协议), 以及wb (distributed White Board, 可用于网络会议的应用层协议).

-t     在每行输出中不打印时间戳

-tt    不对每行输出的时间进行格式处理(nt: 这种格式一眼可能看不出其含义, 如时间戳打印成1261798315)

-ttt   tcpdump 输出时, 每两行打印之间会延迟一个段时间(以毫秒为单位)

-tttt  在每行打印的时间戳之前添加日期的打印

-u     打印出未加密的NFS 句柄(nt: handle可理解为NFS 中使用的文件句柄, 这将包括文件夹和文件夹中的文件)

-U    使得当tcpdump在使用-w 选项时, 其文件写入与包的保存同步.(nt: 即, 当每个数据包被保存时, 它将及时被写入文件中,而不是等文件的输出缓冲已满时才真正写入此文件)

      -U 标志在老版本的libcap库(nt: tcpdump 所依赖的报文捕获库)上不起作用, 因为其中缺乏pcap_cump_flush()函数.

-v    当分析和打印的时候, 产生详细的输出. 比如, 包的生存时间, 标识, 总长度以及IP包的一些选项. 这也会打开一些附加的包完整性检测, 比如对IP或ICMP包头部的校验和.

-vv   产生比-v更详细的输出. 比如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.

-vvv  产生比-vv更详细的输出. 比如, telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,
      其相应的图形选项将会以16进制的方式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).

-w    把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.

-W    filecount
      此选项与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池. 同时, 该选项会使得每个文件名的开头会出现足够多并用来占位的0, 这可以方便这些文件被正确的排序.

-x    当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部).总共打印的数据大小不会超过整个数据包的大小与snaplen 中的最小值. 必须要注意的是, 如果高层协议数据没有snaplen 这么长,并且数据链路层(比如, Ethernet层)有填充数据, 则这些填充数据也会被打印.(nt: so  link  layers  that pad, 未能衔接理解和翻译, 需补充 )

-xx   tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部.

-X    当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析一些新协议的数据包很方便.

-XX   当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据, 其中包括数据链路层的头部.这对于分析一些新协议的数据包很方便.

-y    datalinktype
      设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包

-Z    user
      使tcpdump 放弃自己的超级权限(如果以root用户启动tcpdump, tcpdump将会有超级用户权限), 并把当前tcpdump的用户ID设置为user, 组ID设置为user首要所属组的ID(nt: tcpdump 此处可理解为tcpdump 运行之后对应的进程)

      此选项也可在编译的时候被设置为默认打开.(nt: 此时user 的取值未知, 需补充)
Copier après la connexion

tcpdump条件表达式

  该表达式用于决定哪些数据包将被打印. 如果不给定条件表达式, 网络上所有被捕获的包都会被打印,否则, 只有满足条件表达式的数据包被打印.(nt: all packets, 可理解为, 所有被指定接口捕获的数据包).

  表达式由一个或多个'表达元'组成(nt: primitive, 表达元, 可理解为组成表达式的基本元素). 一个表达元通常由一个或多个修饰符(qualifiers)后跟一个名字或数字表示的id组成(nt: 即, 'qualifiers id').有三种不同类型的修饰符:type, dir以及 proto.

type 修饰符指定id 所代表的对象类型, id可以是名字也可以是数字. 可选的对象类型有: host, net, port 以及portrange(nt: host 表明id表示主机, net 表明id是网络, port 表明id是端而portrange 表明id 是一个端口范围).  如, 'host foo', 'net 128.3', 'port 20', 'portrange 6000-6008'(nt: 分别表示主机 foo,网络 128.3, 端口 20, 端口范围 6000-6008). 如果不指定type 修饰符, id默认的修饰符为host.

dir 修饰符描述id 所对应的传输方向, 即发往id 还是从id 接收(nt: 而id 到底指什么需要看其前面的type 修饰符).可取的方向为: src, dst, src 或 dst, src并且dst.(nt:分别表示, id是传输源, id是传输目的, id是传输源或者传输目的, id是传输源并且是传输目的). 例如, 'src foo','dst net 128.3', 'src or dst port ftp-data'.(nt: 分别表示符合条件的数据包中, 源主机是foo, 目的网络是128.3, 源或目的端口为 ftp-data).如果不指定dir修饰符, id 默认的修饰符为src 或 dst.对于链路层的协议,比如SLIP(nt: Serial Line InternetProtocol, 串联线路网际网络协议), 以及linux下指定'any' 设备, 并指定'cooked'(nt | rt: cooked 含义未知, 需补充) 抓取类型, 或其他设备类型,可以用'inbound' 和 'outbount' 修饰符来指定想要的传输方向.

proto 修饰符描述id 所属的协议. 可选的协议有: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp以及 upd.(nt | rt: ether, fddi, tr, 具体含义未知, 需补充. 可理解为物理以太网传输协议, 光纤分布数据网传输协议,以及用于路由跟踪的协议.  wlan, 无线局域网协议; ip,ip6 即通常的TCP/IP协议栈中所使用的ipv4以及ipv6网络层协议;arp, rarp 即地址解析协议,反向地址解析协议; decnet, Digital Equipment Corporation开发的, 最早用于PDP-11 机器互联的网络协议; tcp and udp, 即通常TCP/IP协议栈中的两个传输层协议).

    例如, `ether src foo', `arp net 128.3', `tcp port 21', `udp portrange 7000-7009'分别表示 '从以太网地址foo 来的数据包','发往或来自128.3网络的arp协议数据包', '发送或接收端口为21的tcp协议数据包', '发送或接收端口范围为7000-7009的udp协议数据包'.

    如果不指定proto 修饰符, 则默认为与相应type匹配的修饰符. 例如, 'src foo' 含义是 '(ip or arp or rarp) src foo' (nt: 即, 来自主机foo的ip/arp/rarp协议数据包, 默认type为host),`net bar' 含义是`(ip  or  arp  or rarp) net bar'(nt: 即, 来自或发往bar网络的ip/arp/rarp协议数据包),`port 53' 含义是 `(tcp or udp) port 53'(nt: 即, 发送或接收端口为53的tcp/udp协议数据包).(nt: 由于tcpdump 直接通过数据链路层的 BSD 数据包过滤器或 DLPI(datalink provider interface, 数据链层提供者接口)来直接获得网络数据包, 其可抓取的数据包可涵盖上层的各种协议, 包括arp, rarp, icmp(因特网控制报文协议),ip, ip6, tcp, udp, sctp(流控制传输协议).

    对于修饰符后跟id 的格式,可理解为, type id 是对包最基本的过滤条件: 即对包相关的主机, 网络, 端口的限制;dir 表示对包的传送方向的限制; proto表示对包相关的协议限制)

    'fddi'(nt: Fiber Distributed Data Interface) 实际上与'ether' 含义一样: tcpdump 会把他们当作一种''指定网络接口上的数据链路层协议''. 如同ehter网(以太网), FDDI 的头部通常也会有源, 目的, 以及包类型, 从而可以像ether网数据包一样对这些域进行过滤. 此外, FDDI 头部还有其他的域, 但不能被放到表达式中用来过滤

    同样, 'tr' 和 'wlan' 也和 'ether' 含义一致, 上一段对fddi 的描述同样适用于tr(Token Ring) 和wlan(802.11 wireless LAN)的头部. 对于802.11 协议数据包的头部, 目的域称为DA, 源域称为 SA;而其中的 BSSID, RA, TA 域(nt | rt: 具体含义需补充)不会被检测(nt: 不能被用于包过虑表达式中).
Copier après la connexion

  除以上所描述的表达元('primitive'), 还有其他形式的表达元, 并且与上述表达元格式不同. 比如: gateway, broadcast, less, greater以及算术表达式(nt: 其中每一个都算一种新的表达元). 下面将会对这些表达元进行说明.

  表达元之间还可以通过关键字and, or 以及 not 进行连接, 从而可组成比较复杂的条件表达式. 比如,`host foo and not port ftp and not port ftp-data'(nt: 其过滤条件可理解为, 数据包的主机为foo,并且端口不是ftp(端口21) 和ftp-data(端口20, 常用端口和名字的对应可在linux 系统中的/etc/service 文件中找到)).

  为了表示方便, 同样的修饰符可以被省略, 如'tcp dst port ftp or ftp-data or domain' 与以下的表达式含义相同'tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.(nt: 其过滤条件可理解为,包的协议为tcp, 目的端口为ftp 或 ftp-data 或 domain(端口53) ).

  借助括号以及相应操作符,可把表达元组合在一起使用(由于括号是shell的特殊字符, 所以在shell脚本或终端中使用时必须对括号进行转义, 即'(' 与')'需要分别表达成'\(' 与 '\)').

  有效的操作符有:

 否定操作 (`!' 或 `not')
 与操作(`&&' 或 `and')
 或操作(`||' 或 `or')
Copier après la connexion

  否定操作符的优先级别最高. 与操作和或操作优先级别相同, 并且二者的结合顺序是从左到右. 要注意的是, 表达'与操作'时,

Vous devez écrire explicitement l'opérateur 'et', au lieu de simplement placer les éléments d'expression avant et arrière côte à côte (nt: l'opérateur 'et' entre les deux ne peut pas être omis

If). un identifiant précède S'il n'y a pas de mot-clé, le mot-clé le plus récemment utilisé lors de l'analyse de l'expression (généralement le mot-clé le plus proche de l'identifiant de gauche à droite) sera utilisé. Par exemple,
not host vs et as
est The. simplification de l'expression suivante :
not host vs et host ace
au lieu de not (host vs ou as (ntr : les deux premiers indiquent que le paquet de données requis ne provient pas de ou n'est pas envoyé à host vs, mais). from Or sent to ace. Ce dernier signifie que le paquet de données répond aux exigences tant qu'il ne provient pas de ou n'est pas envoyé à vs ou ac)

L'expression conditionnelle entière peut être traitée comme un paramètre de chaîne distinct ou peut être séparés par des espaces. Il est plus pratique de transmettre plusieurs paramètres dans tcpdump. Habituellement, si l'expression contient des métacaractères (nt: tels que '*', '.' dans les expressions régulières et '(' dans le shell), il est préférable de transmettez-le sous forme de chaîne séparée. À ce stade, l'expression entière doit être placée entre guillemets simples. De la manière de transmettre plusieurs paramètres, tous les paramètres sont finalement concaténés avec des espaces et analysés comme une chaîne

Annexe : Éléments d'expression de tcpdump

(nt : True dans la description suivante signifie : l'expression conditionnelle correspondante ne contient que ce qui suit Un élément d'expression spécifique de la colonne , à ce moment l'expression est vraie, c'est-à-dire que la condition est remplie)

dst host host

Si le domaine de destination du paquet IPv4/v6 est host, alors l'expression conditionnelle correspondante La formule est true. host peut être une adresse IP ou un nom d'hôte.
src host host
Si le domaine source du paquet IPv4/v6 est host, l'expression conditionnelle correspondante est true
host peut être une adresse IP. adresse ou un nom d'hôte.
hôte hôte

Si l'adresse source ou de destination du paquet IPv4/v6 est hôte, alors l'expression conditionnelle correspondante est vraie. Les mots-clés suivants peuvent être ajoutés avant l'hôte ci-dessus. expressions : ip, arp, rarp et ip6. Par exemple :

ip host host
peut également être exprimé comme :
ether proto ip et host host(nt : cette expression est expliquée ci-dessous, où ip a besoin à échapper, car ip est déjà un mot-clé pour tcpdump.)

Si l'hôte est un hôte avec plusieurs adresses IP, alors n'importe quelle adresse sera utilisée pour la correspondance des paquets (ntr : c'est-à-dire l'adresse de destination du Le paquet de données envoyé à l'hôte peut être l'une de ces adresses IP, et l'adresse source du paquet de données reçu de l'hôte peut également être celle-ci. N'importe quelle adresse IP parmi plusieurs).

ether dst ehost

Si le L'adresse de destination Ethernet du paquet de données (nt : fait référence aux paquets de données que tcpdump peut capturer, y compris les paquets de données IP, les paquets de données TCP) est ehost, alors l'expression conditionnelle correspondante est vraie Ehost peut être un nom ou une adresse numérique. le fichier /etc/ethers (nt: Vous pouvez voir la description du fichier /etc/ethers via man ethers, dans l'exemple Une adresse numérique est utilisée)

ether src ehost

Si la source Ethernet L'adresse du paquet de données est ehost, l'expression conditionnelle correspondante est vraie.

ether host ehost

Si l'adresse source Ethernet ou l'adresse de destination du paquet de données est ehost, alors l'expression conditionnelle correspondant à ceci est vrai.

hôte de passerelle

Si l'adresse de passerelle du paquet de données est hôte, alors ceci L'expression conditionnelle correspondante est vraie. Il convient de noter que l'adresse de passerelle fait ici référence à l'adresse Ethernet, et non à l'adresse Ethernet. Adresse IP (nt | rt : c'est-à-dire, par exemple, elle peut être comprise comme
'Note '.l'adresse source ou destination Ethernet, la source Ethernet et adresse de destination, peut être comprise comme faisant référence à l''adresse de passerelle dans la phrase précédente ' ).host doit être un nom plutôt qu'un numéro, et doit être dans l''nom d'hôte-adresse IP' et >'nom d'hôte-adresse Ethernet 'Il y a des entrées dans les deux principales relations de mappage (l'ancienne relation de mappage peut être obtenue via le fichier /etc/hosts, DNS ou NIS, puis une relation de mappage peut être obtenue via le fichier /etc/ethers. nt : /etc/ethers n'existe pas nécessairement. Vous pouvez voir son format de données via man ethers. La façon de créer ce fichier est inconnue et doit être complétée. En d'autres termes, la signification de host C'est ether host ehost plutôt que host. host, et ehost doivent être un nom plutôt qu'un numéro.Actuellement, cette option ne fonctionne pas dans un environnement de configuration prenant en charge le format d'adresse IPv6 (nt: configuration, environnement de configuration, qui peut être compris comme une communication Configuration réseau de les deux parties).

dst net net

Si le champ du numéro de réseau de l'adresse de destination (format IPv4 ou IPv6) du paquet de données est net, alors l'expression conditionnelle correspondante est vraie.
net peut être un nom du fichier de base de données réseau /etc/networks, ou il peut s'agir d'un numéro de réseau numérique.

Un numéro de réseau IPv4 numérique sera un quadruple pointé (par exemple, 192.168.1.0) ou un triple pointé (par exemple, 192.168.1 ), ou des tuples en pointillés (par exemple, 172.16), ou des groupes d'unités uniques (par exemple, 10) pour exprimer ;

Le réseau les masques correspondant à ces quatre situations sont : quatre-tuple : 255.255.255.255 (Cela signifie également que la correspondance du réseau est la même que la correspondance de l'adresse de l'hôte (host ) correspondant : les quatre parties de l'adresse sont utilisées), triplet : 255.255.255.0, tuple : 255.255.0.0 , un-tuple : 255.0.0.0.

Pour le format d'adresse IPv6, le numéro de réseau doit être écrit en entier (les 8 parties doivent être écrites) ; est :
ff:ff:ff:ff:ff:ff:ff:ff, donc la correspondance du réseau IPv6 est vraie 'hôte' correspondance (nt | rt | rc : 8 parties de l'adresse seront utilisées, remplissez 0 pour les octets qui n'appartiennent pas au réseau, doivent être ajoutés ensuite), mais en même temps un paramètre de longueur de masque de réseau est requis spécifiquement. spécifiez le premier nombre d'octets comme masque de réseau (nt : peut être spécifié via le net net/len suivant)

src net net
Si l'adresse source du paquet de données (format IPv4 ou IPv6) réseau Si le champ numéro est net, alors l'expression conditionnelle correspondante est vraie.

net net
Si le champ numéro de réseau de l'adresse source ou de destination (format IPv4 ou IPv6) du paquet de données est net , alors la même chose que Cette expression conditionnelle correspondante est vraie.

masque de réseau net masque de réseau
Si le masque de réseau de l'adresse source ou de destination (format IPv4 ou IPv6) du paquet de données correspond au masque de réseau, alors le condition correspondant à ceci L'expression est vraie. Cette option peut également être utilisée avec src et dst pour faire correspondre l'adresse réseau source ou l'adresse réseau de destination (nt : comme src net net mask 255.255.255.0). ). Cette option n'est pas valide pour les adresses réseau ipv6.

net net/len
Si le nombre de bits dans le champ du numéro de réseau de l'adresse source ou de destination (format IPv4 ou IPv6) du Le paquet de données est le même que len, alors la condition correspondante L'expression est vraie. Cette option peut également être utilisée avec src et dst pour faire correspondre l'adresse réseau source ou l'adresse réseau de destination (nt | rt | tt : src net net/<.>24, indiquant que le numéro de réseau de l'adresse source doit correspondre. Il y a des paquets de données de 24 bits).

dst port port

Si le port de destination du paquet de données ( y compris le protocole ip/tcp, ip/udp, ip6/tcp ou ip6/udp) est le port, puis avec Cette expression conditionnelle correspondante est vraie.port peut être un nombre ou un nom (le nom correspondant se trouve dans /etc/services , ou vous pouvez obtenir les informations de description pertinentes via man tcp et man udp). Si vous utilisez name, le numéro de port correspondant au nom et le protocole correspondant utilisé seront vérifiés. Si seul un numéro de port numérique est utilisé, seul le numéro de port correspondant. le numéro de port sera vérifié (par exemple, le port dst
513 entraînera la capture de tcpdump Obtenez le paquet de service de connexion du protocole TCP et le paquet de service who du protocole udp, et le domaine du port entraînera la capture de tcpdump capturer le paquet de service de domaine du protocole TCP et le paquet de domaine du protocole UDP) (nt | rt : le nom ambigu est utilisé n'est pas compréhensible et doit être complété).

src port port

Si le port source du paquet de données est port, l'expression conditionnelle correspondante est vraie.

port port

Si le port source ou de destination du paquet de données est port, le correspondant l'expression conditionnelle est vraie.

dst portrange port1-port2

Si le paquet de données (y compris le protocole ip/tcp, ip/udp, ip6/tcp ou ip6/udp), le port de destination appartient à la plage de ports du port1 au port2 (y compris port1, port2), alors l'expression conditionnelle correspondante est vraie tcpdump analyse port1 et port2 et port L'analyse est cohérente (nt: expliqué dans la description de l'option de port dst port).

src portrange port1-port2

Si le port source du paquet de données appartient à la plage de ports allant du port1 au port2 (y compris port1, port2 ), alors l'expression conditionnelle correspondante est vraie

portrange port1-. port2

Si le port source ou le port de destination du paquet de données appartient à la plage de ports du port1 au port2 (y compris le port1, le port2), alors l'expression conditionnelle correspondante est vraie

Les options de port ci-dessus peuvent. être ajouté avec le mot-clé : tcp ou udp devant, tel que :

tcp src port port

Cela permettra à tcpdump de capturer uniquement les paquets de données TCP dont le port source est port.

moins de longueur

Si la longueur du paquet de données est inférieure à la longueur ou égale à la longueur, l'expression conditionnelle correspondante est vraie, ce qui est cohérent avec la signification de
'len <= longueur. '.

plus grande longueur
Si la longueur du paquet de données est supérieure à la longueur ou égale à la longueur, l'expression conditionnelle correspondante est vraie. C'est la même chose que 'len >=. longueur' a la même signification.

protocole ip
Si le paquet de données est un paquet de données ipv4 et que son type de protocole est protocole, l'expression conditionnelle correspondante est vraie .
Le protocole peut être un numéro ou un nom, tel que : icmp6, igmp, igrp (nt : Interior Gateway Routing Protocol, protocole de routage de passerelle intérieure), pim (Protocol Independent Multicast, protocole de multicast indépendant, appliqué aux routeurs multicast) ,ah, esp (nt : ah, en-tête d'authentification, encapsulation de charge utile de sécurité esp, qui seront tous deux utilisés dans le mécanisme de transmission sécurisé des paquets IP), vrrp (Virtual Router Redundancy Protocol, protocole de redondance de routeur virtuel), udp ou tcp . Puisque tcp, udp et icmp sont des mots-clés de tcpdump, ils doivent être échappés avant ces noms de protocole (si vous devez utiliser \ pour échapper dans C-shell, notez que cet élément d'expression ne convertira pas les données de tout le contenu de l'en-tête de protocole). la chaîne d'en-tête du protocole dans le package est imprimée (nt: en fait, seules certaines informations d'en-tête du protocole spécifié seront imprimées. Par exemple, vous pouvez utiliser tcpdump -i eth0 'ip proto tcp et l'hôte 192.168.3.144', puis uniquement les informations contenues dans l'en-tête du protocole TCP dans le paquet envoyé ou reçu par l'hôte 192.168.3.144 sera imprimé. )

Protocole ip6
Si le paquet de données est un paquet de données ipv6 et que son type de protocole est protocole, l'expression conditionnelle correspondante est vraie.
Notez que cet élément d'expression ne convertira pas le paquet de données en Tout le contenu de l'en-tête de protocole dans la chaîne d'en-tête de protocole est imprimé

Protocole de protochaîne ip6
Si le paquet de données est un paquet de données ipv6 et que sa chaîne de protocole contient un en-tête de protocole de type protocole, alors l'expression conditionnelle correspondante La formule est vraie. Par exemple,

protochain ip6 6
fera correspondre un paquet IPv6 avec un en-tête de protocole TCP dans sa chaîne d'en-tête de protocole. En-tête IPv6 de ce paquet et l'en-tête TCP. Il peut également contenir des en-têtes de vérification, des en-têtes de routage ou des en-têtes d'option de routage saut par saut.
Le BPF (Berkeley Packets Filter) correspondant déclenché par ceci peut être compris comme un type de le code de filtrage des paquets qui assure le filtrage des paquets au niveau de la couche liaison de données) est relativement lourd,
et le code d'optimisation BPF ne parvient pas à prendre en charge cette partie, donc la correspondance des paquets déclenchée par cette option peut être plus lente.

protocole de protochain ip

et protocole de protochain ip6 La signification est la même, mais ceci est utilisé pour les paquets IPv4.

diffusion éther

Si le paquet est un paquet de diffusion Ethernet, le conditionnel correspondant L'expression est vraie. Le mot-clé ether est facultatif.

IP Broadcast

Si le paquet est un paquet de diffusion IPv4, l'expression conditionnelle correspondante est vraie. Cela amènera tcpdump à vérifier si l'adresse de diffusion est conforme à certaines. conventions de tous les 0 et tous les 1, Et trouver le masque réseau de l'interface réseau (l'interface réseau est l'interface réseau sur laquelle le paquet est capturé à ce moment-là

Si le masque réseau de l'interface réseau). L'endroit où le paquet est capturé est illégal, ou l'interface n'est pas du tout définie en conséquence. Adresse réseau et réseau, ou capture des paquets sur

'n'importe quelle' interface réseau sous Linux (cette ' L'interface any' peut recevoir des paquets de données de plus d'une interface dans le système (nt: en fait, cela peut être compris comme tout interfaces disponibles dans le système)), et la vérification du masque de réseau ne peut pas être effectuée normalement

multidiffusion Ethernet

Si le paquet de données est un paquet de multidiffusion Ethernet (ntr: multidiffusion, cela peut être compris comme fournissant le paquet de multidiffusion Ethernet). message à un groupe d'adresses de destination en même temps, plutôt qu'à toutes les adresses du réseau, cette dernière peut être appelée diffusion), alors l'expression conditionnelle correspondante est vraie. Le mot-clé ether peut être omis. La signification de cette option est cohérente. avec la signification de l'expression conditionnelle suivante : `ether[
0] & 1 != 0'(nt : On peut comprendre que le bit le plus bas du 0ème octet du paquet Ethernet est 1, ce qui signifie qu'il s'agit d'un paquet multicast).

ip multicast

Si le paquet est un paquet multicast ipv4 , l'expression conditionnelle correspondante est vraie

multidiffusion ip6

Si le paquet est un paquet multidiffusion ipv6, l'expression conditionnelle correspondante est vraie.

protocole Ethernet
Si le paquet de données appartient au type de protocole Ethernet suivant, l'expression conditionnelle correspondante est vraie.
Champ de protocole, qui peut être un nombre ou un nom répertorié ci-dessous : ip , ip6, arp , rarp, atalk (protocole réseau AppleTalk),
aarp (nt : AppleTalk Address Resolution Protocol, le protocole de résolution d'adresse du réseau AppleTalk),
decnet (nt : un protocole réseau fourni par la pile DEC), sca( nt : inconnu, doit être ajouté),
lat(Local Area Transport, protocole de transport régional, protocole d'interconnexion hôte Ethernet développé par DEC),
mopdl, moprc, iso(nt : inconnu, doit être ajouté) , stp (Spanning Tree Protocol, Spanning Tree Protocol, peut être utilisé pour empêcher les boucles de liaison dans le réseau),
ipx (nt: Internetwork Packet Exchange, un protocole de couche réseau utilisé dans les réseaux Novell), ou
netbeui ( nt : interface utilisateur étendue NetBIOS, qui peut être comprise comme extension de l'interface système d'entrée et de sortie de base réseau).

le champ de protocole peut être un nombre ou l'un des noms de protocole suivants : ip, ip6, arp, rarp , atalk , aarp, decnet, sca, lat,
mopdl, moprc, iso, stp, ipx, ou netbeui.
Il faut noter que les identifiants sont aussi des mots-clés, ils doivent donc être transmis '' pour s'échapper.

(SNAP : SubNetwork Access Protocol)

Dans l'interface réseau de données distribuées par fibre optique (sa métaforme d'expression peut être C'est 'fddi protocol arp'), réseau token ring (son élément d'expression peut être 'tr protocol arp '),
et IEEE 802.11 LAN sans fil (sa méta-forme d'expression peut être 'wlan protocol arp'), l'identifiant du protocole
provient du 802.2 en-tête de la couche de contrôle de lien logique,
est en FDDI, Token Ring ou 802.1 Cette couche de contrôle de lien logique l'en-tête sera inclus dans l'en-tête.

Lorsque les identifiants de protocole correspondants sur ces réseaux sont utilisés comme conditions de filtre, tcpdump vérifie uniquement l'en-tête LLC avec 0x000000 comme identifiant d'unité de composant (OUI, 0x000000
Identifie un segment Ethernet interne) 'le champ ID de protocole dans la structure du format SNAP ', non Y a-t-il un 'Format SNAP
structure '(nt : SNAP, SubNetwork Access Protocol). 🎜>iso tcpdump vérifiera le champ DSAP (point d'accès au service de destination, point d'accès au service cible) dans l'en-tête LLC et domaine SSAP (point d'accès au service source (nt : le protocole iso est inconnu, doit être complété)

stp et netbeui
tcpdump vérifiera le point d'accès au service de destination (Destination service Access) dans l'en-tête LLC Point);

atalk
tcpdump vérifiera l'en-tête LLC avec 0x080007 comme identifiant OUI

'


Structure de format SNAP' , et vérifiera le champ etype AppleTalk. (nt: si l'etype AppleTalk est au format SNAP structure, inconnue, doit être ajoutée). De plus, dans Ethernet, pour l'option de protocole ether proto, tcpdump vérifiera
le champ type Ethernet pour le protocole spécifié, sauf pour les protocoles suivants :

iso, stp et netbeui
tcpdump vérifiera 802.
3
Cadre physique et en-tête LLC (ces deux vérifications sont cohérentes avec les vérifications correspondantes dans FDDI, TR,
802.11 network); (nt: 802.3 , compris comme IEEE
802.3, qui est un ensemble d'une série de normes IEEE. Cette collection définit le physique couche dans le réseau Ethernet câblé et la sous-couche de contrôle d'accès aux médias de la couche de liaison de données stp dans Décrit ci-dessus) atalk
tcpdump vérifiera le champ d'etype AppleTalk dans la trame physique Ethernet, et vérifiera également le

'

Structure du format SNAP
' (Ces deux vérifications sont cohérentes avec les vérifications correspondantes dans. FDDI, TR, 802.11 réseaux)

aarp tcpdump vérifiera le champ d'etype AppleTalk ARP, qui existe soit dans la trame physique Ethernet, soit dans le LLC (défini par 802.2)
' Structure du format SNAP ', lorsque c'est cette dernière, la 'Structure du format SNAP 'L'identification OUI est 0x000000;
(nt: 802.2, qui peut être compris comme IEEE802.2, qui définit la couche de contrôle de liaison logique (LLC), qui correspond à C'est la couche supérieure fait partie de la couche liaison de données dans le modèle de réseau OSI.
La couche LLC fournit une interface unifiée pour les utilisateurs utilisant la couche liaison de données (généralement, l'utilisateur est la couche réseau). Sous la couche LLC se trouve la couche de contrôle d'accès aux médias (). nt : couche MAC,
correspondant à la partie inférieure de la couche liaison de données). La mise en œuvre et le mode de fonctionnement de cette couche varieront selon les différents supports physiques de transmission (par exemple, Ethernet, Token Ring,
Fibre optique. interface de données de distribution (nt : peut en fait être compris comme un réseau à fibre optique), réseau local sans fil (802.11), etc.)

ipx tcpdump vérifiera le champ d'etype IPX de la trame Ethernet physique, Champ IPX DSAP dans l'en-tête LLC, trame 802.3 sans en-tête LLC et IPX encapsulé,
et en-tête LLC 'Structure au format SNAP ' (nt | rt : cadre SNAP, peut être compris comme, 'structure de format SNAP dans l'en-tête LLC' . Cette signification est dans le préliminaire étape de compréhension et doit être complété).

decnet src host

Si l'adresse source DECNET dans le paquet de données est hôte, l'expression conditionnelle correspondante est vraie.
(nt:decnet, développé par Digital Equipment Corporation, utilisé pour la première fois dans le protocole réseau PDP-
11 pour l'interconnexion des machines)

decnet dst host

Si l'adresse de destination DECNET dans le paquet de données est hôte, alors le conditionnel correspondant l'expression est vraie.
(nt : decnet a été expliqué ci-dessus)

hôte hôte decnet

Si l'adresse de destination DECNET ou l'adresse source DECNET dans le paquet de données est hôte, alors l'expression conditionnelle correspondante est true.
(nt : decnet a été expliqué ci-dessus)

ifname

interfaceSi le paquet de données a été marqué comme reçu de l'interface réseau spécifiée, l'expression conditionnelle correspondante est vrai.
(Cette option s'applique uniquement aux paquets marqués par le programme pf dans OpenBSD (nt: pf, filtre de paquets, peut être compris comme le programme pare-feu dans OpenBSD))

sur

interface a la même signification que ifname
interface.

rnr num

if Si le paquet a été marqué comme correspondant à la règle PF, l'expression conditionnelle correspondante est vraie.
(Cette option s'applique uniquement aux paquets marqués par le programme pf dans OpenBSD (nt: pf, filtre de paquets, disponible Compris comme programme de pare-feu dans OpenBSD))

numéro de règle

a le même signifiant comme Rulenum num.

code de raison

Si le paquet a été marqué comme contenant le code de résultat correspondant de PF , alors l'expression conditionnelle correspondante est vraie Les codes de résultat valides sont : match, bad-offset,
fragment,
short, normalisation et mémoire.(Cette option s'applique uniquement aux paquets marqués par le programme pf dans OpenBSD (nt: pf, filtre de paquets, qui peut être compris comme le pare-feu programme dans OpenBSD))

rset name

Si le paquet a été marqué comme correspondant à l'ensemble de règles spécifié, alors l'expression conditionnelle correspondante est vraie
(Cette option s'applique uniquement aux paquets marqués par. le programme pf dans OpenBSD (nt : pf, filtre de paquets, qui peut être compris comme le programme de pare-feu dans OpenBSD) )

nom de l'ensemble de règles

a la même signification que le nom rset.

srnr num

Si le paquet a été marqué comme correspondant à une règle spécifique dans l'ensemble de règles spécifié (nt: numéro de règle PF spécifié, un numéro de règle spécifique, c'est-à-dire une règle spécifique),
alors l'expression conditionnelle correspondante est vrai. (Cette option s'applique uniquement aux paquets marqués par le programme pf dans OpenBSD (nt: pf, filtre de paquets, disponible Compris comme
Programme de pare-feu dans OpenBSD))

subrulenum num

a la même signification que srnr.

action act

Si le paquet est enregistré, PF exécutera l'action spécifiée, alors l'expression conditionnelle correspondante est vraie. Les actions valides sont : passer, bloquer.
. (Cette option n'est applicable qu'aux paquets marqués par le programme pf dans OpenBSD (nt: pf, filtre de paquets, peut être compris comme programme de pare-feu dans OpenBSD))

ip, ip6, arp, rarp, atalk, aarp , decnet, iso, stp, ipx, netbeui

a la même signification que l'expression suivante :
ether proto p
p est l'un des protocoles ci-dessus

lat, moprc, mopdl.

a la même signification que l'expression suivante :
ether proto p
p est l'un des protocoles ci-dessus . Il faut noter que tcpdump ne peut actuellement pas analyser ces protocoles.

vlan [vlan_id]
Si le paquet de données est un paquet de données VLAN IEEE802.1Q, l'expression conditionnelle correspondante est vraie.
(nt : VLAN IEEE802.1Q, c'est-à-dire le protocole de réseau virtuel IEEE802.1Q , ce protocole est utilisé pour l'interconnexion entre différents réseaux).
Si [vlan_id] est spécifié, alors seules les données contiennent l'identifiant de réseau virtuel spécifié (vlan_id), et l'expression conditionnelle correspondante est vraie.
Cela devrait être a noté que pour les paquets VLAN, le premier mot-clé vlan rencontré dans l'expression modifiera la
position de départ des données dans le paquet correspondant au mot-clé suivant dans l'expression (c'est-à-dire le biais de décodage (Déplacé). Lors du filtrage des paquets de données dans un système de réseau VLAN, l'expression vlan [vlan_id] peut être utilisée plusieurs fois. Chaque fois que le mot-clé vlan apparaît, il augmentera le
décalage du filtre de 4 octets (ntr : décalage de filtre, qui peut être compris comme le décalage de décodage ci-dessus). ).

Par exemple :
vlan 100 && vlan 200
signifie : filtrer le réseau VLAN200 encapsulé dans VLAN100 Le paquet de données
sur autre exemple :
vlan && vlan 300 && ip
signifie : filtrer les paquets de données IPv4 encapsulés dans le réseau VLAN300, et le réseau VLAN300 est à son tour bloqué par l'encapsulation VLAN de la couche externe

mpls [label_num]
Si le paquet de données est un paquet de données MPLS, l'expression conditionnelle correspondante est vraie.
(nt : MPLS, Multi-Protocol Label Switch, Multi-Protocol Label Exchange, une technologie qui utilise des étiquettes pour guider la transmission des données sur les réseaux de communication ouverts).

Si [label_num] est spécifié, alors seules les données contiennent l'identifiant d'étiquette spécifié (label_num), alors l'expression conditionnelle correspondante est vraie.
Il est à noter que pour les paquets IP contenant des informations MPLS (c'est-à-dire les paquets MPLS), le premier mot-clé MPLS rencontré dans l'expression modifiera les suivants dans l'expression. La
position de départ des données dans le paquet de données correspondant à. le mot-clé (c'est-à-dire le décalage de décodage). Lors du filtrage des paquets de données dans le système réseau MPLS, l'expression mpls [label_num] peut être utilisée plusieurs fois. Chaque fois que le mot-clé mpls apparaît, il ajoutera
décalage de filtre de 4 octets (nt). : décalage du filtre, qui peut être compris comme le décalage de décodage ci-dessus).

Par exemple :
mpls 100000 && mpls 1024
signifie : filtre paquets avec l'étiquette externe 100000 et l'étiquette de couche 1024

Autre exemple :
mpls && mpls 1024 && host 192.9.200.1
signifie : filtrer les paquets de données envoyés vers ou depuis 192.9.200.1. L'étiquette interne du paquet de données est 1024 et a une étiquette externe.

pppoed
Si le Le paquet de données est un paquet de découverte de serveur PPP-over-Ethernet (ntr : paquet de découverte,
son type Ethernet est 0x8863), alors l'expression conditionnelle correspondante est vraie.
(ntr : PPP-over-Ethernet, point -protocole support Ethernet point à point, l'établissement de la connexion point à point est divisé en la phase de découverte (découverte d'adresse) et la
phase d'établissement de session PPPoE, le paquet de découverte est des paquets envoyés dans la première phase de type Ethernet<.> est un champ dans la trame Ethernet, utilisé pour indiquer le protocole appliqué au champ de données de la trame)

pppoes

Si le paquet de données est un paquet de données de session PPP-over-Ethernet (nt: type Ethernet est 0x8864, PPP-over-Ethernet a été expliqué ci-dessus, vous pouvez rechercher
mot-clé
'PPP-over-Ethernet'trouver sa description) , alors l'expression conditionnelle correspondante est vraie.

Il convient de noter que pour le paquet de données de session PPP-over-Ethernet, l'expression conditionnelle rencontrée dans l'expression Le premier mot-clé pppoes changera la

position de départ (c'est-à-dire le décalage de décodage) des données dans le paquet de données correspondant au mot-clé suivant dans l'expression

Par exemple :

pppoes && ip
Représente : Filtrer les paquets de données ipv4 intégrés dans les paquets de données PPPoE.

tcp, udp, icmp

a la même signification que l'expression suivante :
ip proto p ou ip6 proto p
où p est l'un des protocoles ci-dessus (la signification est : si le paquet de données est un paquet de données ipv4 ou ipv6 et son type de protocole est tcp, udp ou icmp, l'expression conditionnelle correspondante
est vraie)

protocole iso proto

Si le type de protocole du Le paquet de données est le protocole de protocole dans la pile de protocoles iso-osi, alors l'expression conditionnelle correspondante est vraie (nt : [Solution initiale] ChaqueLe protocole spécifique de la couche est différent du. protocole utilisé par la couche tcp/ip correspondante. Le protocole spécifique dans chaque couche iso-osi doit être complété séparément)

le protocole peut être un nombre numérique ou l'un des noms suivants :

clnp, esis ou isis.

(nt : clnp, Connectionless Network Protocol, il s'agit du protocole de couche réseau dans le modèle de réseau OSI, esis, isis est inconnu et doit être complété)

clnp, esis, isis

est l'abréviation de l'expression suivante

iso proto p
où p est l'un des protocoles ci-dessus

l1, l2, iih, lsp, snp, csnp, psnp
est l'abréviation du type IS-IS PDU.
(nt : IS-IS PDU, système intermédiaire à système intermédiaire Protocol Data Unit, intermédiaire système L'unité de données de protocole du
système intermédiaire. Le réseau OSI (Open Systems Interconnection) est composé de systèmes finaux et de systèmes intermédiaires
Le système final fait référence au routeur et le système final fait référence à l'équipement utilisateur. Le groupe local formé par le routeur est appelé 'Area' (Area) et plusieurs zones forment un 'Domaine. ' (Domaine).
IS-IS fournit un routage intra-domaine ou intra-zone l1, l2, iih, lsp, snp, csnp, psnp représentent le type de PDU, le. une signification spécifique doit être complétée)

vpi n
Si le paquet de données est un paquet ATM, l'expression conditionnelle correspondante est vraie pour les appareils SunATM sur le système d'exploitation Solaris,
Si le paquet de données. est un paquet ATM, et son identifiant de chemin virtuel est n, Alors l'expression conditionnelle correspondante est vraie
(nt : ATM, Asychronous Transfer Mode, qui peut en fait être compris comme un protocole proposé par l'ITU-T (Union Internationale des Télécommunications). Secteur de normalisation des télécommunications) et
TCP/IP Une série de protocoles avec des fonctions équivalentes dans la couche IP, le niveau de protocole spécifique doit être complété)

vci n
Si le paquet de données est un ATM paquet de données, l'expression conditionnelle correspondante est vraie. Pour le périphérique SunATM des opérations Solaris sur le système,
Si le paquet de données est un paquet ATM et que son identifiant de canal virtuel est n, alors l'expression conditionnelle correspondante est vraie.
(nt: ATM, a été décrit ci-dessus)

lane
Si le paquet de données est un paquet de données ATM LANE, l'expression conditionnelle correspondante est vraie. Il convient de noter que s'il s'agit d'un LANE Ethernet simulé. paquet de données ou
LANE Paquet de contrôle d'unité logique, le premier mot-clé de voie dans l'expression modifiera le test des conditions suivantes dans l'expression. Si aucun
ne spécifie le mot-clé de voie, le test conditionnel sera basé sur le LLC (. Logical Link Layer) contenu dans le paquet de données ATM

llc
Si le paquet de données est un paquet ATM, l'expression conditionnelle correspondante est vraie pour les appareils SunATM sur le système d'exploitation Solaris. >Si le paquet de données est un paquet de données ATM et contient LLC, l'expression conditionnelle correspondante est vraie

oamf4s

Si le paquet de données est un paquet de données ATM, l'expression conditionnelle correspondante est vraie pour Solaris. Pour les appareils SunATM sur le système d'exploitation, si le paquet de données est un paquet ATM
et est une cellule Segment OAM F4 (VPI=
0 et VCI=3), cela correspond à L'expression conditionnelle est vraie.

(nt: OAM, Operation Administration and Maintenance, gestion des opérations et maintenance, qui peut être comprise comme : la classification des cellules ATM générées pour la gestion du réseau

dans le réseau ATM. Méthode.

L'unité de transmission dans le réseau ATM est une cellule Les données à transmettre seront éventuellement divisées en cellules d'une longueur fixe (53 octets)

(Compréhension initiale : Une ligne physique peut). être dupliqué Utilisé pour former un chemin virtuel (
virtuel chemin). Et un chemin virtuel est à nouveau réutilisé pour former un canal virtuel (virtuel méthode d'adressage des deux parties communicantes). est : numéro de chemin virtuel (VPI)/numéro de canal virtuel (VCI)).
Les Flow Cells OAM F4 peuvent être divisées en type de segment et en type de bout en bout. La différence est inconnue et doit être complétée. .)

oamf4e

Si le paquet est un paquet ATM, l'expression conditionnelle correspondante est vraie pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM

et est terminé -. cellule OAM F4 de bout en bout (VPI=
0
et VCI=4), alors l'expression conditionnelle correspondante est vraie.(nt : OAM et OAM de bout en bout F4 a été décrit ci-dessus, vous pouvez rechercher '
oamf4s' pour localiser)oamf4

si Si le paquet de données est un Paquet de données ATM, l'expression conditionnelle correspondante est vraie pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet de données est un paquet de données ATM

et est une cellule OAM F4 de bout en bout ou de segment (VPI=0
et VCI=
3 ou VCI=4), alors l'expression conditionnelle correspondante est vraie.(nt : OAM OAM de bout en bout F4 a été décrit ci-dessus, vous pouvez rechercher '
oamf4s' pour localiser)oamSi le paquet est un paquet ATM, le L'expression conditionnelle correspondante est vraie pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM

et est une cellule OAM F4 de bout en bout ou segmentée (VPI=

0
et VCI=.
3 ou VCI=4), alors l'expression conditionnelle correspondante est vraie.(nt : Cette option est dupliquée avec oamf4, besoin de confirmer)

metac
Si le paquet est un paquet ATM, l'expression conditionnelle correspondante est vraie Pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM
et provient de 'Ligne de méta-signalisation'(nt : VPI=0 et VCI=1, 'circuit de signalisation méta', circuit de signalisation méta, la signification spécifique est inconnue et doit être complétée), alors l'expression conditionnelle correspondante est vraie.

bcc

Si le paquet est un paquet ATM, l'expression conditionnelle correspondante est vraie Pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM
et provient de
'Broadcast. ligne de signalisation'(nt : VPI=0 et VCI=2, 'Circuit de signalisation de diffusion', circuit de signalisation de diffusion, la signification spécifique est inconnue et doit être complétée), alors l'expression conditionnelle correspondante est vraie.

sc

Si le paquet est un paquet ATM, l'expression conditionnelle correspondante est vraie pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM
et provient de
' Ligne de signalisation'(nt : VPI=0 et VCI=5, 'Circuit de signalisation' , circuit de signalisation, la signification spécifique est inconnue et doit être complétée), alors l'expression conditionnelle correspondante est vraie.
ilmic

Si le paquet est un paquet ATM, l'expression conditionnelle correspondante est vrai pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM

et provient de
'
ligne ILMI'(nt : VPI). =0 et VCI=16, 'ILMI', interface de gestion locale provisoire, qui peut être comprise comme une interface de gestion de réseau basée sur SNMP (Simple Network Management Protocol)), alors l'expression conditionnelle correspondante est vraie

connectmsg

Si le paquet est un paquet ATM, le l'expression conditionnelle correspondante est vraie. Pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM

et provient de
'
ligne de signalisation ' et les messages suivants sont spécifiés dans le protocole Q.2931 : Setup, Calling Proceeding, Connect,Connect Ack , Release ou Release Done. L'expression conditionnelle correspondante est vraie (nt : Q.2931 est un protocole de signalisation développé par l'UIT (Union internationale des télécommunications). Il stipule que la couche d'interface utilisateur du réseau numérique à intégration de services à large bande établit, maintient et annule les étapes pertinentes de
connexion réseau.)
métaconnexionSi le paquet de données est un paquet de données ATM, alors l'expression conditionnelle correspondante est vraie. Pour les appareils SunATM sur le système d'exploitation Solaris, si le paquet est un paquet ATM
et provient du '

ligne de signalisation méta

' et ce sont les messages suivants spécifiés dans le protocole Q.2931 : Configuration, Appel en cours, Connexion, Connect Ack, Release, ou Release Done. L'expression conditionnelle correspondante est vraie.expr relop exprSi les opérandes (expr) des deux côtés de relop satisfont la relation spécifiée par relop, l'expression conditionnelle correspondante est vraie.relop peut être l'un des opérateurs relationnels suivants : >, < , <=, =, !=.
expr est une expression arithmétique entière (exprimée de la même manière que le C standard), des opérateurs binaires. (+, -, *, / peuvent être utilisés dans cette expression, &, |,

<<, >>), des opérateurs de longueur et des opérateurs de référence pour les données d'un paquet spécifique. que toutes les opérations de comparaison ont un opérande par défaut Aucun signé,

par exemple,
0x80000000
et
0xffffffff
sont tous deux supérieurs à 0 (nt: pour une comparaison signée, selon le complément à deux règle,
0xffffffff sera inférieur à 0). Si vous souhaitez référencer les données dans le paquet de données, vous pouvez utiliser l'expression suivante : proto [expr : size]La valeur de

proto peut être l'une des valeurs suivantes : ether, fddi, tr, wlan, ppp, slip, link, ip, arp, rarp,
tcp, udp, icmp, ip6 ou radio. La couche protocolaire correspondant à l'opération de référence. (ether, fddi, wlan,
tr, ppp, slip et link correspondent à la couche liaison de données, radio correspond à 802.11(wlan, LAN sans fil ) L'en-tête
"radio" ci-joint (ntr: qui décrit le débit en bauds, le cryptage des données et d'autres informations) ).
Il devrait Il convient de noter que les protocoles de couche supérieure tels que tcp et udp ne peuvent actuellement être appliqués qu'aux réseaux dont la couche réseau adopte les protocoles IPv4 ou IPv6 (cette restriction sera modifiée dans les futures versions de tcpdump
Pour les protocoles spécifiés Les données requises, son octet de décalage dans les données du paquet est spécifié par expr.

La taille dans l'expression ci-dessus est facultative, utilisée pour indiquer la longueur de la partie du segment de données qui nous concerne (nt: généralement ce morceau de data
est un champ du paquet de données), sa longueur peut être de 1, 2 ou 4 octets. Si la taille n'est pas indiquée, la valeur par défaut est de 1 octet. Opérateur de longueur Le mot-clé est len,.
Ce code correspond à la longueur de l'ensemble du paquet de données.

Par exemple, 'ether[0] & 1 != 0 ' amènera tcpdump à capturer tous les paquets de multidiffusion (nt: le bit le plus bas de ether[0] est 1, ce qui signifie que l'adresse de destination du
paquet est l'adresse de multidiffusion 'ip[0] & 0xf != 5' correspondant à capturer tous les paquets IPv4 avec options
' ip. [6:2] & 0x1fff = 0' correspond à la capture de paquets IPv4 qui ne sont pas fragmentés ou IPv4 fragmentés dont le numéro de fragment est 0 Paquet de données. Cette méthode de vérification des données s'applique également aux références. aux données TCP et UDP,
c'est-à-dire que tcp[
0] correspond au premier octet de l'en-tête TCP, plutôt qu'à des octets intermédiaires.

Quelques décalages et valeurs de champ ​​peut être exprimé par des noms ainsi que par des chiffres. Voici les noms de certains des champs disponibles (champs dans l'en-tête du protocole) : icmptype (faisant référence à l'en-tête du protocole ICMP)

champ de type), icmpcode (faisant référence à au champ de code d'en-tête du protocole ICMP), et tcpflags (faisant référence au champ flags de l'en-tête du protocole TCP)

Voici les valeurs disponibles pour le champ type dans l'en-tête du protocole ICMP :

icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, icmp-echo, icmp-routeradvert,
icmp-routersolicit, icmp-timx-ceed, icmp-paraamprob, icmp-tstamp, icmp-tstampreply,
icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.

Voici les valeurs disponibles pour le champ flags dans l'en-tête du protocole TCP : tcp-fin, tcp-syn, tcp-rst, tcp-push,

tcp-ack, tcp-urg.

Pour plus de connaissances liées à la programmation, veuillez visiter :

Cours d'apprentissage en programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal