ifconfig:熟悉的陌生命令行

首先看一下ifconfig的输出结果。

liulongyang$ ifconfig
lo0: flags=8049 mtu 16384
    options=1203
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=201
gif0: flags=8010 mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
XHC1: flags=0<> mtu 0
XHC0: flags=0<> mtu 0
en0: flags=8823 mtu 1500
    ether 8c:85:90:48:78:6e
    nd6 options=201
    media: autoselect ()
    status: inactive
en3: flags=8963 mtu 1500
    options=60
    ether 72:00:c4:99:17:01
    media: autoselect 
    status: inactive
en1: flags=8963 mtu 1500
    options=60
    ether 72:00:c4:99:17:00
    media: autoselect 
    status: inactive
en4: flags=8963 mtu 1500
    options=60
    ether 72:00:c4:99:17:05
    media: autoselect 
    status: inactive
en2: flags=8963 mtu 1500
    options=60
    ether 72:00:c4:99:17:04
    media: autoselect 
    status: inactive
    p2p0: flags=8802 mtu 2304
    ether 0e:85:90:48:78:6e
    media: autoselect
    status: inactive
awdl0: flags=8902 mtu 1484
    ether 42:d5:d0:41:fb:0c
    nd6 options=201
    media: autoselect
    status: inactive
bridge0: flags=8863 mtu 1500
    options=63
    ether 72:00:c4:99:17:00
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en1 flags=3
            ifmaxaddr 0 port 11 priority 0 path cost 0
    member: en2 flags=3
            ifmaxaddr 0 port 13 priority 0 path cost 0
    member: en3 flags=3
            ifmaxaddr 0 port 10 priority 0 path cost 0
    member: en4 flags=3
            ifmaxaddr 0 port 12 priority 0 path cost 0
    nd6 options=201
    media: 
    status: inactive
utun0: flags=8051 mtu 2000
    inet6 fe80::d10b:bb12:23d:b9f2%utun0 prefixlen 64 scopeid 0x11
    nd6 options=201
en7: flags=8863 mtu 1500
    options=4
    ether 00:e0:4c:68:02:0e
    inet6 fe80::144b:5968:c4f:fd4%en7 prefixlen 64 secured scopeid 0x7
    inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=201
    media: autoselect (100baseTX )
    status: active
en5: flags=8863 mtu 1500
    ether ac:de:48:00:11:22
    inet6 fe80::aede:48ff:fe00:1122%en5 prefixlen 64 scopeid 0x8
    nd6 options=201
    media: autoselect
    status: active

IP地址是一个网卡在网络世界的通讯地址,相当于现实世界的门牌号。IP地址冲突会导致无法联网。IPV4协议中IP包含32位,每8位用点号隔开如inet 192.168.1.2。因为32位IP地址不能满足日益增多的计算机的分配,于是有了IPV6协议,如inet6 fe80::aede:48ff:fe00:1122。

IP地址

ifconfig:熟悉的陌生命令行_第1张图片
IpAddress.png

32位IP地址被分成五类:A、B、C、D、E。A、B、C类地址主要分为两部分:网络号和主机号。类比于小区的房子,小明家住6单元501室,小王家住5单元501室。

ifconfig:熟悉的陌生命令行_第2张图片
IpAddress范围.png

明显从图中看出,C类地址包含的最大主机数实在太少了,只有254个,网吧都不止这个规模,而B类地址包含的最大主机数有太多了,一般企业也达不到这个规模。

CIDR(Classless Inter-Domain Routing)

CIDR即无类域间路由,打破了原来设计IP地址的做法,将32位地址一分为二,前面是网络号,后面是主机号。IP地址的形式如下:10.100.122.2/24表明前面24位是网络号,后面8位是主机号。CIDR还有两个概念:一个是是广播地址,主机号相关的位全是1,如10.100.122.255,发送这个地址所有10.100.122网络里面的机器都可以收到;另一个是子网掩码,网络号相关的位置1,主机号相关的位置0,255.255.255.0。子网掩码和IP地址按位与会得到网络号。

私有IP地址段允许组织内部的IT人员管理和分配,甚至可以重复。共有IP地址有组织统一分配需要购买。

D类是组播地址,使用这一类地址,是某个组的机器可以收到,类似于群发邮件。

LO全称loopback,又叫换回接口,往往分配127.0.0.1,用于本机通信,经过内核处理直接返回。

MAC地址

IP地址上一行是:ether 00:e0:4c:68:02:0e,这个是MAC地址,网卡的物理地址,6个字节表示,全局唯一。任何一个网卡自生产出来就会带着这个地址。MAC地址相当于身份证,而IP地址则类似于居住地。MAC地址具有一定定位功能,只不过范围有限,局限在同一个子网里面。

这里有一个很好的例子。假设你要找一个省份证号为12345的人,他居住在上海的某个区的某个小区的某个单元的某室。你只有在到达了这个小区,然后询问谁的身份证号为12345才能找到他。如果只知道身份证号,而你在杭州的某一个小区到处寻找,你也无法找到。

网络的状态标识

flags=8051 mtu 1500,这个叫net_device_flags,网络设备状态标识。UP表示网卡处于启动状态;BROADCAST表示网卡有广播地址,可以发送广播包;MULTICAST表示可以发送多播包。MTU 1500指的是最大传输单元,以太网的默认值。以太网规定连正文和MAC头合起来不允许超过1500Bytes,如果放不下就要分片传输。

你可能感兴趣的:(ifconfig:熟悉的陌生命令行)