Ich habe ein Hilfsprogramm geschrieben, um / proc / net / tcp und tcp6 auf aktive Verbindungen zu prüfen, da es schneller ist als das Parsen der netstat-Ausgabe.
Da ich ipv6 eigentlich nicht aktiviert habe, habe ich hauptsächlich localhost als Referenzpunkt verwendet. Hier ist eine Kopie von meinem / proc / net / tcp6
sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000000000000000000000000000:006F 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 19587 1 ffff880262630000 100 0 0 10 -1
1: 00000000000000000000000000000000:0050 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 22011 1 ffff880261c887c0 100 0 0 10 -1
2: 00000000000000000000000000000000:0016 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 21958 1 ffff880261c88000 100 0 0 10 -1
3: 00000000000000000000000001000000:0277 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 28592 1 ffff88024eea0000 100 0 0 10 -1
Hier ist der passende netstat -6 -Pant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::111 :::* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
Die Einträge 0-3 von tcp6 entsprechen den :: 's (alle ipv6), aber Eintrag 4 ist angeblich der entsprechende Eintrag für :: 1.
Hier bin ich verwirrt ...
000000000000000000000001000000 => 0000: 0000: 0000: 0000: 0000: 0000: 0100: 0000 => :: 100: 0
Wenn ich :: 1 durch einen Code starte, um die vollständige Hex-Darstellung zu generieren, erhalte ich:
import binascii
import socket
print binascii.hexlify(socket.inet_pton(socket.AF_INET6, '::1'))
00000000000000000000000000000001
Ich kann diese beiden Werte nicht programmgesteuert aneinanderreihen, da sie (offensichtlich) nicht übereinstimmen. Warum passen sie nicht zusammen? Warum denkt der Kernel :: 100: 0 ist :: 1?
quelle
Gefunden dieses Perl-Modul für das Parsen / proc / net / tcp bestimmt http://search.cpan.org/~salva/Linux-Proc-Net-TCP-0.05/lib/Linux/Proc/Net/TCP.pm Es zitiert die Kernel-Dokumentation wie unten gezeigt.
quelle
Ich analysiere / proc / net / tcp, auch / tcp6, / udp6 auf Android und dies sind meine einfachen Methoden zur Konvertierung in Java. Danke kasperd, dass du mich zu dieser Lösung geführt hast.
quelle