即使是没有学过计算机的人,也知道对于查看IP的命令,window上是ipconfig,linux上ifconfig

那么Linux上是否还有着其他的命令去查看IP地址呢,答案是ip addr

ifconfig和ip addr之间有什么区别吗,这就要说道net-tools和iproute2的历史了

假如,我们我们在一个linux上执行了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

这个命令在执行之后分享了这个机器上的所有网卡,而且大部分的网卡都有一个ip地址,当然存在没有的,只不过不重要罢了

ip地址是一个网卡在网络世界的通信地址,相当于我们的门牌号,如果门牌号一致了,可能导致快递送不到的情况,对应到网络世界就是,网络地址冲突

如上面所述,10.100.122.2是一个ip地址,这个地址被分割为了四个部分,每个部分有8bit,所以一共32bit,但是这样的32位的ip数量很快就不够了,这就需要更多的ip地址,于是ipv6诞生了,就是上面的

fe80::f816:3eff:fec7:7975/64,有了这样的128位ip,就能够缓解我们的燃煤之急了

而且,对于32位的ip,我们还将其细分为了5类

图片

对于A B C三者,我们将其分为了两部分,一部分是网络号,一部分是主机号,

网络号就是对应着小区,我是小区A,你是小区B,主机号就是门牌号

我是小区A 的 48号楼1-201,你是小区B的48号楼1-201

下面说明了 A B C三类对应的主机最大数量

图片

上面可以看出 A类太大适合于公共网络,B类对于一个企业太大,毕竟一个企业很少能有 65534台主机,C类对于一个企业太少,只有254个

无类型域间选路(CIDR)

于是我们采用了一种折中的方式,进行扩大原有的地址类型划分,我们将32位的IP进行一分为二,前面是网络号,后面为主机号,从哪里划分呢?看上面我们的ip addr显示的ip,10.100.122.2/24

从这个斜杠换分,后面有个数字24,表示了32位地址之中,前24位位网络号,后8位为主机号

伴随着CIDR的诞生,还有着广播地址,10.100.122.255 如果发送这个地址,所有10.100.122网络里的机器都能收到,另一种就是子网掩码 255.255.255.0

将两者进行AND计算,前面三个255,转换成二进制都是1,后面的最后一位是0,前面三位和10.100.122进行AND计算,保留下来的还是10.100.122,最后一位是0,导致AND完后全是0,两者合起来,就是网络号,10.100.122.0,将子网掩码和IP地址进行按位计算AND,就是网络号

公有IP地址和私有IP地址

很多时候,大家只记住了CIDR,但是还是需要注意,公有IP地址和私有IP地址

图片

我们看上面的表格,最右就是私有IP端,在我们的数据中心,办公室,家里的IP,就是私有IP字段,这是可以自由分配的,每各小区都有自己的楼编号和门牌号,你们小区可以叫6号楼,我们小区也可以有个6号楼,但只限于小区内,出了小区还是说整个地址,就是网络号

在自己家里,因为不会超过256个主机,所以,ip往常都是 /24 C类的取值方式,路由器的地址是192.168.0.1 广播地址是 192.168.0.255,一旦发送了这个地址,整个192.168.0网络内的机器都能收得到

但是很多场景中的CIDR都可能犯错

我们来看一个CIDR 16.158.165.91/22这个CIDR,这个如何计算这个网络的第一个ip,子网掩码和广播地址

如果是理解为了16.158.165.1,那么就不太对了

因为/后的是22,所以对于165这个字段,我们需要拆分,首先将165转换为2进制

10100101,拆分为了两部分 101001 01 前面的6位是网络号,后面的两位是机器号

于是第一个地址 就是 16.158.<10100100>.1,子网掩码就是 255.255.<111111100>.0,广播地址就是 16.158.10100111.255

翻译过来就是 第一个地址 16.158.164.1 子网掩码就是 255.255.252.0,广播地址就是16.258.167.255

在D类地址,组播地址中,可以使用这类地址,让一个组的机器都能收到信息,就好比有一组邮件组,发送邮件,这个组内得都能收到,这个是将VXLAN的时候就能提到

上面就是简单的介绍了ip相关的只是

在ip addr中,对于eth0来说

图片

是global,说明是对外的网卡,对于lo来说,是host,说明只适用于本地内通信

lo的全程是loopback,又名环回接口,往往会被分配到127.0.0.1这个地址,这个地址用于本机通信

不会再其他网络中出现

其次就是 Mac地址

是一个网卡的物理地址

图片

用16进制,6个byte表示

Mac地址号称全局唯一,不会有两个相同的MAC地址,但是我们通信并不使用MAC地址定位

一个网络包从一个地方传到另一个地方,除了要有确定的地址,还要有地位

IP负责定位,而MAC地址则是负责在这个地方找到具体的人

MAC地址本身具有定位功能的,但是只能在一个小段

就好比身份证一样

我们假设自己是一个快递小哥,要送货上面,ip地址,可以帮助我们找到相对详细的地址

比如 北京市人民街道111号1号楼,接下来就不知道是谁了,只能靠广播,XXX身份证的人请来领包裹,这时候就是Mac地址的作用了

MAC地址的通信只限于一个小的网段

网络设备的状态标识

那么接下来,我们看下 <BROADCAST,MULTICAST,UP,LOWER_UP>的作用,是做什么的

就是net_device_flags,网络设备的状态标识

UP标识网卡处于启动的状态,BROADCAST表示这个网卡有广播地址,MULTICAST表示可以发送多播包,LOWER_UP,表示L1是启动的,网线插着

MTU1500表示最大传输单元是1500,这是以太网的默认值

MTU是MAC层的概念,表示MAC头加上正文,一共不超过1500个字节,正文中IP头,TCP头,HTTP头

加一起,不超过1500个字节,如果放不下,就分片传输

排队规则, 图片 ,按照排队规则将数据包加入队列

最简单的规则是pfifo,其表示不对数据包进行任何的处理,数据包采用的是先入先出的方式,pfifo_fast表示的稍微复杂点,表示其中包含三个波段,在每一个波段里面采用先入先出规则

三个波段的优先级也不相同,band0 的优先级最高,band2 的最低,如果band0里面有数据,就不会处理band1里面的数据包

数据包按照服务类型(Type of Service) 被分配到了三个波段 band 里面, TOS是IP头里面的一个字段,代码了当前的包是最高优先级的,还是最低优先级的

本章的重点

对于获取设备网络相关信息进行了介绍

简单的命令中包含了很多,简单的介绍有

IP地址,可以帮助定位.MAC是身份证,定位范围太小了

CIDR可以用来判断是否是本地人

IP可以分为公有和私有两种

课后思考

1.简述下net-tools和iproute2的历史

2.Ip地址的由来

1.net-tools源于BSD,从2001起,Linux社区就停止维护了,iproute2旨在取代net-tools,

net-tools通过 procf2和ioctl系统调用来访问并改变内核,iproute2则通过netlink套接字接口和内核通信

net-tools2中工具的名字比较杂乱,ipoute2比较整洁,ip命令后加子命令

A,B,C类地址的有效地址范围是多少

A类IP地址的范围是 0~127.但是由于全0 和 全 1 的特殊性,实际可以使用的是1~126的范围,所以

A类有126个,范围为1.0.0.0~127.0.0.0,每个可容纳1亿多个主机

网络号,IP地址,子网掩码,广播地址

在一个数据中心或者办公室规划网络的时候,会在初期就确定好容纳的机器数量,一般选择192.168.0.0/24

这就是现有的网络号,192.168.0就是网络号.有了网络号,子网掩码有了,广播地址也有了

组播和广播类型IP的意义在于什么?

C类地址的主机数去掉了 0和 255,就只有254个了

广播和组播分为两个层面,MAC层有广播和组播对应的地址.IP层也有自己的广播和组播地址

其中MAC层有广播和组播对应的地址,IP层也有自己的广播地址和组播地址

广播相对简单,MAC层的地址为 ff:ff:ff:ff:ff:ff,

IP层指向子网的广播地址为主机号为全1,且有特定子网号的地址

组播层会复杂一些,MAC层里面,地址汇总最高字节的最低位设置1,说明是个组播地址,比如就是

01:00:00:00:00:00.IP层,组播地址为D类IP地址,当IP地址为组播地址的时候,有一个算法可以计算出对应的MAC层地址

多播进程将目的IP地址指明为多播地址,设备驱动将其转换为以太网地址,然后发送出去,接收方,将能够接收这些多播帧

多播包有跨越路由器的时候,利用了IGMP的协议,告诉了多播路由器,多播数据包如何转发

MTU 1500的具体含义

图片

MTU是一个二层的定义,以以太网为例,MTU有1500个Byte,前面有6个Byte的目标MAC地址,6个Byte的源MAC地址,2个Byte的类型,后面有4个Byte的CRC校验,一共是1518个Byte

在IP层,一个IP数据包在以太网中传输,如果长度大于该MTU值,就要分片,如果不能分片DF,就会发送ICMP的包

TCP层有一个MSS的控制,等于MTU减去IP头,再减去TCP头,在不分片的情况下,TCP里面最大的内容

在HTTP层,body无限制,因为TCP层会分段发送,所以HTTP层不需要担心

发表评论

邮箱地址不会被公开。 必填项已用*标注