网络基础知识学习(一)
网络基础知识学习(一)
ISO/OSI 7层参考模型:
网络包的格式很复杂,程序也很复杂。复杂的程序都要分层。
IP
IP查询:
- Windows:
ipconfig
- Linux:
ifconfig
、ip addr
输入ip addr
的输出结果:
IP 地址是一个网卡在网络世界的通讯地址,例如上图的:192.168.30.128,地址被点分隔为四个部分,每个部分8个bit所以 IP地址总共是32位,这就是我们常见的IPv4。但后来电脑越来越多,IP不够用了后就有了IPv6,例如:fe80::20c:29ff:fea8:1506,这个有128位。
32位的IPv4被分成了5类:
可以将网络号看成是小区,主机号看成是门牌号来理解。
A、B、C三类地址所包含的主机的数量:
类别 | IPd地址范围 | 最大主机数 | 私有IP地址范围 |
---|---|---|---|
A | 0.0.0.0-127.255.255.255 | 16777216 | 10.0.0.0-10.255.255.255 |
B | 128.0.0.0-191.255.255.255 | 65534 | 172.16.0.0-172.31.255.255 |
C | 192.0.0.0-223.255.255.255 | 254 | 192.168.0.0-192.168.255.255 |
平时我们看到的数据中心里,办公室、家里或学校的 IP 地址,一般都是私有 IP 地址段。因为这些地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。因此,你学校的某个私有 IP 地址段和我学校的可以是一样的。这就像每个小区有自己的楼编号和门牌号,你们小区可以叫 6 栋,我们小区也叫 6 栋,没有任何问题。但是一旦出了小区,就需要使用公有 IP 地址。就像人民路 888 号,是国家统一分配的,不能两个小区都叫人民路 888 号。
公有 IP 地址有个组织统一分配,你需要去买。如果你搭建一个网站,给你学校的人使用,让你们学校的IT 人员给你一个 IP 地址就行。但是假如你要做一个类似网易 163 这样的网站,就需要有公有 IP 地址,这样全世界的人才能访问。
C 类地址能包含的最大主机数量实在太少了,只有 254 个,而 B 类地址能包含的最大主机数量又太多了,6 万多个。于是有了一个折中的方式叫作无类型域间选路,简称 CIDR。
无类型域间选路(CIDR)
这种方式打破了原来设计的几类地址的做法,将32位的IP地址一分为二,前面是网络号,后面是主机号。例如10.111.111.2/24,斜杠后面有个数字24这种地址表示形式,就是CIDR。后面24的意思是32位中,前24位是网络号,后8位是主机号。
伴随着 CIDR 存在的,一个是广播地址,10.111.111.255(主机号最大的地址)。如果发送这个地址,所有 10.111.111网络里面的机器都可以收到。另一个是子网掩码,255.255.255.0(网络号位全是1,其余都是0)。
将子网掩码和 IP 地址进行 AND 计算。前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原来数值,因而前三个数不变,为 10.111.111。后面一个 0,转换成二进制是 0,0 和任何数值取AND,都是 0,因而最后一个数变为 0,合起来就是 10.111.111.0。这就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。
表格中的 192.168.0.x 是最常用的私有 IP 地址。你家里有 Wi-Fi,对应就会有一个 IP 地址。一般你家里地上网设备不会超过 256 个,所以 /24 基本就够了。有时候我们也能见到 /16 的 CIDR,这两种是最常见的,也是最容易理解的。
不需要将十进制转换为二进制 32 位,就能明显看出 192.168.0 是网络号,后面是主机号。而整个网络里面的第一个地址 192.168.0.1,往往就是你这个私有网络的出口地址。例如,你家里的电脑连接 WiFi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个192.168.0 网络里面的所有机器都能收到。
如果网络号不是8的倍数,比如16.158.165.91/22,求这个网络的第一个地址、子网掩码和广播地址。很难一眼看出来,就需要将ip的换算成二进制,再换算成10机制来计算了。16.158 的部分不会动,它占了前 16 位。中间
的 165,变为二进制为10100101。除了前面的 16 位,还剩 6 位。所以,这 8 位中前 6 位是网络号,16.158.<101001>,而 <01>.91 是机器号。第一个地址是 16.158.<101001><00>.1,即 16.158.164.1。子网掩码是 255.255.<111111><00>.0,即255.255.252.0。广播地址为 16.158.<101001><11>.255,即 16.158.167.255。
ip addr
输出结果中的IP地址的后面有个scope,对于ens33这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。lo 全称是 loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
MAC地址
MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。例如:
ip addr
输出结果中,IP地址的上一行是link/ether 00:0c:29:a8:15:06 brd ff:ff:ff:ff:ff:ff
,这个就是MAC地址信息,00:0c:29:a8:15:06
就是MAC地址。每个物理网卡都有一个唯一的MAC地址。
既然MAC地址是唯一的,那全部都用MAC地址就好了,知道对方MAC地址就可以把信息传递给对方,为什么还要有IP?
举一个例子:你知道你想要找的人的身份证( MAC ),你知道去哪里找他吗?如果你知道这人就在同一个办公室里面,你可以哈对方的名字,他听到就会回应你。但是如果要找到的人在一个城市里面,应该就不行了吧,你还得知道对方现在的联系地址( ip地址 ),才可以找到对方。
所以,MAC 地址的通信范围比较小,局限在一个子网里面。例如,从 192.168.0.2/24 访问192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC地址就不行了,需要 IP 地址起作用了。
MAC 地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。
网络设备的状态标识
ip addr
第一行输出结果:ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
其中<BROADCAST,MULTICAST,UP,LOWER_UP>
叫做网络设备的状态标识(net_device_flags).
- BROADCAST:表示网卡有广播地址
- MULTICAST:表示网卡可以发送多播包
- UP:表示网卡处于启动的状态
- LOWER_UP:网卡连接正常,就是网卡已经上电
mtu 1500:最大传输单元 MTU 为 1500,这是以太网的默认值。
MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定正文部分不允许超过 1500 个字节。正文里面有 IP 的头、TCP 的头、HTTP 的头。如果放不下,就需要分片来传输。
qdisc:全称是 queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc(排队规则)把数据包加入队列。
总结
- IP是地址,有定位功能,分公有IP和私有IP。
- CIDR可以用来判断IP是不是同一个局域网。
- MAC是身份证,无定位功能,但可以有局部小范围通信。
参考资料
本文来自博客园,作者:qgdtq,转载请注明原文链接:https://www.cnblogs.com/qgdtq/p/15350333.html