网络协议学习笔记二

夙愿已清 提交于 2021-02-14 12:52:38

查看ip地址:

在 Windows 上是 ipconfig,在 Linux 上是 ifconfig 或者ip addr。
 
登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ip addr 命令,你是不是感觉这个系统压根儿没法用?这个时候,你可以自行安装 net-tools 和 iproute2 这两个工具。当然,大多数时候这两个命令是系统自带的。
 
IP 地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位。因为不够用,于是就有了 IPv6,这个有 128 位。
本来 32 位的 IP 地址就不够,还被分成了 5 类:
 
这里面有个尴尬的事情,就是 C 类地址能包含的最大主机数量实在太少了,只有 254 个。当时设计的时候恐怕没想到,现在估计一个网吧都不够用吧。而 B 类地址能包含的最大主机数量又太多了。6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。
于是有了一个折中的方式叫作 无类型域间选路 ,简称 CIDR 。这种方式打破了原来设计的几类地址的做法,将 32 位的 IP 地址一分为二,前面是 网络号 ,后面是 主机号 。从哪里分呢?你如果注意观察的话可以看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字24。这种地址表示形式,就是CIDR。后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号。
伴随着 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 地址有个组织统一分配,你需要去买。如果你搭建一个网站,给你学校的人使用,让你们学校的 IT 人员给你一个 IP 地址就行。但是假如你要做一个类似网易 163 这样的网站,就需要有公有 IP 地址,这样全世界的人才能访问。
表格中的 192.168.0.x 是最常用的私有 IP 地址。你家里有 Wi-Fi,对应就会有一个 IP 地址。一般你家里地上网设备不会超过 256 个,所以 /24 基本就够了。有时候我们也能见到 /16 的CIDR,这两种是最常见的,也是最容易理解的。
 
16.158.165.91/22 这个 CIDR:
/22 不是 8 的整数倍,不好办,只能先变成二进制来看。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。
这五类地址中,还有一类 D 类是 组播地址。 使用这一类地址,属于某个组的机器都能收到。
 
在 IP 地址的后面有个 scope,对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。lo 全称是 loopback ,又称 环回接口 ,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
 
MAC 地址
在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为 MAC 地址, 是一个网卡的物理地址,用十六进制,6 个 byte 表示。
MAC 地址号称全局唯一,为什么网络通讯不直接用MAC地址?
因为一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的 IP 地址,才是有远程定位功能的。
MAC 地址更像是身份证,是一个唯一的标识。 它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。
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 地址,我们再来看 < BROADCAST,MULTICAST,UP,LOWER_UP > 是干什么 的?这个叫作 net_device flags 网络设备的状态标识
UP 表示网卡处于启动的状态;
BROADCAST 表示这个网卡有广播地址,可以发送广播包;
MULTICAST 表示网卡可以发送多播包;
LOWER_UP 表示 L1 是启动的,也即网线插着呢。
MTU1500 是指什么意思呢?是哪一层的概念呢?最大传输单元 MTU 为 1500,这是以太网的默认值。
网络包是层层封装的。MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。正文里面有 IP 的头、TCP 的头、HTTP 的头。如果放不下,就需要分片来传输。
 
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 之间也是一样。
 
数据包是按照服务类型( Type of Service,TOS )被分配多三个波段(band)里面的。TOS 是IP 头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。

总结:

IP 是地址,有定位功能;MAC 是身份证,无定位功能;
CIDR 可以用来判断是不是本地人;
IP 分公有的 IP 和私有的 IP。
 
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!