Saya sedang menulis sebuah utilitas untuk memeriksa / proc / net / tcp dan tcp6 untuk koneksi aktif karena lebih cepat dari parsing output netstat.
Karena saya sebenarnya tidak mengaktifkan ipv6, saya terutama menggunakan localhost sebagai titik referensi saya. Ini adalah salinan dari my / 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
Berikut ini adalah netstat -6 -pant yang cocok
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 -
Entri 0-3 dari tcp6 sesuai dengan :: (semua ipv6), tetapi entri 4 seharusnya entri yang sesuai untuk :: 1.
Di sinilah aku bingung ...
00000000000000000000000001000000 = = 0000: 0000: 0000: 0000: 0000: 0000: 0100: 0000 => :: 100: 0
Ketika saya menjalankan :: 1 melalui beberapa kode untuk menghasilkan representasi hex penuh saya mendapatkan:
import binascii
import socket
print binascii.hexlify(socket.inet_pton(socket.AF_INET6, '::1'))
00000000000000000000000000000001
Saya tidak bisa secara sistematis menyejajarkan kedua nilai ini, karena tidak cocok (jelas). Kenapa mereka tidak cocok? Mengapa kernel berpikir :: 100: 0 adalah :: 1?