趣谈网络协议-学习笔记2

=Start=

缘由:

极客时间专栏地址:「趣谈网络协议」。建议想较为系统的梳理网络协议相关知识的同学都自己去订阅一下该专栏,相较于你可以学习到的知识而言,价格相当便宜了。


记录本文(很可能分成多篇持续总结、整理)的目的很简单——希望在学习了一样知识之后能有个学习笔记之类的东西留下,一来是加深学习印象和效果;二来是方便以后有个参考(随着年龄的增长,需要处理问题的增多,个人的记忆力会越来越不可靠,及时文档化是应对这种问题的有效方式之一)。

正文:

参考解答:
从二层到三层
  • 第5讲 | 从物理层到Mac层:如何在宿舍里自己组网玩联机游戏?

# 第一层(物理层)
我们要的是电脑连电脑。这种方式就是一根网线,有两个头。一头插在一台电脑的网卡上,另一头插在另一台电脑的网卡上。但是在当时,普通的网线这样是通不了的,所以水晶头要做交叉线,用的就是所谓的1-3、2-6 交叉接法。

水晶头的第 1、2 和第 3、6 脚,它们分别起着收、发信号的作用。将一端的 1 号和 3 号线、2 号和 6 号线互换一下位置,就能够在物理层实现一端发送的信号,另一端能收到。

当然电脑连电脑,除了网线要交叉,还需要配置这两台电脑的 IP 地址、子网掩码和默认网关。这三个概念上一节详细描述过了。要想两台电脑能够通信,这三项必须配置成为一个网络,可以一个是 192.168.0.1/24,另一个是 192.168.0.2/24,否则是不通的。

# 第二层(数据链路层)
MAC的全称是Medium Access Control,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱。

# 局域网
当交换机作为一个关卡一样,过了一段时间之后,就有了整个网络的一个结构了,这个时候,基本上不用广播了,全部可以准确转发。当然,每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习的结果,我们称为转发表,是有一个过期时间的。

有了交换机,一般来说,你接个几十台、上百台机器打游戏,应该没啥问题。你可以组个战队了。能上网了,就可以玩网游了。

# 广播风暴
ARP广播时,交换机会将一个端口收到的包转发到其它所有的端口上。
比如数据包经过交换机A到达交换机B,交换机B又将包复制为多份广播出去。
如果整个局域网存在一个环路,使得数据包又重新回到了最开始的交换机A,这个包又会被A再次复制多份广播出去。
如此循环,数据包会不停得转发,而且越来越多,最终占满带宽,或者使解析协议的硬件过载,行成广播风暴。

# 广播域、冲突域
Hub(集线器):
1.一个广播域,一个冲突域。
2.传输数据的过程中易产生冲突,带宽利用率不高
Switch(交换机):
1.在划分vlan的前提下可以实现多个广播域,每个接口都是一个单独的冲突域。
2.通过自我学习的方法可以构建出CAM表,并基于CAM进行转发数据。
3.支持生成树算法。可以构建出物理有环,逻辑无环的网络,网络冗余和数据传输效率都甩Hub好几条街。Switch是目前组网的基本设备之一。

  • 第6讲 | 交换机与VLAN:办公室太复杂,我要回学校

# 拓扑结构是怎么形成的?
多台交换机之间连接起来,就会形成一个稍微复杂的拓扑结构。

# 如何解决常见的环路问题?
随着办公室越来越大,交换机数目肯定越来越多。当整个拓扑结构复杂了,这么多网线,绕过来绕过去,不可避免地会出现一些意料不到的情况。其中常见的问题就是环路问题。

# STP 协议中那些难以理解的概念
在数据结构中,有一个方法叫作最小生成树。有环的我们常称为图。将图中的环破了,就生成了树。在计算机网络中,生成树的算法叫作STP,全称Spanning Tree Protocol。

# STP 的工作过程是怎样的?

# 如何解决广播问题和安全问题?
毕竟机器多了,交换机也多了,就算交换机比 Hub 智能一些,但是还是难免有广播的问题,一大波机器,相关的部门、不相关的部门,广播一大堆,性能就下来了。就像一家公司,创业的时候,一二十个人,坐在一个会议室,有事情大家讨论一下,非常方便。但是如果变成了 50 个人,全在一个会议室里面吵吵,就会乱的不得了。

那咋办,分部门,分会议室呗。那我们就来看看怎么分。有两种分的方法,一个是物理隔离。另外一种方式是虚拟隔离,就是用我们常说的VLAN,或者叫虚拟局域网。使用 VLAN,一个交换机上会连属于多个局域网的机器,那交换机怎么区分哪个机器属于哪个局域网呢?

我们只需要在原来的二层的头上加一个 TAG,里面有一个 VLAN ID,一共 12 位。为什么是 12 位呢?因为 12 位可以划分 4096 个 VLAN。这样是不是还不够啊。现在的情况证明,目前云计算厂商里面绝对不止 4096 个用户。当然每个用户需要一个 VLAN 了啊,怎么办呢,这个我们在后面的章节再说。

如果我们买的交换机是支持 VLAN 的,当这个交换机把二层的头取下来的时候,就能够识别这个 VLAN ID。这样只有相同 VLAN 的包,才会互相转发,不同 VLAN 的包,是看不到的。这样广播问题和安全问题就都能够解决了。

有人会问交换机之间怎么连接呢?将两个交换机连接起来的口应该设置成什么 VLAN 呢?对于支持 VLAN 的交换机,有一种口叫作Trunk 口。它可以转发属于任何 VLAN 的口。交换机之间可以通过这种口相互连接。

# 总结:
STP协议:用于解决环路问题;但是它的问题在于如果有交换机状态发生变化,整个树需要重新构建,如果整个树比较大,则用的时间比较长,期间网络就会中断;
VLAN:虚拟局域网,用于解决广播问题和安全问题。

  • 第7讲 | ICMP与ping:投石问路的侦察兵
# ICMP 协议的格式
ping 是基于 ICMP 协议工作的。ICMP全称Internet Control Message Protocol,就是互联网控制报文协议。
ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源地址和目标地址。它本身非常简单。因为作为侦查兵,要轻装上阵,不能携带大量的包袱。
# 查询报文类型
(ping) ICMP ECHO REQUEST
# 差错报文类型
我举几个 ICMP 差错报文的例子:终点不可达为 3,源抑制为 4,超时为 11,重定向为 5。
# Traceroute:差错报文类型的使用
Traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器。
Traceroute 还有一个作用是故意设置不分片,从而确定路径的 MTU。
  • 第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行

# 怎么在宿舍上网?

# 你了解 MAC 头和 IP 头的细节吗?
在任何一台机器上,当要访问另一个 IP 地址的时候,都会先判断,这个目标 IP 地址,和当前机器的 IP 地址,是否在同一个网段。怎么判断同一个网段呢?需要 CIDR 和子网掩码,这个在第三节的时候也讲过了。

如果是同一个网段,例如,你访问你旁边的兄弟的电脑,那就没网关什么事情,直接将源地址和目标地址放入 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。

如何发往默认网关呢?网关不是和源 IP 地址是一个网段的么?这个过程就和发往同一个网段的其他机器是一样的:将源地址和目标 IP 地址放入 IP 头中,通过 ARP 获得网关的 MAC 地址,将源 MAC 和网关的 MAC 放入 MAC 头中,发送出去。网关所在的端口,例如 192.168.1.1/24 将网络包收进来,然后接下来怎么做,就完全看网关的了。

网关往往是一个路由器,是一个三层转发的设备。啥叫三层设备?前面也说过了,就是把 MAC 头和 IP 头都取下来,然后根据里面的内容,看看接下来把包往哪里转发的设备。

# 静态路由是什么?
静态路由,其实就是在路由器上,配置一条一条规则。这些规则包括:想访问 BBS 站(它肯定有个网段),从 2 号口出去,下一跳是 IP2;想访问教学视频站(它也有个自己的网段),从 3 号口出去,下一跳是 IP3,然后保存在路由器里。
每当要选择从哪只手抛出去的时候,就一条一条的匹配规则,找到符合的规则,就按规则中设置的那样,从某个口抛出去,找下一跳 IPX。

# IP 头和 MAC 头哪些变、哪些不变?
之前我说过,MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网。两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为转发网关;改变 IP 地址的网关,我们称为NAT 网关

# “欧洲十国游”型
通过这个过程可以看出,每到一个新的局域网,MAC 都是要变的,但是 IP 地址都不变。在 IP 头里面,不会保存任何网关的 IP 地址。所谓的下一跳是,某个 IP 要将这个 IP 地址转换为 MAC 放入 MAC 头。

# “玄奘西行”型
从这个过程可以看出,IP 地址也会变。这个过程用英文说就是Network Address Translation,简称NAT。

# 小结
如果离开本局域网,就需要经过网关,网关是路由器的一个网口;

路由器是一个三层设备,里面有如何寻找下一跳的规则;

经过路由器之后 MAC 头要变,如果 IP 不变,相当于不换护照的欧洲旅游,如果 IP 变,相当于换护照的玄奘西行。

  • 第9讲 | 路由协议:西出网关无故人,敢问路在何方

# 如何配置路由?
路由器就是一台网络设备,它有多张网卡。当一个入口的网络包送到路由器时,它会根据一个本地的转发信息库,来决定如何正确地转发流量。这个转发信息库通常被称为路由表。

上一节的例子中,网关上的路由策略就是按照这三项配置信息进行配置的。这种配置方式的一个核心思想是:根据目的 IP 地址来配置路由。

# 如何配置策略路由?

# 动态路由算法
使用动态路由路由器,可以根据路由协议算法生成动态路由表,随网络运行状况的变化而变化。那路由算法是什么样的呢?

第一大类的算法称为距离矢量路由(distance vector routing)。它是基于 Bellman-Ford 算法的。
这个算法比较简单,但是还是有问题。
第一个问题就是好消息传得快,坏消息传得慢。
这种算法的第二个问题是,每次发送的时候,要发送整个全局路由表。网络大了,谁也受不了,所以最早的路由协议 RIP 就是这个算法。它适用于小型网络(小于 15 跳)。当网络规模都小的时候,没有问题。现在一个数据中心内部路由器数目就很多,因而不适用了。

第二大类算法是链路状态路由(link state routing),基于 Dijkstra 算法。
不像距离距离矢量路由协议那样,更新时发送整个路由表。链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了带宽和 CPU 利用率。而且一旦一个路由器挂了,它的邻居都会广播这个消息,可以使得坏消息迅速收敛。

# 动态路由协议
1. 基于链路状态路由算法的 OSPF(Open Shortest Path First,开放式最短路径优先)就是这样一个基于链路状态路由协议,广泛应用在数据中心中的协议。由于主要用在数据中心内部,用于路由决策,因而称为内部网关协议(Interior Gateway Protocol,简称IGP)。

2. 基于距离矢量路由算法的 BGP
但是外网的路由协议,也即国家之间的,又有所不同。我们称为外网路由协议(Border Gateway Protocol,简称BGP)。
在一个国家内部,有路当然选近的走。但是国家之间,不光远近的问题,还有政策的问题。例如,唐僧去西天取经,有的路近。但是路过的国家看不惯僧人,见了僧人就抓。例如灭法国,连光头都要抓。这样的情况即便路近,也最好绕远点走。

# 小结
路由分静态路由和动态路由,静态路由可以配置复杂的策略路由,控制转发策略;
动态路由主流算法有两种,距离矢量算法和链路状态算法。基于两种算法产生两种协议,BGP 协议和 OSPF 协议。
BGP基于TCP,OSPF基于UDP。

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4015.html

《趣谈网络协议-学习笔记2》上有1条评论

发表评论

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