Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wozu dient der Linux-Paketerfassungsbefehl tcpdump?

Wozu dient der Linux-Paketerfassungsbefehl tcpdump?

青灯夜游
青灯夜游Original
2020-11-03 11:14:379398Durchsuche

Der Linux-Paketerfassungsbefehl tcpdump wird zum Dumpen von Netzwerkübertragungsdaten verwendet. Er kann den „Header“ der im Netzwerk übertragenen Datenpakete vollständig abfangen und eine Analyse ermöglichen; er unterstützt die Filterung nach Netzwerkschicht, Protokoll, Host, Netzwerk oder Port und stellt logische Anweisungen wie „and“, „or“ und „not“ bereit, die Ihnen dabei helfen können, nutzlose Informationen loszuwerden.

Wozu dient der Linux-Paketerfassungsbefehl tcpdump?

Verwandte Empfehlungen: „Linux-Video-Tutorial

Einführung

Der Linux-Befehl tcpdump wird zum Dumpen von Netzwerkübertragungsdaten verwendet.

Führen Sie den Befehl tcpdump aus, um die Paketdatei-Header aufzulisten, die über die angegebene Netzwerkschnittstelle laufen. Im Linux-Betriebssystem müssen Sie ein Systemadministrator sein.

Um tcpdump in einfachen Worten zu definieren, ist es: Den Datenverkehr in einem Netzwerk ablegen, ein Paketanalysetool, das Datenpakete im Netzwerk gemäß der Definition des Benutzers abfängt. tcpdump kann die „Header“ von im Netzwerk übertragenen Datenpaketen vollständig abfangen und eine Analyse durchführen. Es unterstützt die Filterung nach Netzwerkebene, Protokoll, Host, Netzwerk oder Port und bietet logische Anweisungen wie „und“ oder „nicht“, um Ihnen beim Entfernen nutzloser Informationen zu helfen.

Praktische Befehlsbeispiele

Standardmäßig starten

tcpdump

Unter normalen Umständen werden beim direkten Starten von tcpdump alle Datenpakete überwacht, die auf der ersten Netzwerkschnittstelle fließen.

Überwachen Sie die Datenpakete der angegebenen Netzwerkschnittstelle

tcpdump -i eth1

Wenn Sie keine Netzwerkkarte angeben, überwacht tcpdump standardmäßig nur die erste Netzwerkschnittstelle, normalerweise eth0. In den folgenden Beispielen wird keine Netzwerkschnittstelle angegeben .

Überwachen Sie die Datenpakete des angegebenen Hosts.

Drucken Sie alle Datenpakete aus, die bei Sonnenuntergang ein- oder ausgehen Host-Pakete

tcpdump host sundown

Drucken Sie die Kommunikationspakete zwischen Helios und Hot oder mit Ace

tcpdump host 210.27.48.1
Fangen Sie die Kommunikation zwischen Host

210.27.48.1

und Host

210.27.48.2

oder 210.27.48.3 ab

tcpdump host helios and \( hot or ace \)
Drucken Sie die Kommunikation zwischen ace und alle IP-Datenpakete, die zwischen anderen Hosts kommuniziert werden, jedoch keine Datenpakete mit Helios.
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
Wenn Sie die

IP aller Hosts außer dem Host

210.27.48.2

Paket erhalten möchten, verwenden Sie den Befehl:

tcpdump ip host ace and not helios
Alle vom Host gesendeten Daten abfangen Hostname
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
Überwachen Sie alle an den Host

Hostname

tcpdump -i eth0 src host hostname

Überwachen Sie die Datenpakete des angegebenen Hosts und Ports

Wenn Sie das Telnet erhalten möchten Pakete, die vom Host empfangen oder gesendet werden 210.27.48.1, verwenden Sie den folgenden Befehl

tcpdump -i eth0 dst host hostname

, um den udp 123 Port dieser Maschine zu überwachen 123 ist der Service-Port

ntp

von

tcpdump tcp port 23 and host 210.27.48.1
Datenpakete des angegebenen Netzwerks

Drucken Sie alle Kommunikationspakete zwischen dem lokalen Host und dem Host im Berkeley-Netzwerk (nt: ucb-ether, hier kann es als Netzwerkadresse des „Berkeley-Netzwerks“ verstanden werden, dieser Ausdruck ist am häufigsten primitiv Die Bedeutung kann wie folgt ausgedrückt werden: Alle Pakete mit der Netzwerkadresse ucb-ether drucken)

tcpdump udp port 123
Alle FTP-Pakete drucken, die den Gateway-Snup passieren (beachten Sie, dass der Ausdruck in einfache Anführungszeichen gesetzt ist, was verhindert, dass die Shell die Klammern interpretiert darin) Fehleranalyse)
tcpdump net ucb-ether
Alle IP-Pakete drucken, deren Quelladresse oder Zieladresse der lokale Host ist

(Wenn das lokale Netzwerk über ein Gateway mit einem anderen Netzwerk verbunden ist, kann das andere Netzwerk nicht als lokales Netzwerk gezählt werden. (nt: Die Übersetzung dieses Satzes ist gewunden und muss ergänzt werden).localnet muss durch den Namen des tatsächlich verwendeten lokalen Netzwerks ersetzt werden)

tcpdump 'gateway snup and (port ftp or ftp-data)'

Überwachen Sie die Datenpakete des angegebenen Protokolls

Drucken Sie die Starten und beenden Sie Datenpakete in der TCP-Sitzung und die Quelle oder das Ziel der Datenpakete ist kein Host im lokalen Netzwerk (nt: localnet, es muss bei tatsächlicher Verwendung durch den Namen des lokalen Netzwerks ersetzt werden))

tcpdump ip and not net localnet
Alle Quell- oder Zielports sind 80, das Netzwerkschichtprotokoll ist IPv4 und enthält Daten, anstelle von Datenpaketen wie SYN, FIN und ACK-only, die keine Daten enthalten (Der Ausdruck der IPv6-Version kann verwendet werden als Übung)
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
(nt: kann so verstanden werden, dass ip[2:2] das gesamte IP-Datenpaket darstellt. Die Länge (ip[0]&0xf)<<2) repräsentiert die Länge der IP-Daten Paket-Header (ip[0]&0xf stellt das IHL-Feld im Paket dar, und die Einheit dieses Feldes ist 32 Bit, die konvertiert werden muss

成字节数需要乘以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'

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

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

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

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

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

(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

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中找到相关的蛛丝马迹.)

Für SLIP-Netzwerke (nt: SLIP-Links, die als Netzwerk verstanden werden können, also eine über eine serielle Leitung hergestellte Verbindung, und eine einfache Verbindung kann auch als Netzwerk betrachtet werden),
der „Richtungsanzeiger“ des Datenpaket („Richtungsindikator-Flag“) („I“ bedeutet „ein“, „O“ bedeutet „aus“). Der Pakettyp wird zuerst gedruckt.

Typen sind in IP, UTCP und CTCP unterteilt (nt: unbekannt, muss hinzugefügt werden). Bei IP-Paketen werden die Verbindungsinformationen nicht gedruckt. (nt: Bei einer SLIP-Verbindung sind die Verbindungsinformationen von IP-Paketen möglicherweise nutzlos oder undefiniert.
erneut bestätigen). Die Verbindungskennung wird neben der Typangabe gedruckt. Wenn das Paket komprimiert ist, wird der codierte Header zu diesem Zeitpunkt wie folgt angezeigt:
*S+n oder *. SA+n, wobei n die (Sequenznummer oder (Sequenz) der Paketnummer und Antwortnummer) darstellt) Die Anzahl der Erhöhungen oder Verringerungen (nt | rt: S, SA ist umständlich und muss neu übersetzt werden).
Für nicht spezielle komprimierte Pakete werden 0 oder mehr „Änderungen“ gedruckt. „Das Format beim Drucken ist wie folgt:
‚Flag‘ +/-/=n Die Länge der Paketdaten und die Länge des komprimierten Headers .
Unter diesen kann „Flag“ die folgenden Werte annehmen:
U (repräsentiert den dringenden Zeiger), W (bezieht sich auf das Pufferfenster), A (Antwort), S (Seriennummer), I (Paket-ID) und Der inkrementelle Ausdruck „=n“ bedeutet, dass ihm ein neuer Wert zugewiesen wird.

Im Folgenden wird beispielsweise das Drucken eines ausgehenden komprimierten TCP-Pakets gezeigt um 6 erhöht,

die Sequenznummer wird um 49 erhöht und die Paket-ID-Nummer wird um 6 erhöht; die Paketdatenlänge beträgt 3 Bytes (Octect), der komprimierte Header beträgt 6 Bytes (nt: Dies sollte anscheinend nicht der Fall sein ein spezielles komprimiertes Datenpaket sein). ist ein Beispielpaket zu Beginn des „rlogin“-Prozesses (Remote-Anmeldung) vom Host-RTSG zum Host-Csam:
Arp Who-Hats Csam Tell RTSG

Arp Reply Csam Is-At CSAM

Die erste Zeile zeigt an: RTSG schickte ein ARP-Paket (Nt: an das gesamte Netzwerksegment gesendet, ARP-Paket), um nach der Ethernet-Adresse von Csam zu fragen. Csam (Nent: siehe unten, Csam) antwortete mit ihrer eigenen Ethernet-Adresse (in diesem Beispiel die Ethernet-Adresse). Die Adresse wird durch den Namen in Großbuchstaben identifiziert, und die Internetadresse (d. h. die IP-Adresse) wird durch den Namen in Kleinbuchstaben identifiziert.

Wenn Sie tcpdump -n verwenden, können Sie die Ethernet- und IP-Adressen anstelle der Namensbezeichner deutlich sehen:
Arp Who-hat 128.3.254.6 Tell 128.3.254.68
Arp Reply 128.3.254.6 ist-um 02:07:01:00:01:c4

Wenn wir tcpdump -e verwenden, können wir das erste Datenpaket deutlich erkennen wird über das gesamte Netzwerk gesendet, und das zweite Datenpaket ist Punkt-zu-Punkt:
RTSG Broadcast 0806 64: arp who-has csam tell rtsg
CSAM RTSG 0806 64: arp Reply csam is-at CSAM

Das erste Datenpaket Zeigt an: Die Quell-Ethernet-Adresse des ARP-Pakets ist RTSG, die Zieladresse ist das gesamte Ethernet-Segment und der Wert des Typfelds ist hexadezimal 0806 (repräsentiert ETHER_ARP(nt: Typkennung des ARP-Pakets)),

Die Gesamtlänge Das Paket ist 64 Bytes groß.

TCP-Datenpaket



Das Programm tcpdump hilft Ihnen möglicherweise nicht weiter (Hinweis: Die Warnung kann ignoriert werden,

Lesen Sie einfach weiter und schauen Sie nach, wenn Sie damit nicht vertraut sind.

Normalerweise ist das das Anzeigeformat von TCP-Daten Pakete von tcpdump Wie folgt: src > dst: Flags data-seqno ack window dringende Optionen src und dst sind die Quell- und Ziel-IP-Adressen und die entsprechenden Ports. Das Flags Flag besteht aus S(SYN), F(FIN ), P(PUSH, R (RST),

W (ECN CWT (nt | rep: unbekannt, muss ergänzt werden)) oder E (ECN-Echo (nt | rep: unbekannt, muss ergänzt werden))),

Ein einzelnes „.“ bedeutet, dass es keine Flag-ID gibt. Die Datensegment-Sequenznummer (Data-seqno) beschreibt eine Position im Sequenznummernraum, die den Daten in diesem Paket entspricht (nt: Die gesamten Daten sind segmentiert,
Jedes Segment hat eine Sequenznummer, und alle Sequenznummern bilden einen Sequenznummernraum. (Bitte beachten Sie das folgende Beispiel. Ack beschreibt dieselbe Verbindung, dieselbe Richtung und die Sequenznummer des nächsten Datenfragments, das das lokale Ende empfangen soll. Das Fenster ist der Datenempfangspuffer, der dem lokalen Ende zur Verfügung steht (die andere Partei muss die Daten entsprechend dieser Größe organisieren, wenn sie Daten sendet). sind dringende Daten im Datenpaket. Optionen beschreiben einige Optionen von TCP, die durch spitze Klammern dargestellt werden (z. B. < ;mss 1024>).

src, dst und Flags werden immer angezeigt Informationen im TCP-Protokoll-Header.

Dies ist die Anfangsphase einer Rlogin-Anwendungsanmeldung von trsg zu csam.
rtsg.1023 > S 947648:947648(0) ack 768513 win 4096
rtsg.1023 > csam.login: . ack 1 win 4096
rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
csam.login > ack 2 win 4096
rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
rtsg.1023: P 1 :2(1) ack 21 win 4077
csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
csam.login > 21 win 4077 urg 1
Die erste Zeile zeigt an, dass ein Datenpaket vom TCP-Port 1023 des RTSG-Hosts an den TCP-Port Login des CSA-Hosts gesendet wird (nt: der Port des UDP-Protokolls und der Port des TCP-Protokolls). sind zwei separate Ports), obwohl der Wertebereich derselbe ist. S bedeutet, dass die Sequenznummer des Pakets 768512 ist und keine Daten enthält (nbytes)‘, was bedeutet: „In diesem Paket beginnt die Sequenznummer der Daten mit der ersten und endet mit der letzten, mit Ausnahme der letzten. Und es enthält insgesamt nbytes an
Benutzerdaten“.) Es gibt keine Huckepack-Antwort (nt: Im Folgenden ist die zweite Zeile das Datenpaket mit der Huckepack-Antwort. Die verfügbare Akzeptanzfenstergröße beträgt 4096 Byte und die maximal akzeptable Datensegmentgröße des anfordernden Endes (rtsg) beträgt 1024 Byte (nt: Diese Informationen werden an gesendet das antwortende Ende csam als Anfrage für weitere Verhandlungen zwischen den beiden Parteien). zurückgebracht, für das SYN-Paket von rtsg).

rtsg zielt auch auf die SYN-Daten von csam ab. Das Paket antwortet mit einem ACK-Paket als Antwort Das Antwortpaket enthält keine Daten, es gibt keine Datensegmentsequenznummer im Paket. Die Sequenznummer dieses ACK-Pakets ist nur eine kleine Ganzzahl 1. Es gibt die folgende Erklärung: Für eine Sitzung über eine TCP-Verbindung druckt tcpdump nur Die Sequenznummer des ersten Pakets an beiden Enden der Sitzung und die nachfolgenden entsprechenden Pakete geben nur die Differenz zur ursprünglichen Paketsequenznummer aus. Das heißt, die Sequenznummer nach der anfänglichen Sequenznummer, die als „“ angesehen werden kann. relative Byte-Position des aktuell übertragenen Datenfragments in dieser Sitzung in den gesamten
zu übertragenden Daten (nt: Die erste Position auf beiden Seiten ist 1, d. h. die Startanzahl der „relativen Bytes“). überschreibt diese Funktion,
sodass die ursprüngliche Sequenznummer des Datenpakets gedruckt wird

Die Bedeutung der sechsten Zeile lautet: rtsg sendet 19 Bytes an csam Daten (Bytes sind von 2 bis 20 nummeriert, Übertragungsrichtung ist rtsg an csam ). In Zeile 7 meldet

csam, dass sie Bytes unter 21 von rtsg empfangen hat, jedoch mit Ausnahme der Bytes mit der Nummer 21. Diese Bytes werden entsprechend im Empfangspuffer von csam gespeichert Die Größe des Empfangspufferfensters wird um 19 Bytes reduziert (Hinweis: Sie können das Win-Attribut in den Zeilen 5 und 7 ändern. Die Änderung des Werts ist in Zeile 7 zu sehen, in der csam auch ein

-Byte an rtsg gesendet hat). 8 und 9: csam sendet weiterhin zwei Datenpakete, die jeweils nur ein Byte enthalten, und dieses Datenpaket trägt das PUSH-Flag Die Header-Daten können nicht vollständig abgerufen werden. Zu diesem Zeitpunkt wird tcpdump sein Bestes geben, um diesen unvollständigen Header vollständig zu analysieren
und den verbleibenden nicht analysierbaren Teil als „[|tcp]“ anzuzeigen Wenn das Längenattribut tatsächlich länger oder kürzer als die tatsächliche Länge des Headers ist, zeigt tcpdump im Header
„[schlechte Option]“ an auf einige Optionen für das IP-Paket im Header des TCP-Pakets, schauen Sie zurück) In diesem Paket
und die Länge der echten IP (Datenpaket reicht nicht aus, um diese Optionen aufzunehmen, tcpdump zeigt „[schlechte HDR-Länge]“ an) '.

Erfassen Sie TCP-Pakete mit speziellen Flags (z. B. SYN-ACK-Flag, URG-ACK-Flag usw.).


Im TCP-Header werden 8 Bits (Bits) als Steuerbitbereich verwendet, deren Werte ​​sind:
FIN |. ACK | )

Angenommen, wir möchten die während des gesamten Prozesses des TCP-Verbindungsaufbaus generierten Datenpakete wie folgt überwachen: TCP verwendet das 3-Wege-Handshake-Protokoll, um eine neue Verbindung herzustellen. Way Handshake

Verbindungssequenz und die Datenpakete mit den entsprechenden TCP-Kontrollflags lauten wie folgt:
1) Verbindungsinitiator (nt: Caller) sendet ein Datenpaket mit dem SYN-Flag
2) Der Empfänger (nt: Recipient) antwortet mit ein Datenpaket mit den SYN- und ACK-Flags
3) Der Initiator sendet nach Erhalt der Antwort vom Empfänger ein Datenpaket mit dem ACK-Flag Respond

0 15 31
------------------------------ --- --------------------
|. Quellport |. -------- ------------------------------------------ --------
|. Sequenznummer |
------------------------------------ -------------- --------------
| Bestätigungsnummer |
-------------- ------------- ------------------------------------
|. HL |. rsvd |C|E|U|A|. ---------------------- --------------
|. TCP-Prüfsumme |. dringender Zeiger |
-------------- ---------- ------------------------ -

Ein TCP-Header, der normalerweise 20 Bytes ohne Optionsdaten belegt (nt | rt:options wird als Optionsdaten verstanden und muss rückübersetzt werden). nt: die linke Hälfte der vierten Zeile). ----|-------------| |P|R|S|F|. Fenstergröße |

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

|. 13. Oktett | |. |
|--------------|. -----|

|7 5 3 0|

Wir interessieren uns hier für die Steuerflagbits. Diese Bits sind von rechts nach links von 0 bis 7 nummeriert, sodass das PSH-Bit auf Nummer 3 liegt, und das URG Bit befindet sich auf Nummer 5.


Erinnern Sie sich daran, dass wir nur das Paket erhalten möchten, das das SYN-Flag enthält. Sehen wir uns an, was in Byte 13 eines Paketheaders passiert, wenn das SYN-Bit gesetzt ist:

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

|0 0 0 0 0 0 1 0|

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

|7 6 5 4 3 2 1 0|


In den Daten des Steuersegments ist nur Bit Nummer 1 gesetzt.

Angenommen, das Byte mit der Nummer 13 ist ein 8-Bit-Byte ohne Vorzeichen Zeichentyp und entsprechend der Netzwerk-Byte-Zahlensortierung (nt: Für ein Byte entspricht die Netzwerk-Byte-Reihenfolge der Host-Byte-Reihenfolge) ist sein Binärwert
wie folgt:

00000010

und sein Dezimalwert ist:


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 * 2^6 stellt 1 mal 2 in der 6. Potenz dar. Vielleicht ist das klarer, das heißt, das Verschieben des Exponenten 7 6... 0 im ursprünglichen Ausdruck unten, um es auszudrücken)

ist nah am Ziel , weil wir bereits wissen: Wenn SYN im Header des Datenpakets festgelegt ist, dann ist der Wert des 13. Bytes im Header 2 (nt: Gemäß der Netzwerkreihenfolge, also im Big-Head-Modus, ist das wichtigste Byte steht an der Vorderseite (an der Vorderseite, d. h. die tatsächliche Speicheradresse des Bytes ist relativ klein. Das wichtigste Byte bezieht sich auf das höherwertige Bit der Zahl in der mathematischen Darstellung, z. B. 3) ) in 356

Der relationale Ausdruck, den tcpdump verstehen kann, ist:
tcp[13] 2

Daher können wir diese Beziehung als Filterbedingung von tcpdump verwenden. Das Ziel besteht darin, Datenpakete zu überwachen, die nur das SYN-Flag enthalten:

tcpdump -i xl0 tcp[13] 2 (nt: xl0 bezieht sich auf die Netzwerkschnittstelle, z. B. eth0)

Dieser Ausdruck Die Formel lautet: „Das 13. Byte des TCP-Pakets soll den Wert 2 haben“, was auch das Ergebnis ist, das wir erhalten haben wollen.

Angenommen, wir müssen das Paket mit dem SYN-Flag erfassen, unabhängig davon, ob es ein anderes Flag enthält (nt: Solange es SYN bringt, wollen wir einen Blick darauf werfen, was wann passiert). Ein Paket mit

SYN-ACK (nt: SYN- und ACK-Flags) kommt an:

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

|0 0 0 1 0 0 1 0|

|--- ------------|
|7 6 5 4 3 2 1 0|

Bit 1 und 4 von Byte 13 sind gesetzt und sein Binärwert ist:
00010010

In eine Dezimalzahl umgewandelt ist:

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 bedeutet 1 mal 2 hoch 6. Vielleicht ist das klarer, also der Exponent 7 6 ... 0 im ursprünglichen Ausdruck wird nach unten verschoben)

Jetzt können Sie nicht einfach „tcp[13] 18“ als Filterausdruck von tcpdump verwenden, da dies dazu führt, dass nur Pakete ausgewählt werden, die das SYN-ACK-Flag enthalten, und Die anderen werden verworfen.
Erinnern Sie sich an unser Ziel: Ja: Solange das SYN-Flag des Pakets gesetzt ist, ignorieren wir andere Flags.

Um unser Ziel zu erreichen, müssen wir den Binärwert von Byte 13 verknüpfen mit einer anderen Zahl (nt: logisches UND) Um den Wert des SYN-Bits zu erhalten, ist das Ziel: Solange SYN gesetzt ist

, vergleichen wir es mit dem SYN-Wert von Byte 13 (nt: 00000010).


00010010 SYN-ACK 00000010 SYN
UND 00000010 (wir wollen SYN) UND 00000010 (wir wollen SYN)
-------- --------
= 00000010 = 00000010

Wir können feststellen, dass die obige UND-Operation unabhängig davon, ob das ACK oder andere Flags des Pakets gesetzt sind, uns denselben Wert liefert und sein Dezimalausdruck 2 ist (der Binärausdruck ist 00000010).
Das wissen wir also für Für Pakete mit dem SYN-Flag ist das Ergebnis des folgenden Ausdrucks immer wahr:

( ( Wert von Oktett 13 ) AND ( 2 ) ) ( 2 ) (nt: Wert von Oktett 13, d. h. Byte-Nr. 13-Wert )

Die Inspiration kam und wir bekamen den folgenden tcpdump-Filterausdruck
tcpdump -i xl0 'tcp[13] & 2 2'

Hinweis: Einfache Anführungszeichen oder Backslashes (nt: hier einfache Anführungszeichen) können nicht weggelassen werden, was auch der Fall ist Verhindern Sie, dass die Shell & interpretiert oder ersetzt.

UDP-Datenpaket-Anzeigeformat kann durch das von der spezifischen Anwendung generierte Datenpaket bestimmt werden rwho Beschreibung: actinide.who > udp 84

Seine Bedeutung ist: Der Port, der auf dem Actinide-Host ein UDP-Paket an den Port auf dem Broadcast-Host gesendet hat (nt: Actinide und Broadcast beziehen sich beide auf die Internetadresse).

Die von diesem Paket übertragenen Benutzerdaten sind 84 Bytes.

Einige UDP-Dienste können anhand des Quell- oder Zielports des Pakets oder anhand der angezeigten Protokollinformationen der höheren Ebene identifiziert werden. Beispielsweise Domänennamen-Dienstanfragen (DNS-Anfragen,

in RFC-1034/1035). , und Sun RPC-Aufrufe an NFS (Fernaufrufe, die von NFS-Servern initiiert werden (nt: Sun RPC), es gibt eine Beschreibung von Fernaufrufen in RFC-1050).

UDP Name Service Request


(Hinweis: Die folgende Beschreibung geht davon aus Sie sind mit dem in RFC-103 beschriebenen Domain Service-Protokoll vertraut, sonst werden Sie feststellen, dass die folgende Beschreibung eine Bibel ist (nt:Griechische Bibel,

Passen Sie nicht auf, ich mache Ihnen Angst, lesen Sie einfach on))

Die Namensdienstanfrage hat das folgende Format:

src > dst: id op? flags qtype qclass name (len)
(nt: Aus dem Folgenden sollte das Format src > dst: id op sein flags qtype qclass? name (len)

Zum Beispiel gibt es eine tatsächliche Anzeige von:

h2opolo.1538 > Nameserver, der auf Helios für den Adressdatensatz von ucbvax.berkeley.edu läuft (nt: qtype entspricht A. Die ID-Nummer dieser Abfrage selbst ist „3“. Das Symbol
„+“ bedeutet, dass das rekursive Abfrageflag gesetzt ist. NT: Der DNS-Server kann den übergeordneten DNS-Server nach Adressdatensätzen abfragen, die nicht im Server enthalten sind. Die über das IP-Paket gesendete Abfrageanforderung hat schließlich eine Datenlänge von 37 Bytes, die die Header-Daten von nicht enthält Weil dieser Abfragevorgang der Standardwert ist (nt | rt: normales Verständnis) und das OP-Feld weggelassen wird.
Wenn das OP-Feld nicht weggelassen wird, wird es zwischen „3“ und „angezeigt“. +‘. Ebenso ist qclass auch der Standardwert, C_IN wird daher nicht angezeigt, und wenn er nicht ignoriert wird, wird er nach ‚A‘ angezeigt.

Bei der Ausnahmeprüfung werden zusätzliche Felder in eckigen Klammern angezeigt: Wenn eine Abfrage auch Eine Antwort (nt: kann als Antwort auf eine andere vorherige Anfrage verstanden werden) und diese Antwort enthält maßgebliche oder zusätzliche Datensatzsegmente,

ancount, nscout, arcount (nt: die spezifische Feldbedeutung muss ergänzt werden) wird als „[ na]', '[nn ]', '[nau]', wobei n die entsprechende Anzahl der folgenden

Antwortbits im Paket (z. B. AA-Bit, RA-Bit, Rcode-Bit) oder eines der Bytes darstellt 2 oder 3 „muss 0 sein“-Bit gesetzt ist (nt: auf 1 gesetzt), wird „[b2&3]=x“ angezeigt, wobei x den Wert von
Header-Byte 2 und Byte 3 UND-verknüpft

UDP-Namensdienst darstellt Antwort

Für Namensdienst-Antwortdatenpakete hat tcpdump das folgende Anzeigeformat: src > helios.domain > h2opolo .1538: 3 3/3/7 A 128.32.137.3 (273)
helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)

Die erste Zeile zeigt: Helios an h2opolo gesendete Abfrageanfrage Nr. 3 antwortete mit 3 Antwortdatensätzen (nt | rt: Antwortdatensätze), 3 Nameserverdatensätzen,

und 7 zusätzlichen Datensätzen. Der erste Antwortdatensatz (nt: der erste von 3 Antwortdatensätzen) ). ist A (nt: stellt die Adresse dar) und seine Daten sind die Internetadresse 128.32.137.3.

Dieses Antwort-UDP-Paket enthält 273 Bytes an Daten (ohne UPD- und IP-Header-Daten. Ignoriert (nt: die tatsächlichen). Der Wert von op ist Query, rcode, d. h. der tatsächliche Wert von

Antwortcode ist NoError), das Feld, das ebenfalls ignoriert wird, ist das Klassenfeld (nt | rt: sein Wert ist C_IN, was auch der Standardwert für Typ A ist Rekordwert)

Die zweite Zeile zeigt an: Helios hat auf die von h2opolo gesendete Abfrageanfrage Nr. 2 geantwortet. In der Antwort ist rcode als NXDomain codiert (nt: zeigt eine nicht vorhandene Domäne an) und es gibt keinen Antwortdatensatz,
aber er enthält ein Nameserver-Datensatz, enthält keine autorisierenden Serverdatensätze (nt | ck: Von oben sind die Autoritätsdatensätze hier die entsprechenden zusätzlichen
Datensätze oben). „*“ zeigt an, dass das Antwortflag des autorisierenden Servers gesetzt ist (nt: also zusätzlich). Datensätze stellen Normdatensätze dar).
Da kein Antwortdatensatz vorhanden ist, werden Typ, Klasse und Datenfelder ignoriert.

Das Flag-Feld kann andere Zeichen enthalten, z. B. „-“(nt: bedeutet, dass dies möglich ist rekursiv abgefragt werden, d. h. das RA-Flag ist nicht gesetzt), '|'(nt: stellt eine abgeschnittene Nachricht dar, d. h. das TC-Flag
ist gesetzt. Wenn die Antwort (nt | ct:) verstanden werden kann ein UDP-Paket, das eine Namensdienst-Antwort enthält, tcpdump kennt diese Art von Daten. Jeder Eintrag im Abschnitt „Frage“ des Pakets (wie seine Daten analysiert werden) enthält nicht (nt: die Bedeutung jedes Eintrags, muss ergänzt werden) , '[nq]' wird ausgedruckt.

Es ist zu beachten: Ja: Das Anforderungs- und Antwortdatenvolumen des Nameservers ist relativ groß und die Standarderfassungslänge beträgt 68 Byte (nt: snaplen, was verständlich ist als Einstellungsoption von tcpdump) reicht möglicherweise nicht aus, um den gesamten Inhalt des Datenpakets zu erfassen. Wenn Sie die Auslastung des Nameservers wirklich sorgfältig prüfen müssen, können Sie den Snaplen-Wert über die Option -s erweitern


SMB/CIFS-Dekodierung

tcpdump kann bereits den Paketinhalt von SMB/CIFS/NBT-bezogenen Anwendungen dekodieren (nt: „Server Message Block Common“, „Internet File System“ „Abkürzung für Netzwerkprotokoll NETBIOS“) Diese Dienste verwenden normalerweise den 137/138-Port von TCP und den 139-Port von TCP. Die ursprünglichen

-Dekodierungsfunktionen für IPX- und NetBEUI-SMB-Pakete können weiterhin verwendet werden (nt: NetBEUI ist eine erweiterte Version von NETBIOS). tcpdump dekodiert die entsprechenden Datenpakete standardmäßig nur im einfachsten Modus. Wenn wir detaillierte Dekodierungsinformationen wünschen, können Sie die Startoption -v verwenden. Es ist zu beachten, dass -v sehr detaillierte Informationen generiert,

Zum Beispiel für Es werden ein einzelnes SMB-Paket, ein Bildschirm oder mehrere Informationen generiert. Verwenden Sie diese Option daher nur bei Bedarf.

Informationen zum SMB-Paketformat und der Bedeutung der einzelnen Felder finden Sie in pub/samba/specs / Verzeichnis von www.cifs.org oder der SMB-on-Linux-Patch

(nt | rt: patch), bereitgestellt von Andrew Tridgell (tridge@samba.org


NFS-Anfragen und -Antworten

tcpdump). UDP-Pakete im folgenden Format für Sun NFS (Network File System)-Anfragen und -Antworten:
src.xid >

Das Folgende ist ein spezifischer Satz von Ausgabedaten

sushi.6709 > .201b > wrl.nfs:

144 Lookup Fh 9,74/4096.6878 "xcolors"

Wrl.nfs > sushi.201b:
Reply Ok 128 Lookup Fh 9,74/4134.3150

Die erste Ausgabezeile zeigt: Der Host Sushi hat eine „Exchange-Anfrage“ (nt: Transaktion) an die Host-Wrl gesendet. Die ID der Anfrage lautet 6709 (beachten Sie, dass auf den Hostnamen die ID-Nummer der Exchange-Anfrage folgt, nicht die Quellportnummer). beträgt 112 Bytes, was die Länge der UDP- und IP-Header nicht einschließt. Der Operationstyp ist readlink(nt: dh dieser Vorgang ist ein Lesevorgang für symbolische Links).

Der Operationsparameter ist fh 21,24/10.73165 (nt:). Es kann entsprechend der tatsächlichen Betriebsumgebung wie folgt analysiert werden: fd bedeutet, dass die Beschreibung ein Datei-Handle ist, 21,24 bedeutet, dass das Gerät diesem Handle entspricht.
Das Master/Slave-Gerätenummernpaar, 10, stellt die I-Node-Nummer dar, die diesem Handle entspricht Dieses Handle (nt: Jede Datei entspricht einem I-Node im Betriebssystem, beschränkt auf Unix-Systeme),
73165 ist eine Zahl (nt: kann Es wird als Zufallszahl verstanden, die diese Anfrage identifiziert, und die Es muss eine spezifische Bedeutung hinzugefügt werden)).

In der zweiten Zeile antwortete wrl mit „ok“ und gab das tatsächliche Verzeichnis des symbolischen Links zurück, den Sushi im Ergebnisfeld lesen wollte (nt: Das heißt, das symbolische Der Link, den Sushi lesen muss, ist eigentlich ein Verzeichnis. Die dritte Zeile von

gibt an: Sushi fordert Wrl erneut auf, in dem durch „fh 9,74/4096.6878“ beschriebenen Verzeichnis zu suchen Die Bedeutung der in jeder Zeile angezeigten Daten hängt vom

Typ des Operationsfelds ab (nt: Die Bedeutung der Argumente für verschiedene Operationen ist unterschiedlich), und ihr Format folgt dem NFS-Protokoll und strebt nach Einfachheit und Klarheit


If Wenn die Option -v von tcpdump (Details-Druckoption) festgelegt ist, werden zusätzliche Informationen angezeigt:
sushi.1372a > 148 read fh 21,11/12.195 8192 bytes @ 24576
wrl.nfs > sushi.1372a:
antworten ok 1472 gelesen REG 100664 ids 417/0 sz 29388

(Die Option -v druckt normalerweise auch die TTL-, ID-, Längen- und Fragmentierungsfelder des IP-Headers aus, aber in diesem Beispiel werden sie alle weggelassen (nt: Es ist verständlich, dass sie aus Gründen der Sicherheit gelöscht wurden Kürze))
In der ersten Zeile fordert Sushi Wrl auf, 8192 Bytes Daten aus Datei 21,11/12.195 (nt: das Format ist oben beschrieben) zu lesen, beginnend bei Offset 24576 Bytes
Wrl antwortet, dass der Lesevorgang erfolgreich war; Da die zweite Zeile nur das Anfangsfragment der Antwortanforderung ist, enthält sie nur 1472 Bytes (andere Daten kommen in den nachfolgenden Antwortfragmenten, aber diese Pakete haben keine NFS
-Header mehr und sogar die UDP-Header-Informationen sind leer ( nt: Quelle und Ziel sollten vorhanden sein), was dazu führt, dass diese Fragmente die Filterbedingungen nicht erfüllen und daher nicht gedruckt werden. Zusätzlich zur Anzeige von Dateidateninformationen zeigt die Option -v auch
zusätzliche Dateiattributinformationen an : Dateityp (Dateityp, „REG“ bedeutet gewöhnliche Datei), Dateimodus (Dateizugriffsmodus, ausgedrückt in Oktal), UID und GID (nt: Dateieigentümer und
Gruppeneigentümer), Dateigröße (Dateigröße).

Wenn das Flag -v mehrfach angegeben wird (z. B. -vv), zeigt tcpdump detailliertere Informationen an.

Es muss beachtet werden, dass das NFS-Anforderungspaket viele Daten enthält. nt: Capture-Länge) Wenn es zu kurz ist, werden keine detaillierten Informationen angezeigt. Sie können Snaplen verwenden, um die Netzwerklast von NFS-Anwendungen zu überwachen (nt: Datenverkehr).
NFS-Antwortpakete folgen nicht strikt dem vorherigen entsprechenden Anforderungspaket (nt: RPC-Vorgang). Daher verfolgt tcpdump eine Reihe kürzlich empfangener Anforderungspakete und ordnet sie dann anhand ihrer

Austauschsequenznummer den entsprechenden Anforderungspaketen zu (). nt: Transaktions-ID).


AFS(nt: Andrew File System, Transarc, unbekannt, muss hinzugefügt werden) Die Anfrage und Antwort haben die folgenden Protokolle

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

src.sport > dport: rx-Pakettyp-Dienstaufruf, Rufname args src.sport > dst.dport: rx-Pakettyp-Dienstaufruf, Rufname argselvis.7001 > fid 536876964/1/1 „.newsrc.new“ neuer fid 536876964/1/1 „.newsrc“

pike.afsfs > elvis.7001: rx data fs antworten umbenennen

In der ersten Zeile sendet der Host elvis Ein RX-Datenpaket an Pike.

Dies ist ein Dateidienstanforderungsdatenpaket (nt: RX-Datenpaket, Senden eines Datenpakets, was als Senden eines Pakets zur Anforderung des Dienstes der anderen Partei verstanden werden kann), dies ist auch der Anfang ein RPC
-Aufruf (nt: RPC, Remoteprozeduraufruf). Dieser RPC fordert Pike an, den Umbenennungsvorgang (nt: rename) durchzuführen und die relevanten Parameter anzugeben:
Der ursprüngliche Verzeichnisdeskriptor ist 536876964/1/1, die Originaldatei Der Name ist „.newsrc.new“ und der neue Verzeichnisdeskriptor ist 536876964/1 /1, der neue Dateiname ist „.newsrc“.

Der Host Pike hat auf die RPC-Anfrage für den Umbenennungsvorgang geantwortet (die Antwort zeigt an, dass die Der Umbenennungsvorgang war erfolgreich, da die Antwort ein Paket mit Dateninhalt und kein Ausnahmepaket war.


Allgemein Wenn beispielsweise alle „AFS RPC“-Anfragen angezeigt werden, erhalten sie einen Namen (nt: dekodieren, dekodieren). , und dieser Name ist oft der Operationsname der RPC-Anfrage
Darüber hinaus werden einige Parameter dieser RPC-Anforderungen angezeigt. Wenn , wird ihm auch ein Name zugewiesen (nt | rt: d. h. dekodieren, dekodieren, im Allgemeinen lautet der Name auch sehr einfach, zum Beispiel
ein interessanter Parameter, der bei der Anzeige direkt „interessant“ ist, was eine verwirrende Bedeutung hat.

Dieses Anzeigeformat ist so konzipiert, dass es „auf einen Blick verstanden“ wird. aber es ist möglicherweise nicht sehr nützlich für Leute, die mit den Funktionsprinzipien von AFS und RX nicht vertraut sind (nt: Machen Sie sich keine Sorgen, es wird Ihnen beim Schreiben Angst machen), schauen Sie einfach nach unten).

Wenn das -v (verbose) Flag wird wiederholt angegeben (nt: wie -vv), tcpdump druckt das Bestätigungspaket aus (nt: kann als Paket verstanden werden, das sich vom Antwortpaket unterscheidet) und zusätzliche Header-Informationen
(nt: kann sein verstanden als zusätzliche Header-Informationen für alle Pakete, nicht nur für Bestätigungspakete), zum Beispiel RX-Anruf-ID (die ID des „Anforderungsanrufs“ im Anforderungspaket),
Rufnummer („Anforderungsanruf“-Nummer), Sequenznummer (nt: Paketsequenznummer),

Seriennummer (nt | rt: kann als ein weiteres serielles Signal verstanden werden, das sich auf die Daten im Paket bezieht, die spezifische Bedeutung muss hinzugefügt werden), Paketidentifikation anfordern (nt: Der nächste Absatz ist eine sich wiederholende Beschreibung,

daher wird sie weggelassen), außerdem werden auch die MTU-Aushandlungsinformationen im Bestätigungspaket gedruckt (nt: Das Bestätigungspaket ist das Bestätigungspaket relativ zum Anforderungspaket, maximale Übertragungseinheit, maximale Übertragungseinheit Einheit).

Wenn die Option -v dreimal wiederholt wird (nt: z. B. -vvv), werden der „Sicherheitsindex“ („Sicherheitsindex“) und der „Dienstindex“ („Dienst-ID“) der AFS-Anwendung angezeigt Typpaket wird

gedruckt.

Für abnormale Datenpakete (nt: Abort-Paket, was so verstanden werden kann, dass dieses Paket verwendet wird, um den Empfänger darüber zu informieren, dass eine Ausnahme aufgetreten ist) gibt tcpdump Fehlercodes aus.
Aber für Ubik-Beacon-Pakete (nt: Ubik-Beacon Hinweispaket, Ubik kann als spezielles Kommunikationsprotokoll verstanden werden, Beacon-Paket, Leuchtturm-Datenpaket, das als einige Datenpakete verstanden werden kann, die wichtige Informationen in der Kommunikation angeben), die Fehlernummer wird nicht gedruckt, da für das Ubik-Protokoll Abnormal Datenpakete weisen nicht auf Fehler hin, sondern auf eine positive Antwort (nt: Ja-Stimme).

AFS fordert eine große Datenmenge an und verfügt über viele Parameter, daher muss der Snaplen von tcpdump im Allgemeinen relativ groß sein , dies kann durch Starten von tcpdump erreicht werden. Setzen Sie die Option „-s 256“, um snaplen zu erhöhen, um die Kommunikationslast der AFS-Anwendung zu überwachen. Das AFS-Antwortpaket zeigt nicht den Typ des Remote-Aufrufs an, der den RPC identifiziert Anforderungspakete im letzten Zeitraum und Zuordnung des empfangenen Antwortpakets nach Rufnummer (Rufnummer) und Dienst-ID (Dienstindex). Wenn das Antwortpaket nicht für das Anforderungspaket im letzten Zeitraum bestimmt ist, kann tcpdump dies nicht tun Analysieren Sie das Paket.


KIP AppleTalk Protocol

(nt | rt: DDP in UDP kann verstanden werden als: DDP, das AppleTalk Data Delivery Protocol, entspricht dem Netzwerkschichtprotokoll, das das KIP AppleTalk-Protokoll unterstützt Stack und DDP selbst werden über UDP übertragen. Das ist eine auf UDP implementierte Netzwerkschicht für andere Netzwerke. KIP AppleTalk ist ein vollständiger Netzwerkprotokollstapel, der von Apple entwickelt wurde.

AppleTalk DDP-Pakete werden in UDP-Paketen gekapselt und entkapselt (nt: entspricht der Dekodierung) Und das Dump der entsprechenden Informationen folgt ebenfalls den DDP-Paketregeln

(nt: kapseln, kapseln, äquivalent zur Kodierung, Entkapselung, Entkapselung, äquivalent zur Dekodierung, Dump, Dump, bezieht sich normalerweise zum Drucken seiner Informationen). net
1.254.110 ace

Die ersten beiden Zeilen geben an, dass es zwei AppleTalk-Netzwerke gibt. Die dritte Zeile gibt die Hosts in einem bestimmten Netzwerk an (ein Host wird durch 3 Bytes identifiziert,

während die Identifizierung eines Netzwerks normalerweise nur erfolgt zwei Bytes, was auch der Hauptunterschied zwischen den beiden Bezeichnern ist) (nt: 1.254.110 kann als Ace-Host im Ether-Netzwerk verstanden werden).
Der Bezeichner und der entsprechende Name müssen zusätzlich durch ein Leerzeichen getrennt werden Der obige Inhalt /etc/atalk.names enthält auch Leerzeilen und Kommentarzeilen (Zeilen, die mit „#“ beginnen).

Die vollständige Netzwerkadresse von AppleTalk wird im folgenden Format angezeigt:
net.host.port

Folgendes ist eine bestimmte Anzeige:
144.1.209.2 > icsd-net.112.220
office.2 > icsd-net.112.220

jssmag.149.235 > icsd-net.2


(Wenn die Datei /etc/atalk.names nicht existiert oder es keinen Eintrag für den entsprechenden AppleTalk-Host/Netzwerk gibt, werden die Daten Die Netzwerkadresse des Pakets wird in numerischer Form angezeigt).

In der ersten Zeile hat Knoten 209 im Netzwerk 144.1 ein NBP-Anwendungspaket gesendet über Port 2 zum Knoten 112 im Netzwerk icsd-net, der Port 220 überwacht „DDP-Port 2“ kann als „DDP-entsprechender Transportschicht-Port 2“ verstanden werden. DDP selbst hat kein Port-Konzept, dies wurde nicht bestimmt und muss ergänzt werden.


Die zweite Zeile ähnelt der ersten Zeile, außer dass alle Adressen der Quelle durch „Büro“ identifiziert werden können.

Die dritte Zeile stellt Folgendes dar: 149 im jssmag-Netzwerk Der Knoten hat ein Datenpaket über 235 an Port 2 (NBP-Port) aller Knoten im icsd gesendet. (Es ist zu beachten, dass im AppleTalk-Netzwerk, wenn die Adresse keinen Knoten enthält, die Broadcast-Adresse gemeint ist. Daher ist es am besten, die Netzwerkkennung in /etc/atalk.names zu unterscheiden.

nt: Andernfalls kann nicht festgestellt werden, ob sich x.port, ein Bezeichner x.port, auf den Port aller Hosts im Netzwerk oder auf den Port des angegebenen Hosts x bezieht.

tcpdump kann NBP (Name Binding Protocol) analysieren ) und ATP-Datenpakete (AppleTalk Transport Protocol), für andere Protokolle der Anwendungsschicht wird nur der entsprechende Protokollname gedruckt (
Wenn dieses Protokoll keinen allgemeinen Namen registriert, wird nur seine Protokollnummer gedruckt) Und die Größe des Datenpaket.

NBP-Datenpakete werden im folgenden Format angezeigt:

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

jssmag.209.2 > 112.220: nbp-reply 190: „RM1140:LaserWriter@*“ 250
techpit.2 > icsd-net.112.220: nbp-reply 190: „techpit:LaserWriter@*“ 186

Die erste Zeile zeigt: network icsd - Knoten 112 im Netz hat eine Namensabfrageanfrage für „LaserWriter“ über Port 220 an Port 2 aller Knoten im Netzwerk gesendet jssmag (nt:

Der Name kann hier als Name einer Ressource, beispielsweise eines Druckers, verstanden werden). Diese Abfrageanforderung Die Seriennummer ist 190.

Die zweite Zeile zeigt an: Knoten 209 im Netzwerk jssmag hat über Port 2 auf Port 220 des icsd-net.112-Knotens geantwortet: Ich habe die Ressource „LaserWriter“, ihr Ressourcenname
ist „RM1140“ und sie befindet sich auf Port 250 Stellt einen Dienst zum Ändern von Ressourcen bereit. Die Sequenznummer dieser Antwort ist 190, was der zuvor abgefragten Sequenznummer entspricht. Die dritte Zeile ist auch die Antwort auf die Anfrage in der ersten Zeile: Node techpit übergibt Port 2 an Port 220 Der icsd-net.112-Knoten hat geantwortet: Ich habe eine „LaserWriter“-Ressource, deren Ressourcenname „techpit“ ist, und stellt Ressourcenänderungsdienste auf Port 186 bereit. Die Sequenznummer dieser Antwort ist 190, entsprechend der zuvor abgefragten Sequenznummer

ATP-Daten Das Anzeigeformat des Pakets ist wie folgt:
jssmag.209.165 > 6: 0 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0 xae040000
helios.132 > ; 9.165: atp-resp 12266 :3 (512) 0xae040000
jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
jssmag.209.165 : atp-resp 12266:6 ( 512) 0xae 040000
helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
jssmag.209.165 > 0xae030001
helios.132 > ; jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
jssmag.209.165 > lios.132: atp-rel 12266< 0-7 > 0xae030001
jssmag.209.133 > atp-req* 12267<0-7> 0xae030002

Die erste Zeile zeigt an, dass der Knoten Jssmag.209 ein Anforderungspaket mit der Sitzungsnummer 12266 gesendet hat. und forderte helios
auf, mit 8 Datenpaketen zu antworten (Die Sequenznummern dieser 8 Datenpakete sind 0-7(nt: Die Sequenznummer unterscheidet sich von der Sitzungsnummer. Letztere ist die Nummer einer vollständigen Übertragung. Ersteres ist die Nummer jedes Datenpakets in der Übertragung. Die hexadezimale Zahl am Ende der Zeile stellt den Wert des Felds „Benutzerdaten“ im Anforderungspaket dar (nt: von unten). druckt nicht alle Benutzerdaten aus). Größe der Daten im Datenpaket, die nicht den Header von ATP enthalten. Außerhalb des Pakets befindet sich ein „*“-Zeichen mit der Sequenznummer 7 (Zeile 8), das anzeigt, dass das EOM-Flag des Pakets gesetzt ist. nt: EOM, End Of Media, verständlich (zeigt an, dass die Datenantwort einer Sitzung abgeschlossen ist

Die nächste Zeile 9 zeigt an, dass Jssmag.209 eine weitere Anfrage an Helios gestellt hat: Bitte übertragen Sie die Datenpakete mit den Sequenznummern 3 und erneut 5. Helios hat diese

-Anfrage erhalten. Nach dem erneuten Senden dieser beiden Datenpakete hat jssmag.209 die Sitzung aktiv beendet (freigegeben), nachdem diese beiden Datenpakete erneut empfangen wurden.

In der letzten Zeile sendete jssmag.209 eine Nachricht an Helios, um das nächste zu starten Sitzung anfordern. Das „*“ im Anforderungspaket zeigt an, dass das XO-Flag des Pakets nicht gesetzt wurde (nt: Wenn die andere Partei das Datenpaket wiederholt sendet, wird es nur einmal verarbeitet (die Verwendung eines speziell entwickelten Mechanismus zum Empfangen und Verarbeiten von Datenpaketen). IP-Datenpakete werden in mehrere IP-Datenpakete aufgeteilt Folgende zwei Anzeigeformate.
(frag id:size@offset+ )

(frag id:size@offset)

(Das erste Format gibt an, dass nach diesem Fragment nachfolgende Fragmente vorhanden sind. Das zweite Format gibt an, dass dieses Fragment das letzte Fragment ist. )

id stellt die Fragmentierungsnummer dar (nt: von Wie unten gezeigt, wird jedem großen zu fragmentierenden IP-Paket eine Fragmentierungsnummer zugewiesen, um zu unterscheiden, ob jedes kleine Fragment aus demselben Datenpaket fragmentiert ist.

Größe gibt die Größe an Dieses Fragment, mit Ausnahme der Fragment-Header-Daten, stellt den Offset der in diesem Fragment enthaltenen Daten im ursprünglichen gesamten IP-Paket dar ((nt: Aus folgender Sicht ist ein IP-Paket als Ganzes fragmentiert, einschließlich Header und Daten , nicht nur die Daten werden geteilt) .

每个碎片都会使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 ]

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 的取值未知, 需补充)

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: 不能被用于包过虑表达式中).

  除以上所描述的表达元('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')

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

Sie müssen den „und“-Operator explizit schreiben, anstatt nur die vorderen und hinteren Ausdruckselemente nebeneinander zu platzieren (nt: der „und“-Operator zwischen den beiden kann nicht weggelassen werden

Wenn vor an kein Schlüsselwort steht). Bezeichner, der Ausdruck Während des Analysevorgangs der Formel wird das zuletzt verwendete Schlüsselwort (normalerweise das Schlüsselwort, das dem Bezeichner von links nach rechts am nächsten liegt) verwendet. Beispielsweise ist
nicht host vs und ace
eine Vereinfachung des Folgenden Ausdruck:
nicht Host vs und Host Ace
statt nicht (Host vs oder Ace) (nt: Die ersten beiden bedeuten, dass das erforderliche Datenpaket nicht von oder an Host vs gesendet wird, sondern von oder an ace. Letzteres bedeutet Solange das Datenpaket nicht aus oder stammt, kann der gesamte bedingte Ausdruck als einzelner Zeichenfolgenparameter oder als mehrere durch Leerzeichen getrennte Parameter verwendet und an tcpdump übergeben werden. Letzteres ist normalerweise praktischer Enthält Metazeichen (nt: wie „*“, „.“ in regulären Ausdrücken und „(“ in der Shell). Übergeben Sie diese am besten als separate Zeichenfolge. Zu diesem Zeitpunkt muss der gesamte Ausdruck eingeschlossen werden Einfache Anführungszeichen. Bei der Eingabemethode mit mehreren Parametern werden alle Parameter schließlich mit Leerzeichen verkettet und als Zeichenfolge analysiert Der Ausdruck enthält nur ein bestimmtes unten aufgeführtes Ausdruckselement. Zu diesem Zeitpunkt ist der Ausdruck wahr, d. h. die Bedingung ist erfüllt Der Ausdruck ist „true“. „host“ kann eine IP-Adresse oder ein Hostname sein ein Hostname.

Host Host

Wenn die Quell- oder Zieladresse des IPv4/v6-Pakets Host ist, dann ist der entsprechende bedingte Ausdruck wahr. Die folgenden Schlüsselwörter können vor den obigen Host-Ausdrücken hinzugefügt werden: ip, arp, rarp, und ip6. Zum Beispiel:

ip host host kann auch ausgedrückt werden als: ether proto ip und host host (nt: Dieser Ausdruck muss vorher mit Escapezeichen versehen werden, da ip bereits ein Schlüsselwort für tcpdump ist.) Wenn es sich bei dem Host um einen Host mit mehreren IPs handelt, wird eine beliebige Adresse für den Paketabgleich verwendet (nt: Die Zieladresse des an den Host gesendeten Datenpakets kann eine dieser IPs sein, und die Quelladresse des Das vom Host empfangene Datenpaket kann auch eine dieser IPs sein). , TCP-Datenpaket) ist ehost, der entsprechende bedingte Ausdruck ist wahr. Im Beispiel wird die numerische Adresse verwendet)

ether src ehost

Wenn das Ethernet des Datenpakets die Quelladresse ehost ist, dann ist der entsprechende bedingte Ausdruck wahr.


ether host ehost
Wenn die Ethernet-Quelladresse oder das Ethernet-Ziel ist Die Adresse des Datenpakets ist ehost, dann ist der entsprechende bedingte Ausdruck wahr.

Gateway-Host
Wenn die Gateway-Adresse des Datenpakets host ist, ist der entsprechende bedingte Ausdruck wahr die Ethernet-Adresse, nicht die IP-Adresse (nt | rt: Das heißt, zum Beispiel, Kann verstanden werden als

'


Hinweis

'

.Die Ethernet-Quell- oder Zieladresse, die Ethernet-Quell- und Zieladresse, kann verstanden werden als bezieht sich auf die

'

Gateway-Adresse

'

).host im vorherigen Satz Es muss ein Name und keine Zahl sein und es müssen Einträge in der
'

Hostname-IP-Adresse

'

der Maschine vorhanden sein und
'Hostname-Ethernet-Adresse' (vorherige Die Zuordnungsbeziehung kann über die Datei /etc/hosts, DNS oder NIS abgerufen werden, und die letztere Zuordnungsbeziehung kann über die Datei /etc/ethers abgerufen werden. nt: /etc/ethers existiert nicht unbedingt, und sein Datenformat kann über man ethers gesehen werden, unbekannt, muss hinzugefügt werden). ehost muss ein Name und keine Zahl sein. Derzeit ist diese Option in Konfigurationsumgebungen, die das IPv6-Adressformat unterstützen, nicht verfügbar. Funktion (nt: Konfiguration, Konfigurationsumgebung, die als Netzwerkkonfiguration beider kommunizierender Parteien verstanden werden kann). dst net netWenn das Netzwerknummernfeld der Zieladresse des Datenpakets (IPv4- oder IPv6-Format) net ist, dann ist der entsprechende bedingte Ausdruck wahr net kann ein Name aus der Netzwerkdatenbankdatei /etc/ sein. Netzwerke, oder es kann eine numerische Netzwerknummer sein

Eine numerische IPv4-Netzwerknummer ist ein gepunkteter Vierer (z. B. 192.168.1.0), ein gepunkteter Dreier (z. B. 192.168.1) oder ein gepunkteter Tupel (z. B. 172.16). ) oder eine einzelne Einheitengruppe (z. B. 10), um

auszudrücken. Die Netzwerkmasken, die diesen vier Situationen entsprechen, sind: Vierfach: 255.255.255.255(Dies bedeutet auch, dass die Netzmasken übereinstimmen ist wie der Abgleich der Host-Adresse (Host): alle vier Teile der Adresse werden verwendet), Triplett: 255.255.255.0, Tupel: 255.255.0.0, Ein-Tupel: 255.0. 0.0.

Für das IPv6-Adressformat muss die Netzwerknummer vollständig ausgeschrieben werden (alle 8 Teile müssen ausgeschrieben werden); die entsprechende Netzwerkmaske lautet:
ff:ff:ff:ff: ff:ff:ff :ff, also ist der IPv6-Netzwerkabgleich ein echter 'Host'-Abgleich (nt | rt | rc: Alle 8 Teile der Adresse werden verwendet, unabhängig davon, ob es sich um ein Zeichen handelt, das nicht zum Netzwerk gehört. Füllen Sie es aus in 0 für den Abschnitt und muss als nächstes hinzugefügt werden), aber gleichzeitig ist ein Netzwerkmaskenlängenparameter erforderlich, um anzugeben, wie viele Bytes vor der Netzwerkmaske stehen (nt: kann über das folgende Netz net/len angegeben werden )

src net net
Wenn das Netzwerknummernfeld der Quelladresse (IPv4- oder IPv6-Format) net ist, dann ist der entsprechende bedingte Ausdruck wahr

net net
Wenn die Quell- oder Zieladresse (IPv4 oder IPv6-Format) des Datenpakets ist. Wenn das Netzwerknummernfeld „net“ ist, dann ist der entsprechende bedingte Ausdruck wahr

net net mask netmask
Wenn die Netzwerkmaske der Quell- oder Zieladresse (IPv4- oder IPv6-Format) des Wenn das Datenpaket mit der Netzmaske übereinstimmt, entspricht dies dem bedingten Ausdruck „true“. Diese Option kann auch mit src und dst verwendet werden, um die Quellnetzwerkadresse oder Zielnetzwerkadresse abzugleichen (nt: z. B. src net net mask 255.255.255.0). ) Diese Option ist für IPv6-Netzwerkadressen ungültig.

net net/len
Wenn die Anzahl der Bits im Netzwerknummernfeld der Quell- oder Zieladresse (IPv4- oder IPv6-Format) mit len ​​übereinstimmt , dann ist der entsprechende bedingte Ausdruck wahr. Diese Option kann auch mit src vor und dst verwendet werden, um die Quellnetzwerkadresse oder Zielnetzwerkadresse abzugleichen (nt | rt | tt: src net net/24, was die Netzwerknummer angibt Die Quelladresse muss mit einem 24-Bit-Paket abgeglichen werden). ) ist Port, dann ist der entsprechende bedingte Ausdruck wahr. Port kann eine Zahl oder ein Name sein (der entsprechende Name kann in /etc/services gefunden werden, oder die relevanten Beschreibungsinformationen können über man tcp und man udp abgerufen werden). . Wenn ein Name verwendet wird, wird die dem Namen entsprechende Portnummer und das entsprechende verwendete Protokoll überprüft. Wenn nur eine numerische Portnummer verwendet wird, wird nur die entsprechende Portnummer überprüft (z. B. dst-Port

513

). Veranlassen Sie TCPDump, den Anmeldedienst des TCP-Protokolls und das Who-Dienstpaket des UDP-Protokolls zu erfassen, und die Portdomäne bewirkt, dass TCPDump das Datenpaket des TCP-Protokolldomänendienstes und das Domänendatenpaket des UDP-Protokolls erfasst) (nt | rt: Der mehrdeutige Name
wird verwendet, ist unverständlich und muss ergänzt werden).src-Port portWenn der Quellport des Datenpakets port ist, dann ist dies der entsprechende bedingte Ausdruck.

Port port
Wenn der Quell- oder Der Zielport des Datenpakets ist Port, dann ist der entsprechende bedingte Ausdruck wahr Port gehört zum Portbereich von Port1 bis Port2 (einschließlich Port1, Port2), dann ist der entsprechende bedingte Ausdruck wahr. TCPdump analysiert Port1 und Port2. Das Parsen von Port ist konsistent (nt: in der Beschreibung der Port-Option dst erläutert).

src portrange port1-port2
Wenn der Quellport des Datenpakets zum Portbereich von Port1 bis Port2 gehört (einschließlich Port1, Port2), dann ist dies dasselbe wie Der entsprechende bedingte Ausdruck ist wahr -port2

Wenn der Quellport oder Zielport des Datenpakets zum Portbereich von Port1 bis Port2 gehört (einschließlich Port1, Port2), dann ist der entsprechende bedingte Ausdruck wahr


Sie können das Schlüsselwort hinzufügen: tcp oder udp vor den oben genannten Port-Optionen, zum Beispiel:

tcp src port port
Dadurch erfasst tcpdump nur TCP-Pakete, deren Quellport port.

weniger Länge ist
Wenn die Länge des Datenpakets kleiner oder gleich ist Länge, der entsprechende bedingte Ausdruck ist wahr. Dies steht im Einklang mit der Bedeutung von

'

len <= length


'

.

größere Länge
Wenn die Länge des Datenpakets größer oder gleich der Länge ist, ist der entsprechende bedingte Ausdruck wahr. Dies steht im Einklang mit der Bedeutung von 'len >= length'.

ip Proto-Protokoll
Wenn das Datenpaket ein IPv4-Datenpaket ist und sein Protokolltyp Protokoll ist, ist der entsprechende bedingte Ausdruck wahr.
Protokoll kann eine Zahl oder ein Name sein, wie zum Beispiel: icmp6, igmp, igrp(nt: Interior Gateway Routing Protokoll, internes Gateway-Routing-Protokoll), PIM (Protocol Independent Multicast, unabhängiges Multicast-Protokoll, angewendet auf Multicast-Router), ah, esp (nt: ah, Authentifizierungsheader, ESP-Sicherheitsnutzlastkapselung, beide werden in IP verwendet sicherer Übertragungsmechanismus von Paketen), vrrp (Virtual Router Redundancy Protocol), udp oder tcp Da tcp, udp und icmp Schlüsselwörter von tcpdump sind, müssen sie vor diesen Protokollnamen verwendet werden Beachten Sie, dass dieses Ausdruckselement nicht den gesamten Protokoll-Header-Inhalt in der Protokoll-Header-Kette im Datenpaket ausgibt (nt: tatsächlich nur das angegebene Protokoll ausdrucken Für einige Header-Informationen, z Sie können beispielsweise tcpdump -i eth0 'ip proto tcp and host 192.168.3.144' verwenden, wodurch der TCP nur in den Datenpaketen gedruckt wird, die vom Host 192.168.3.144 gesendet oder empfangen werden Im Protokoll-Header enthaltene Informationen)

IP6-Protoprotokoll
Wenn das Datenpaket ein IPv6-Datenpaket ist und sein Protokolltyp Protokoll ist, ist der entsprechende bedingte Ausdruck wahr.
Beachten Sie, dass dieses Ausdruckselement das Protokoll nicht in die Daten einschließt Paket Alle Protokoll-Header-Inhalte in der Header-Kette werden ausgedruckt

IP6-Protochain-Protokoll
Wenn das Datenpaket ein IPv6-Datenpaket ist und seine Protokollkette einen Protokoll-Header vom Typ Protokoll enthält, ist der entsprechende bedingte Ausdruck wahr.

IP6-Protokette 6
stimmt mit IPv6-Paketen überein, deren Protokoll-Header-Kette einen TCP-Protokoll-Header enthält. Dieses Paket kann auch einen Authentifizierungs-Header, einen Routing-Header oder einen Hop-by-Hop-Routing-Options-Header zwischen IPv6 enthalten Der dadurch ausgelöste entsprechende BPF-Code (Berkeley Packets Filter, der als Mechanismus zur Paketfilterung auf der Datenverbindungsebene verstanden werden kann) ist relativ umständlich und der BPF-Optimierungscode konnte nicht übernommen werden Achten Sie auf diesen Teil, daher kann der durch diese Option ausgelöste Paketabgleich langsamer sein.

IP-Protochain-Protokoll

hat die gleiche Bedeutung wie IP6-Protochain-Protokoll, wird jedoch für IPv4-Pakete verwendet.


Ether-Broadcast

Wenn es sich bei dem Paket um ein Ethernet handelt Broadcast-Paket, es ist dasselbe wie Der entsprechende bedingte Ausdruck ist wahr. Das Schlüsselwort ether ist optional.


IP-Broadcast

Wenn das Paket ein IPv4-Broadcast-Paket ist, ist der entsprechende bedingte Ausdruck wahr Überprüfen Sie, ob die Broadcast-Adresse einige Konventionen für alle Nullen und Einsen einhält, und ermitteln Sie die Netzwerkmaske der Netzwerkschnittstelle (die Netzwerkschnittstelle ist die Netzwerkschnittstelle, auf der das Paket zu diesem Zeitpunkt erfasst wird


Wenn das Netzwerk vorhanden ist). Die Maske der Netzwerkschnittstelle, an der das Paket erfasst wird, ist illegal, oder die Schnittstelle verfügt überhaupt nicht über eine entsprechende Netzwerkadresse und keinen Netzwerksatz, oder Pakete werden auf der

'

beliebigen' Netzwerkschnittstelle unter Linux erfasst ( Diese 'jede' Schnittstelle kann mehr als ein Paket vom System empfangen. Für ein Paket auf einer Schnittstelle (nt: eigentlich können darunter alle verfügbaren Schnittstellen im System verstanden werden) kann die Netzwerkmaskenprüfung nicht durchgeführt werden normal ausgeführt. Ether-Multicast

Wenn es sich bei dem Paket um ein Ethernet-Multicast-Paket handelt ( nt: Multicast, was als gleichzeitige Übermittlung von Nachrichten an eine Gruppe von Zieladressen und nicht an alle Adressen im Netzwerk verstanden werden kann (letzteres kann wird Broadcast genannt), dann ist der entsprechende bedingte Ausdruck wahr. Schlüssel Die Bedeutung dieser Option stimmt mit der Bedeutung des folgenden bedingten Ausdrucks überein: `ether[

0
] & 1 != 0'(nt: kann so verstanden werden, dass die Nummer 1 im Ethernet-Paket Das niedrigste Bit von 0 Bytes ist 1, was bedeutet, dass es sich um ein Multicast-Paket handelt).IP-Multicast

Wenn das Paket ist ein IPv4-Multicast-Paket, der entsprechende bedingte Ausdruck ist wahr


IP6-Multicast

Wenn das Paket ein IPv6-Multicast-Paket ist, ist der entsprechende bedingte Ausdruck wahr.

Ether-Protokoll-Protokoll
Wenn das Datenpaket zum folgenden Ethernet-Protokolltyp gehört, ist der entsprechende bedingte Ausdruck wahr.
Protokollfeld, das eine unten aufgeführte Zahl oder ein Name sein kann: ip, ip6, arp, rarp, atalk (AppleTalk Netzwerkprotokoll),
aarp (nt: AppleTalk Address Resolution Protocol, das Adressauflösungsprotokoll des AppleTalk-Netzwerks),
decnet (nt: ein von DEC bereitgestellter Netzwerkprotokollstapel), sca (nt: unbekannt, erforderliche Ergänzung),
lat (Local Area Transport, regionales Übertragungsprotokoll, von DEC entwickeltes Ethernet-Host-Verbindungsprotokoll),
mopdl, moprc, iso (nt: unbekannt, muss ergänzt werden), stp (Spanning Tree Protocol, Spanning Tree Protocol), kann verwendet werden Verbindungsschleifen im Netzwerk verhindern),
ipx (nt: Internetwork Packet Exchange, ein Netzwerkschichtprotokoll, das in Novell-Netzwerken verwendet wird) oder
netbeui (nt: NetBIOS Extended User Interface, was als Network Basic Input and Output System verstanden werden kann Schnittstellenerweiterung). oder netbeui .

Es muss beachtet werden, dass Bezeichner auch Schlüsselwörter sind, daher müssen sie mit

'

' maskiert werden.(SNAP: SubNetwork Access Protocol)

Daten, die über Glasfasernetzwerkschnittstellen verteilt werden (ihr Ausdruck kann Metaform sein sein

'

fddi Protocol Arp'), Token Ring (sein Ausdrucksmetaform kann 'tr Protocol Arp' sein), und IEEE In 802.11 Wireless LAN (sein Ausdrucksmetaform kann sein
'WLAN-Protokoll ARP'), die Protokollkennung stammt aus dem 802.2 Logical Link Control Layer Header, in FDDI, Token Ring oder
Der 802.1 Header enthält diesen logischen Link Steuerschicht-Header.
Wenn die entsprechenden Protokollkennungen in diesen Netzwerken als Filterbedingungen verwendet werden, überprüft tcpdump nur den LLC-Header mit 0x000000 als Komponenteneinheitskennung (OUI, 0x000000

identifiziert ein internes Ethernet)-Segment

' Das Protokoll-ID-Feld in der SNAP-Formatstruktur
', unabhängig davon, ob im Paket ein Segment mit einer OUI von 0x000000 vorhanden ist 'SNAP-Format Struktur'
(nt: SNAP, SubNetwork Zugriffsprotokoll, Subnetz-Zugriffsprotokoll:
iso tcpdump überprüft das DSAP-Feld (Zieldienst-Zugriffspunkt, Zieldienst-Zugriff) und SSAP-Domäne (Quelldienst-Zugriffspunkt). nt: ISO-Protokoll ist unbekannt, muss hinzugefügt werden). Formatstruktur

'

im LLC-Header mit 0x080007 als OUI und überprüft das AppleTalk-Etype-Feld.
(nt: Ob sich AppleTalk-Etype in der SNAP-Formatstruktur befindet, unbekannt, muss hinzugefügt werden).

Zusätzlich , in Ethernet prüft tcpdump für die Ether-Proto-Protokolloption das Ethernet-Typfeld (das Ethernet-Typfeld) auf das durch das Protokoll angegebene Protokoll, mit Ausnahme der folgenden Protokolle:

iso, stp und netbeui

tcpdump prüft 802 .
3 physische Frames und LLC-Header (diese beiden Prüfungen stimmen mit den entsprechenden Prüfungen in FDDI-, TR-, 802.11-Netzwerken überein); (nt: 802.3, verstanden als IEEE
802.3
, ist eine Sammlung Diese Sammlung definiert die physikalische Schicht im kabelgebundenen Ethernet-Netzwerk und die Medienzugriffskontroll-Unterschicht der Daten.
STP wurde oben erwähnt.

atalk
tcpdump prüft das AppleTalk-Etype-Feld Überprüfen Sie den physischen Ethernet-Frame und überprüfen Sie auch die
'SNAP-Formatstruktur'
im LLC-Header des Datenpakets (diese beiden Prüfungen sind identisch mit den entsprechenden Prüfungen in FDDI-, TR-, 802.11-Netzwerken). sind konsistent)

aarp tcpdump überprüft das AppleTalk ARP-Etype-Feld, das entweder im physischen Ethernet-Frame oder in der '
SNAP-Formatstruktur ' von LLC (definiert durch 802.2) vorhanden ist, wenn dies der Fall ist Letzteres ist die OUI-Kennung der 'SNAP-Formatstruktur ' 0x000000;
(nt: 802.2, was als IEEE802.2 verstanden werden kann, was die logische Verbindungssteuerungsschicht (LLC) definiert ), der dem oberen Teil der Datenverbindungsschicht im OSI-Netzwerkmodell entspricht. Die LLC-Schicht stellt eine einheitliche Schnittstelle für Benutzer bereit, die die Datenverbindungsschicht verwenden (normalerweise befindet sich der Benutzer auf der Netzwerkschicht). Kontrollschicht (nt: MAC-Schicht,
entspricht dem unteren Teil der Datenverbindungsschicht). Die Implementierung und der Arbeitsmodus dieser Schicht variieren je nach verschiedenen physischen Übertragungsmedien (z. B. Ethernet, Token-Ring-Netzwerk,
Glasfaser). Verteilungsdatenschnittstelle (nt: kann eigentlich als Glasfasernetzwerk verstanden werden), WLAN (
802.11) usw.)

ipx tcpdump überprüft die IPX-Etype-Domäne im physischen Ethernet-Frame, LLC Das IPX-DSAP-Feld in der Header, der 802.3-Frame ohne LLC-Header und IPX-Kapselung,

und das IPX-Etype-Feld im LLC-Header
'SNAP-Formatstruktur ' (nt | rt: SNAP-Frame, kann verstanden werden als, das ' SNAP-Formatstruktur im LLC-Header'. Diese Bedeutung befindet sich in der Phase des vorläufigen Verständnisses und muss ergänzt werden).

decnet src host

Wenn die DECNET-Quelladresse im Datenpaket Host ist, dann ist dies der Fall Der entsprechende bedingte Ausdruck ist wahr. Dann ist der entsprechende Bedingungsausdruck wahr Die Formel ist wahr anwendbar auf Pakete, die vom pf-Programm in OpenBSD markiert werden (nt: pf, Paketfilter, das als Firewall-Programm in OpenBSD verstanden werden kann))

on interface

hat die gleiche Bedeutung wie ifname

interface
rnr num
Wenn das Paket als den Regeln von PF entsprechend markiert wurde, ist der entsprechende bedingte Ausdruck wahr.

(Diese Option gilt nur für Pakete, die vom pf-Programm in OpenBSD markiert wurden (nt: pf, Paketfilter, kann sein wird als Firewall-Programm in OpenBSD verstanden))


rulenum num
hat die gleiche Bedeutung wie Rulenum num.

UrsachencodeWenn das Paket als mit dem übereinstimmenden Ergebniscode von PF enthaltend markiert wurde, dann ist der entsprechende bedingte Ausdruck wahr. Gültige Ergebniscodes sind: match, bad-offset, fragment,
short
, normalize und memory.

(Diese Option gilt nur für Pakete, die vom pf-Programm in OpenBSD markiert wurden (nt: pf, Paketfilter, kann verstanden werden als das Firewall-Programm in OpenBSD))

rset-NameWenn das Paket als mit dem angegebenen Regelsatz übereinstimmend markiert wurde, ist der entsprechende bedingte Ausdruck wahr.
(Diese Option gilt nur für die Pakete, die vom pf-Programm in OpenBSD markiert wurden (nt : pf, Paketfilter, kann als Firewall-Programm in OpenBSD verstanden werden))Regelsatzname

hat die gleiche Bedeutung wie Rset-Name.


srnr num
Wenn das Paket markiert wurde Entspricht einer bestimmten Regel im angegebenen Regelsatz (nt: angegebene PF-Regelnummer, spezifische Regelnummer, d. h. eine bestimmte Regel),

Der entsprechende bedingte Ausdruck ist wahr (Diese Option gilt nur für das pf-Programm in OpenBSD Markierte Pakete (nt: pf, Paketfilter,. kann als Firewall-Programm in

OpenBSD verstanden werden))

subrulenum num

hat die gleiche Bedeutung wie srnr.

action actWenn das Paket aufgezeichnet wird, führt PF die durch act angegebene Aktion aus. Dann ist der entsprechende bedingte Ausdruck wahr. Gültige Aktionen sind: passieren, blockieren. arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui hat die gleiche Bedeutung wie der folgende Ausdruck:
ether proto p

p ist eines der oben genannten Protokolle.


lat, moprc, mopdl
sind konsistent mit den folgenden Ausdrücken:

ether proto p

p ist eines der oben genannten Protokolle. Es ist zu beachten, dass tcpdump diese Protokolle derzeit nicht analysieren kann.

vlan [vlan_id]
Wenn es sich bei dem Datenpaket um ein IEEE802.1Q VLAN-Datenpaket handelt, ist der entsprechende bedingte Ausdruck wahr.
(nt: IEEE802.1Q VLAN, d. h. das virtuelle Netzwerkprotokoll IEEE802.1Q, für das dieses Protokoll verwendet wird unterschiedliche Verbindung zwischen Netzwerken).
Wenn [vlan_id] angegeben ist, enthalten nur die Daten die angegebene virtuelle Netzwerk-ID (vlan_id) und der entsprechende bedingte Ausdruck ist wahr.
Es ist zu beachten, dass für VLAN-Datenpakete das erste gilt Das im Ausdruck gefundene VLAN-Schlüsselwort ändert die Startposition (d. h. den Decodierungsoffset) der Daten im Datenpaket, das dem nächsten Schlüsselwort im Ausdruck entspricht. Beim Filtern von Datenpaketen im VLAN-Netzwerksystem kann der VLAN-Ausdruck [vlan_id] sein Wird das Schlüsselwort vlan mehrmals verwendet, erhöht sich der
4-Byte-Filteroffset (nt: Filteroffset, der als der obige Decodierungsoffset verstanden werden kann

Zum Beispiel:

vlan
100 && vlan). 200 bedeutet: Filtern Sie die im VLAN200-Netzwerk gekapselten Datenpakete in VLAN100
Ein weiteres Beispiel:
vlan && vlan
300 && ip bedeutet: Filtern Sie die im VLAN300-Netzwerk gekapselten IPv4-Datenpakete, und das VLAN300-Netzwerk wird gekapselt durch ein äußeres VLAN

mpls [label_num]

Wenn das Datenpaket ein MPLS-Datenpaket ist, ist der entsprechende bedingte Ausdruck wahr.
(nt: MPLS, Multi-Protocol Label Switch, Multi-Protocol Label Switching, eine Technologie, die verwendet Etiketten zur Steuerung der Datenübertragung in offenen Kommunikationsnetzwerken).

Wenn [label_num] angegeben ist, enthalten nur die Daten die angegebene Etiketten-ID (label_num), dann ist der entsprechende bedingte Ausdruck Der Ausdruck ist wahr.

Es sollte beachtet werden, dass für Bei IP-Datenpaketen, die MPLS-Informationen enthalten (d. h. MPLS-Datenpakete), ändert das erste im Ausdruck gefundene MPLS-Schlüsselwort die
-Startposition der Daten im Paket (d. h. den Decodierungsoffset). Bei Datenpaketen im MPLS-Netzwerksystem kann der Ausdruck mpls [label_num] mehrmals verwendet werden. Jedes Mal, wenn das Schlüsselwort mpls erscheint, werden
4 Bytes zum Filter-Offset hinzugefügt (nt: Filter-Offset, kann als obige Dekodierung verstanden werden Offset).
192,9

.

200.1
bedeutet: Filtern Sie die an oder von 192.9.200.1 gesendeten Datenpakete. Das innere Etikett des Datenpakets ist 1024 und hat ein äußeres Etikett.
pppoed

Wenn das Datenpaket ein PPP-Over ist -Ethernet-Server-Erkennungspaket (nt: Erkennungspaket, sein Ethernet-Typ ist 0x8863), dann ist der entsprechende bedingte Ausdruck wahr

(nt: PPP-over-Ethernet, Punkt-zu-Punkt-Ethernet-Trägerprotokoll. Es ist Punkt-zu Der Verbindungsaufbau ist in die Erkennungsphase (Adresserkennung) und die
PPPoE-Sitzungsaufbauphase unterteilt. Das Erkennungspaket ist das in der ersten Phase gesendete Paket. ist ein Feld im Ethernet-Frame, das zur Angabe des angewendeten Protokolls verwendet wird Frame-Datenfeld) pppoesWenn das Datenpaket ein PPP-over-Ethernet-Sitzungsdatenpaket ist (nt: Ethernet-Typ ist 0x8864, PPP-over-Ethernet ist Wie oben erläutert, können Sie nach dem Schlüsselwort'
suchen PPP-over-Ethernet

'

, um seine Beschreibung zu finden), dann ist der entsprechende bedingte Ausdruck wahr.

Es ist zu beachten, dass für PPP-Over-Ethernet-Sitzungsdatenpakete das erste pppoes-Schlüsselwort im Ausdruck gefunden wird Ändern Sie die Startposition (d. h. den Decodierungsoffset) der Daten im Datenpaket entsprechend dem nächsten Schlüsselwort im Ausdruck. Beispiel:
pppoes && ip
bedeutet: IPv4-Pakete filtern, die in PPPoE-Pakete eingebettet sind

tcp, udp, icmp

hat die gleiche Bedeutung wie die folgenden Ausdrücke:
ip proto p oder ip6 proto p
wobei p eines der oben genannten Protokolle ist ( Die Bedeutungen sind: Wenn das Datenpaket ein IPv4- oder IPv6-Datenpaket ist und sein Protokolltyp TCP, UDP ist , oder icmp, der entsprechende bedingte Ausdruck ist wahr)ISO-Proto-ProtokollWenn der Protokolltyp des Datenpakets Protokoll im ISO-OSI-Protokollstapel ist, dann ist der entsprechende bedingte Ausdruck wahr (nt: [Erste Lösung] Das spezifische Protokoll jeder Schicht im ISO-OSI-Netzwerkmodell unterscheidet sich von dem Protokoll, das von der entsprechenden TCP/IP-Schicht verwendet wird. Die spezifischen Protokolle in jeder ISO-OSI-Schicht müssen separat ergänzt werden)Protokoll kann ein sein numerische Zahl oder einer der folgenden Namen:clnp, esis oder isis.

(nt: clnp, Connectionless Network Protocol, das ist OSI. Die Netzwerkschichtprotokolle im Netzwerkmodell, esis, isis, sind unbekannt und müssen ergänzt werden )


clnp, esis, isis

sind die Abkürzungen der folgenden Ausdrücke: iso proto p, wobei p eines der oben genannten Protokolle ist

l1, l2, iih, lsp, snp, csnp, psnp
ist die Abkürzung für IS-IS PDU-Typ Systemdateneinheit. Das OSI-Netzwerk (Open Systems Interconnection) besteht aus Endsystemen und Zwischensystemen. Das Endsystem bezieht sich auf das Benutzergerät. Die vom Router gebildete lokale Gruppe wird als Bereich bezeichnet. ) und mehrere Bereiche bilden eine
'

Domäne'(Domäne).IS-IS stellt Intra-Domain- oder Intra-Area-Routing bereit PDU, Die spezifische Bedeutung muss hinzugefügt werden)vpi nWenn das Datenpaket ein ATM-Datenpaket ist, ist der entsprechende bedingte Ausdruck wahr. Für das SunATM-Gerät auf dem Solaris-Betriebssystem: Wenn das Datenpaket ein ATM ist Datenpaket und seine virtuelle Pfadkennung sind n und der entsprechende bedingte Ausdruck ist wahr (nt: ATM, Asynchronous Transfer Mode, was tatsächlich als ein von ITU-T (International Telecommunications Union Telecommunications Standardization Sector) vorgeschlagenes Protokoll verstanden werden kann ) und TCP /Eine Reihe von Protokollen mit äquivalenten IP-Schichtfunktionen in IP, die spezifischen Protokollebenen müssen separat ergänzt werden)vci n
Wenn das Datenpaket ein ATM-Datenpaket ist, ist der entsprechende bedingte Ausdruck wahr SunATM auf dem Solaris-Betriebssystemgerät,

Wenn das Datenpaket ein ATM-Datenpaket ist und seine virtuelle Kanal-ID n ist, dann ist der entsprechende bedingte Ausdruck wahr.

(nt: ATM, oben beschrieben)

lane
Wenn die Wenn es sich bei dem Datenpaket um ein ATM-LANE-Datenpaket handelt, ist der entsprechende bedingte Ausdruck wahr. Es ist zu beachten, dass sich das erste Lane-Schlüsselwort im Ausdruck ändert, wenn es sich um ein LANE-Datenpaket handelt, das Ethernet simuliert, oder um ein
LANE-Logikeinheiten-Steuerpaket Wenn das Lane-Schlüsselwort nicht angegeben ist, basiert der bedingte Test auf dem ATM-Paket, das LLC (Logical Link Layer) im Datenpaket enthält. Dann ist der entsprechende bedingte Ausdruck wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem:

Wenn das Datenpaket ein ATM-Datenpaket ist und LLC enthält, ist der entsprechende bedingte Ausdruck wahr


oamf4s
Wenn das Datenpaket ein ATM-Datenpaket ist , dann ist der entsprechende bedingte Ausdruck wahr, wenn das Datenpaket ein ATM-Datenpaket
und eine Segment-OAM-F4-Zelle (VPI=

0

und VCI=
3
) ist Der entsprechende bedingte Ausdruck ist wahr Das ATM-Netzwerk ist eine Zelle. Die zu übertragenden Daten werden schließlich in Zellen mit einer festen Länge (53 Bytes) unterteilt. (Erstes Verständnis: Eine physische Leitung kann zu einem virtuellen Pfad (
virtueller

Pfad) gemultiplext werden. Und ein virtueller Pfad wird erneut verwendet, um einen virtuellen Kanal (virtueller Kanal) zu bilden Zellen können in Segmentklasse und End-to-End-Klasse unterteilt werden. Der Unterschied ist unbekannt und muss ergänzt werden.)


oamf4e
Wenn das Datenpaket ein ATM-Datenpaket ist, ist der entsprechende bedingte Ausdruck wahr SunATM-Geräte auf dem Solaris-Betriebssystem: Wenn das Paket ein ATM-Paket

und eine End-to-End-OAM-F4-Zelle (VPI=

0
und VCI=
4) ist, dann entspricht dies dem bedingten Ausdruck „true“. .(nt: OAM und End-to-End-OAM F4 wurden oben beschrieben, Sie können nach '

oamf4s


'

suchen)


oamf4Wenn das Datenpaket ein ATM-Paket ist, dann die entsprechende Bedingung Ausdruck ist wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem, wenn das Paket ein ATM-Paket und eine End-to-End- oder Segment-OAM-F4-Zelle ist (VPI=0 und VCI=
3

oder VCI=

4

) ist der entsprechende bedingte Ausdruck wahr Wenn es sich bei dem Paket um ein ATM-Paket handelt, ist der entsprechende Bedingungsausdruck wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem ist das Paket ein ATM-Paket und es handelt sich um eine End-to-End- oder Segment-OAM-F4-Zelle (VPI=

). 0
und VCI=
3 oder VCI=4), dann ist der entsprechende bedingte Ausdruck wahr.(nt: Diese Option ist dieselbe wie oamf4-Duplikat, muss bestätigt werden)

metac
Wenn das Paket ein ATM-Paket ist, ist der entsprechende bedingte Ausdruck wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem, wenn das Paket ein ATM-Paket ist
und es von der 'Meta-Signalisierungsleitung ' kommt. (nt: VPI=0 und VCI=1, 'Meta-Signalisierungsschaltung', Meta-Signalisierungsschaltung, die spezifische Bedeutung ist unbekannt und muss ergänzt werden),
entspricht dieser Bedingung Ausdruck ist wahr.

bcc
Wenn das Paket ein ATM-Paket ist, ist der entsprechende bedingte Ausdruck wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem, wenn das Paket ein ATM-Paket ist
und von 'Broadcast-Signalisierungsschaltung stammt '(nt: VPI=0 und VCI=2, 'Broadcast-Signalisierungsschaltung', Broadcast-Signalisierungsschaltung, die spezifische Bedeutung ist unbekannt, muss hinzugefügt werden) ,
Dann die Der entsprechende Bedingungsausdruck ist wahr.

sc
Wenn das Datenpaket ein ATM-Datenpaket ist, ist der entsprechende Bedingungsausdruck wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem, wenn das Datenpaket ATM ist Das Datenpaket
kommt von der ' Signalschaltung'(nt: VPI=0 und VCI=5, 'Signalleitung', Signalschaltung, die spezifische Bedeutung ist unbekannt, muss hinzugefügt werden),
Dann ist der entsprechende bedingte Ausdruck wahr.

ilmic
Wenn das Datenpaket ein ATM-Datenpaket ist, ist der entsprechende bedingte Ausdruck wahr Für SunATM-Geräte auf dem Solaris-Betriebssystem, wenn Die Daten Paket ist ein ATM-Paket
und kommt von 'ILMI-Linie '(nt: VPI=0 und VCI=16, 'ILMI', Interim Local Management Interface, It kann verstanden werden als
Eine Schnittstelle für die Netzwerkverwaltung basierend auf SNMP (Simple Network Management Protocol)
Dann ist der entsprechende Bedingungsausdruck wahr.

connectmsg
Wenn das Datenpaket ein ATM-Datenpaket ist, dann die entsprechende Bedingung Der Ausdruck ist wahr. Für SunATM-Geräte auf dem Solaris-Betriebssystem, wenn das Datenpaket ein ATM-Paket
ist und von der ' Signalisierungsleitung ' stammt und eine der folgenden in Q.2931 angegebenen Nachrichten ist Protokoll: Setup, Calling Proceeding, Connect, Connect Ack, Release oder Release Done. Der entsprechende bedingte Ausdruck ist true.
(nt: Q.
2931 ist ein von der ITU (International Telecommunications Union) entwickeltes Signalisierungsprotokoll legt die relevanten Schritte zum Einrichten, Aufrechterhalten und Abbrechen von Netzwerkverbindungen auf der Benutzerschnittstellenebene des digitalen Breitbandnetzwerks fest.)
metaconnect

Wenn es sich bei dem Datenpaket um ein ATM-Datenpaket handelt, ist der entsprechende bedingte Ausdruck wahr Gerät auf dem Solaris-Betriebssystem, wenn das Datenpaket ein ATM-Paket

ist und von der
'
Metasignalisierungsleitung ' kommt und die folgenden im Q.2931-Protokoll angegebenen Nachrichten sind: Setup, Calling Proceeding, Connect ,Connect Ack, Release oder Release Done. Dann ist der entsprechende bedingte Ausdruck wahr.
expr relop expr

Wenn die Operanden (expr) auf beiden Seiten von relop die durch relop angegebene Beziehung erfüllen, dann ist der entsprechende bedingte Ausdruck wahr.

relop kann einer der folgenden relationalen Operatoren sein: >, <, <=, =, !=. In diesem Ausdruck können Ganzzahlkonstanten verwendet werden ), binäre Operatoren (+, -, *, /, &, |,
<<, >>), Längenoperatoren und Verweise auf Daten in bestimmten Paketen. Es ist zu beachten, dass alle Vergleichsoperationen standardmäßig sind zu vorzeichenlosen Operanden. Beispielsweise sind
0x80000000
und
0xffffffff
beide größer als 0 (nt: Bei vorzeichenbehafteten Vergleichen ist 0xffffffff kleiner als 0). Im Paket können Sie den folgenden Ausdruck verwenden: proto [expr: size]Der Wert von

proto kann einer der folgenden Werte sein: ether, fddi, tr, wlan, ppp, slip, link, ip, arp, rarp,
tcp, udp, icmp, ip6 oder radio. Dies gibt die Referenzoperation an entsprechende Protokollschicht. (ether, fddi, wlan,
tr, ppp, slip und link entsprechen der Datenverbindungsschicht, Radio entspricht 802.11(wlan, wireless LAN) angehängt an einige Datenpakete
" radio"Header (nt: beschreibt die Baudrate, Datenverschlüsselung und andere Informationen).
Es ist zu beachten, dass Protokolle der oberen Schicht wie TCP und UDP derzeit nur auf die Netzwerkschicht angewendet werden können und IPv4 oder a sind Netzwerk mit IPv6-Protokoll (diese Einschränkung wird in zukünftigen Versionen von tcpdump geändert), dessen Offset-Byte in den Paketdaten durch

size im obigen Ausdruck angegeben wird um die Länge des Teils des Datensegments anzugeben, um den es geht (nt: Normalerweise sind diese Daten

ein Feld des Datenpakets), seine Länge kann 1,
2 oder 4 Byte betragen, wenn keine Größe angegeben ist. Der Standardwert ist 1 Byte. Das Schlüsselwort des Längenoperators ist len.
Dieser Code ist die Länge des gesamten Datenpakets.

Zum Beispiel wird 'ether[0] & 1 != 0' Lassen Sie tcpdump alle Multicast-Pakete erfassen (nt: Das niedrigste Bit des Ether[0]-Bytes ist 1, was bedeutet, dass die Zieladresse des Pakets die Multicast-Adresse ist
'ip[0] & 0xf != 5' entspricht dem Erfassen aller IPv4-Pakete mit den Optionen
'ip[6:2] & 0x1fff = 0' entspricht dem Erfassen von IPv4-Paketen, die nicht beschädigt sind, oder fragmentierten IPv4-Paketen mit Fragmentnummer 0. Diese Datenüberprüfungsmethode gilt auch für Verweise auf TCP- und UDP-Daten,
das heißt, tcp[
0] entspricht dem ersten Byte im TCP-Header, nicht Entspricht einem Zwischenbyte

Einige Offsets und Feldwerte ​​kann sowohl durch Namen als auch durch Zahlen ausgedrückt werden. Im Folgenden sind die Namen einiger verfügbarer Felder (Felder im Protokoll-Header) aufgeführt: icmptype (bezieht sich auf den ICMP-Protokoll-Header)

type-Feld), icmpcode (bezieht sich auf den ICMP-Protokoll-Header-Codefeld) und tcpflags (bezogen auf das Flags-Feld des TCP-Protokoll-Headers)

Die folgenden Werte sind für das Typfeld im ICMP-Protokoll-Header verfügbar:

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.

Die folgenden Werte sind für das Flags-Feld im TCP-Protokoll-Header verfügbar: tcp-fin, tcp-syn, tcp-rst, tcp-push,

tcp-ack, tcp-urg .

Weitere Informationen zum Programmieren finden Sie unter:

Programmier-Lernkurse! !

Das obige ist der detaillierte Inhalt vonWozu dient der Linux-Paketerfassungsbefehl tcpdump?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn