趣谈网络协议_1
第1讲 | 为什么要学习网络协议?
第3讲 | ifconfig:最熟悉又陌生的命令行
无类型域间选路(CIDR)
10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号。
基于以上栗子,又衍生两个概念:
- 广播地址,10.100.122.255。如果发送这个地址,所有 10.100.122 网络里面的机器都可以收到。
- 另一个是子网掩码,255.255.255.0。
将子网掩码和 IP 地址按位计算 AND,就可得到网络号
在 IP 地址的后面有个 scope,对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。
lo 全称是loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
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 地址起作用了。
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
Linux 首先会判断,要去的这个地址和我是一个网段的吗,或者和我的一个网卡是同一网段的吗?只有是一个网段的,它才会发送 ARP 请求,获取 MAC 地址。如果发现不是呢?
Linux 默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关。
动态主机配置协议(DHCP)
动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP。
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第一层(物理层)
我们要的是电脑连电脑。这种方式就是一根网线,有两个头。一头插在一台电脑的网卡上,另一头插在另一台电脑的网卡上。但是在当时,普通的网线这样是通不了的,所以水晶头要做交叉线,用的就是所谓的1-3、2-6 交叉接法
水晶头的第 1、2 和第 3、6 脚,它们分别起着收、发信号的作用。将一端的 1 号和 3 号线、2 号和 6 号线互换一下位置,就能够在物理层实现一端发送的信号,另一端能收到。
集线器:这种设备有多个口,可以将宿舍里的多台电脑连接起来。但是,和交换机不同,集线器没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去(广播模式)。
第二层(数据链路层)
数据链路层,也即 MAC 层要解决的问题。MAC的全称是Medium Access Control,即媒体访问控制。
ARP 协议,也就是已知 IP 地址,求 MAC 地址的协议
ARP 发送一个广播包,谁是这个 IP 谁来回答。具体询问和回答的报文就像下面这样:
局域网
谁能知道目标 MAC 地址是否就是连接某个口的电脑的 MAC 地址呢?这就需要一个能把 MAC 头拿下来,检查一下目标 MAC 地址,然后根据策略转发的设备,按第二节课中讲过的,这个设备显然是个二层设备,我们称为交换机。
交换机也存在自学习能力(学习MAC地址),形成转发表,根据此表可以快速知道交换机各个接口对应的机器IP&MAC地址(注意可能会过期的)
小结
第一,MAC 层是用来解决多路访问的堵车问题的;
第二,ARP 是通过吼的方式来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作缓存;
第三,交换机是有 MAC 地址学习能力的,学完了它就知道谁在哪儿了,不用广播了。
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
如何解决常见的环路问题?
如何解决广播问题和安全问题?
物理隔离:配置单独的子网
虚拟隔离:就是用我们常说的VLAN,或者叫虚拟局域网
在原来的二层的头上加一个 TAG,里面有一个 VLAN ID,一共 12 位
小结
- 当交换机的数目越来越多的时候,会遭遇环路问题,让网络包迷路,这就需要使用 STP 协议,通过华山论剑比武的方式,将有环路的图变成没有环路的树,从而解决环路问题。
- 交换机数目多会面临隔离问题,可以通过 VLAN 形成虚拟局域网,从而解决广播问题和安全问题。
第7讲 | ICMP与ping:投石问路的侦察兵
ICMP 协议的格式
ping 是基于 ICMP 协议工作的。ICMP全称Internet Control Message Protocol,就是互联网控制报文协议。
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
你了解 MAC 头和 IP 头的细节吗?
如果是同一个网段,例如,你访问你旁边的兄弟的电脑,那就没网关什么事情,直接将源地址和目标地址放入 IP 头中,然后通过 ARP 获得 MAC 地址,将源 MAC 和目的 MAC 放入 MAC 头中,发出去就可以了。
如果不是同一网段,例如,你要访问你们校园网里面的 BBS,该怎么办?这就需要发往默认网关 Gateway。Gateway 的地址一定是和源 IP 地址是一个网段的。往往不是第一个,就是第二个。例如 192.168.1.0/24 这个网段,Gateway 往往会是 192.168.1.1/24 或者 192.168.1.2/24。
网关往往是一个路由器,是一个三层转发的设备。啥叫三层设备?前面也说过了,就是把 MAC 头和 IP 头都取下来,然后根据里面的内容,看看接下来把包往哪里转发的设备。
很多情况下,人们把网关就叫作路由器。其实不完全准确,而另一种比喻更加恰当:路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的 IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关。
静态路由是什么?
静态路由,其实就是在路由器上,配置一条一条规则。
IP 头和 MAC 头哪些变、哪些不变?
- “欧洲十国游”型:IP 不变,MAC 变
- “玄奘西行”型
MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网。两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为转发网关;改变 IP 地址的网关,我们称为NAT 网关。
“欧洲十国游”型
① IP & MAC 信息
- 源 MAC:服务器 A 的 MAC
- 目标 MAC:192.168.1.1 这个网口的 MAC
- 源 IP:192.168.1.101
- 目标 IP:192.168.4.101
② IP & MAC 信息
- 源 MAC:192.168.56.1
- 目标 MAC:192.168.56.2 这个网口的 MAC
- 源 IP:192.168.1.101
- 目标 IP:192.168.4.101
③ IP & MAC 信息
- 源 MAC:192.168.4.1
- 目标 MAC:192.168.4.101 这个网口的 MAC
- 源 IP:192.168.1.101
- 目标 IP:192.168.4.101
“玄奘西行”型
① IP & MAC 信息
- 源 MAC:服务器 A 的 MAC
- 目标 MAC:192.168.1.1 这个网口的 MAC
- 源 IP:192.168.1.101
- 目标 IP:192.168.56.2
② IP & MAC 信息
- 源 MAC:192.168.56.1 的 MAC 地址
- 目标 MAC:192.168.56.2 的 MAC 地址
- 源 IP:192.168.56.1
- 目标 IP:192.168.56.2
③ IP & MAC 信息
- 源 MAC:192.168.1.1 的 MAC 地址
- 目标 MAC:192.168.1.101 的 MAC 地址
- 源 IP:192.168.56.1
- 目标 IP:192.168.1.101
第9讲 | 路由协议:西出网关无故人,敢问路在何方
如何配置路由?
路由器就是一台网络设备,它有多张网卡。当一个入口的网络包送到路由器时,它会根据一个本地的转发信息库,来决定如何正确地转发流量。这个转发信息库通常被称为路由表。
每一条规则至少包含这三项信息:
- 目的网络:这个包想去哪儿?
- 出口设备:将包从哪个口扔出去?
- 下一跳网关:下一个路由器的地址。
ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0
,就说明要去 10.176.48.0/20 这个目标网络,要从 eth0 端口出去,经过 10.173.32.1。