Linux獲取網卡的IPv6地址


最近正在看《Uinx網絡編程》,看到使用ioctl獲取網卡的IPv4地址,就想着如何獲取IPv6地址?百度搜索一番也沒有找到很好的結果,突然想起前一段時間看到過使用strace跟蹤系統調用的一篇文章,就打算跟蹤一下ifconfig命令,看看ifconfig是怎樣獲取IPv6地址的

$ strace -o out ifconfig

ens33     Link encap:Ethernet  HWaddr 00:50:56:3d:e2:ca 

          inet addr:192.168.31.172  Bcast:192.168.31.255  Mask:255.255.255.0

          inet6 addr: fe80::250:56ff:fe3d:e2ca/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:24774 errors:0 dropped:0 overruns:0 frame:0

          TX packets:20456 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:3668629 (3.6 MB)  TX bytes:15440678 (15.4 MB)

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:320 errors:0 dropped:0 overruns:0 frame:0

          TX packets:320 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:23760 (23.7 KB)  TX bytes:23760 (23.7 KB)

strace命令產生的結果保存在out文件中,現在來打開它

 

 

 

 

原來ifconfig命令是從/proc/net/if_inet6文件中獲取到的IPv6地址

$ cat /proc/net/if_net6

00000000000000000000000000000001 01 80 10 80       lo

fe80000000000000025056fffe3de2ca 02 40 20 80    ens33

文件中的每一行記錄了一個網卡的信息,第一串數字就是十六進制的IPv6地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM