1.Windows:ipconfig
2.Linux:ifconfig
ip addr
问题:假设你登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ip addr 命令?
解决方案:安装 net-tools 和 iproute2
这两个工具。当然,大多数时候这两个命令是系统自带的
安装好后,我们来运行一下 ip addr,如图:
root@test:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fec7:7975/64 scope link
valid_lft forever preferred_lft forever
3.这个命令显示了这台机器上所有的网卡。大部分的网卡都会有一个 IP 地址,当然,这不是必须的
4.如上输出的结果,10.100.122.2 就是一个 IP 地址
5.这个地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位
6.这样产生的 IP 地址的数量很快就不够用了。因为当时设计 IP 地址的时候,哪知道今天会有这么多的计算机.
7.因为不够用,于是就有了 IPv6
8.也就是上面输出结果里面 inet6
fe80::f816:3eff:fec7:7975/64。这个有 128 位,现在看来是够了,但是未来的事情谁知道呢?
IP 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码既然是门牌号码,不能大家都一样,不然就会起冲突.
本来 32 位的 IP 地址就不够,还被分成了 5 类
在网络地址中,至少在当时设计的时候,对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号。这很好理解,大家都是一单元 1001 号,我是小区 A 的一单元 1001 号,而你是小区B 的一单元 1001 号;
下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数量:
1.这里面有个尴尬的事情,就是 C 类地址能包含的最大主机数量实在太少了,只有 254 个。
2.B 类地址能包含的最大主机数量又太多了。6 万多台
机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。
无类型域间选路(CIDR)
1.这是一个折中的方式,这种方式打破了原来设计的几类地址的做法
2.将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。
3.果注意观察的话可
以看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。
4.后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号
//理解并记住广播地址,子网掩码地址
5.伴随着 CIDR 存在的,一个是广播地址,10.100.122.255。如果发送这个地址,所有 10.100.122 网络里面的机器都可以收到。另一个是子网掩码,255.255.255.0。
网络号
将子网掩码和 IP 地址进行 AND 计算。前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原来数值,因而前三个数不变,为 10.100.122。后面一个 0,转换成二进制是 0,0 和任何数值取
AND,都是 0,因而最后一个数变为 0,合起来就10.100.122.0。这就是网络号。将子网掩码和 IP地址按位计算 AND,就可得到网络号(网段)
公有 IP 地址和私有 IP 地址
在日常的工作中,几乎不用划分 A 类、B 类或者 C 类,所以时间长了,很多人就忘记了这个分类,而只记得 CIDR。但是有一点还是要注意的,就是公有 IP 地址和私有 IP 地址。
1.表格最右列是私有 IP 地址段。平时我们看到的数据中心里,办公室、家里或学校的 IP 地址,一般都是私有 IP 地址段。因为这些地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。因此,你学校的某个私有 IP 地址段和我学校的可以是一样的.
2.这就像每个小区有自己的楼编号和门牌号,你们小区可以叫 6 栋,我们小区也叫 6 栋,没有任何问题。但是一旦出了小区,就需要使用公有 IP 地址,就像人民路 888 号,是国家统一分配的,不能两个小区都叫人民路 888 号。
//引出公有ip概念
3.公有 IP 地址有个组织统一分配,你需要去买。如果你搭建一个网站,给你学校的人使用,让你们学校的IT 人员给你一个 IP 地址就行。但是假如你要做一个类似网易 163 这样的网站,就需要有公有 IP 地址,这样全世界的人才能访问。
4.表格中的 192.168.0.x 是最常用的私有 IP 地址。你家里有 Wi-Fi,对应就会有一个 IP 地址。一般你家里地上网设备不会超过 256 个,所以 /24 基本就够了(比如我的虚拟机的ip:192.168.0.130)
5.不需要将十进制转换为二进制 32 位,就能明显看出 192.168.0 是网络号,后面是主机号。而整个网络里面的第一个地址192.168.0.1,往往就是你这个私有网络的出口地址。例如,你家里的电脑连接 WiFi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个192.168.0 网络里面的所有机器都能收到。
但是也不总都是这样的情况
在 IP 地址的后面有个 scope,对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。
对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。
lo 全称是loopback,又称环回接口,往往会被分配到127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
MAC 地址
1.在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。
2.MAC 地址是一个很容易让人“误解”的地址。因为 MAC 地址号称全局唯一,不会有两个网卡有相同的MAC 地址,而且网卡自生产出来,就带着这个地址。很多人看到这里就会想,既然这样,整个互联网的
通信,全部用 MAC 地址好了,只要知道了对方的 MAC 地址,就可以把信息传过去。
//IP是负责通信定位的
//例如,你去杭州市网商路 599 号 B 楼 6 层找刘超,你在路上问路,可能被问的人不知道 B 楼是哪个,但是可以给你指网商路怎么去。但是如果你问一个人,你知道这个身份证号的人在哪里吗?可想而知,没有人知道。
3.这样当然是不行的。一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。而有门牌号码属性的 IP 地址,才是有远程定位功能的。
MAC 地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个
网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。
1.MAC 地址是有一定定位功能的,只不过范围非常有限。你可以根据 IP 地址,找到杭州市网商路 599 号B 楼 6 层,但是依然找不到我,你就可以靠吼了,大声喊身份证 XXXX 的是哪位?我听到了,我就会站起来说,是我啊。但是如果你在上海,到处喊身份证 XXXX 的是哪位,我不在现场,当然不会回答,因为我在杭州不在上海。
2.所以,MAC 地址的通信范围比较小,局限在一个子网里面。
3.例如,从 192.168.0.2/24 访问192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC地址就不行了,需要 IP 地址起作用了。
1. <BROADCAST,MULTICAST,UP,LOWER_UP > 这个叫作net_device flags,网络设备的状态标识。
2. UP 表示网卡处于启动的状态;
3. BROADCAST 表示这个网卡有广播地址,可以发送广播包
4. MULTICAST表示网卡可以发送多播包;
5. LOWER_UP 表示 L1 是启动的,也即网线插着呢
6. 最大传输单元 MTU 为 1500,这是以太网的默认值。
//网络包是层层封装的。MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。正文里面有 IP 的头、TCP 的头、HTTP 的头。如果放不下,就需要分片来传输
7.qdisc pfifo_fast 是什么意思呢?qdisc 全称是queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc(排队规则)把数据包加入队列。
//最简单的 qdisc 是 pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列
//pfifo_fast 稍微复杂一些,它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。
//三个波段(band)的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2 之间也是一样。
IP 是地址,有定位功能;MAC 是身份证,无定位功能;
CIDR 可以用来判断是不是本地人(内部ip分配)
IP 分公有的 IP 和私有的 IP