J'écrivais un utilitaire pour vérifier / proc / net / tcp et tcp6 pour les connexions actives car il est plus rapide que l'analyse de la sortie netstat.
Comme je n'ai pas activé ipv6, j'utilisais principalement localhost comme point de référence. Voici une copie de mon / 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
Voici le pantalon netstat -6 assorti
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 -
Les entrées 0-3 de tcp6 correspondent aux :: (tous ipv6), mais l'entrée 4 est censée être l'entrée correspondante pour :: 1.
C'est là que je suis confus ...
00000000000000000000000001000000 => 0000: 0000: 0000: 0000: 0000: 0000: 0100: 0000 => :: 100: 0
Lorsque je lance :: 1 à travers du code pour générer la représentation hexadécimale complète que j'obtiens:
import binascii
import socket
print binascii.hexlify(socket.inet_pton(socket.AF_INET6, '::1'))
00000000000000000000000000000001
Je ne peux pas aligner ces deux valeurs par programme, car elles ne correspondent pas (évidemment). Pourquoi ne correspondent-ils pas? Pourquoi le noyau pense-t-il que :: 100: 0 est :: 1?