网络协议--简单易懂(持续更新中)

这是博主工作闲时的一些日常学习记录,有些之前很熟悉的,但工作中不常用,慢慢就遗忘了,在这里记录,也是为了激励自己坚持复习,如果有能帮到你,那我将感到非常的荣幸~

1.引言

看似最枯燥、最基础的东西往往具有最长久的生命力。

2.协议

一台计算机工作协议具备三要素:语法、语义、顺序
而只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。

应用层:DNS HTTP HTTPS RTMP P2P DNS GTP RPC
传输层:TCP UDP
网络层:IP ICMP OSPF BGP IPSec GRE
链路层:ARP VLAN STP
物理层:网络跳线

3.网络分层

思考:TCP 在三次握手的时候,IP 层和 MAC 层在做什么呢?
当然是 TCP 发送每一个消息,都会带着 IP 层和 MAC 层了。因为,TCP 每发送一个消息,IP 层和 MAC 层的所有机制都要运行一遍。而你只看到 TCP 三次握手了,其实,IP 层和 MAC 层为此也忙活好久了。

只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。

思考:什么是二层设备、三层设备?
都是这些设备上跑的程序不同而已。一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。


4.ifconfig

查看IP地址:
在 Windows 上是 ipconfig,在 Linux 上是 ifconfig (或者ip addr) 不能用命令也可以用安装 net-tools 和 iproute2 这两个工具查看。

IP 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码,就会存在冲突的情况,比如和平路23号。

可以看出B类下可以有65534台,相对于来说B类太多了,远超现实的需求。
解决方法:无类型域间选路(CIDR) 表现:10.100.122.2 /24
伴随出现的:一个是广播地址,10.100.122.255,另一个是子网掩码,255.255.255.0。(将子网掩码和 IP 地址按位计算 AND,就可得到网络号。)

私有IP组织内部IT人员自主管理。公有IP统一组织分配,需购买获得。
在这里插入图片描述

在 IP 地址的后面有个 scope,
对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。
对于 lo 来讲(loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。),是 host,说明这张网卡仅仅可以供本机相互通信。

MAC地址

一个网卡的物理地址,用十六进制,6 个 byte 表示,具有全局唯一性

为什么有唯一的MAC地址,还需要IP地址?
因为一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的 IP 地址,才是有远程定位功能的。而MAC 地址的通信范围比较小,局限在一个子网里面,没有定位的功能。


5.DHCP

如何手动配置IP地址?

  1. 使用 net-tools:
$ sudo ifconfig eth1 10.0.0.1/24
$ sudo ifconfig eth1 up
  1. 使用 iproute2:
$ sudo ip addr add 10.0.0.1/24 dev eth1
$ sudo ip link set up eth1

思考:手动自由配置没有限制的话你配置本机的为16.158.23.6,本机去ping同一交换机中另一台192.168.1.6的机器,这个机器是否马上能收到?

不能,因为只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不可能有上层没下层。没有目标的MAC地址,所以是发不出去的。

  1. Linux首先会去判断,目标地址与本机是否在一个网段,是的话发起ARP请求,获取到目标的MAC地址。
  2. 如果不是,Linux 默认的处理逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关
  3. 如果你配置了网关的话,Linux 就会获取到网关的 MAC 地址,然后将包发出去。没有配置,包就不会发出去。
  4. 但对于以上16.158.23.6和192.168.1.6的情况,需要将网关配置为 192.168.1.6,但Linux 不会让你配置成功的,因为网关要和当前的网络至少一个网卡是同一个网段的

所以,一般情况下不要手动用命令行自己去配置机器的网络ip,去找相应的网络管理员找到合适的IP,再放进配置文件中。

自动配置协议–>动态主机配置协议DHCP

DHCP 用途:管理员配置好一段共享IP地址,每台机器接入通过DHCP协议申请,自动配置好了,用完了还回去。

举个简单的例子:一般数据中心里面的服务器,IP 一旦配置好,基本不会变,这就相当于买房自己装修。DHCP 的方式就相当于租房。你不用装修,都是帮你配置好的。你暂时用一下,用完退租就可以了。

工作方式

  1. DHCP Discover:新机器加入一个网络,使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255 (目的MAC地址:ff:ff:ff:ff:ff:ff) 通知其他机器。广播包封装了 UDP,UDP 封装了 BOOTP。其实 DHCP 是 BOOTP 的增强版,但是如果你去抓包的话,很可能看到的名称还是 BOOTP 协议
  2. DHCP Server:网络管理员在网络里面配置了 DHCP Server 的话,他就相当于这些 IP 的管理员。他立刻能知道来了一个“新人”。
  3. DHCP Offer:只有 MAC 唯一,IP 管理员才能知道这是一个新人,需要租给它一个 IP 地址,这个过程我们称为 DHCP Offer。同时,DHCP Server 为此客户保留为它提供的 IP 地址。
  4. DHCP Request:如果有多个DHCP Server,它会受到多个ip,一般就会选择最先到达的那个,并且会向网络发送一个 DHCP Request 广播数据包(包中包含客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器地址等)并告诉所有 DHCP Server 它将接受哪一台服务器提供的 IP 地址,告诉其他 DHCP 服务器,并请求撤销它们提供的 IP 地址。
  5. DHCP ACK:当 DHCP Server 接收到客户机的 DHCP request 之后,会广播返回给客户机一个 DHCP ACK 消息包,表明已经接受客户机的选择,并将这一 IP 地址的合法租用信息和其他的配置信息都放入该广播包,发给客户机。

以上便是“租房子”的流程了,如果需要“续租”方式如下:

  1. 客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCP request 消息包。
  2. 客户机接收到该服务器回应的 DHCP ACK 消息包,会根据包中所提供的新的租期以及其他已经更新的 TCP/IP 参数,更新自己的配置。这样,IP 租用更新就完成了。

6.预启动执行环境(PXE)

网络管理员不仅能自动分配 IP 地址,还能帮你自动安装操作系统。

如何自动安装操作系统?

首先,了解一下操作系统的启动流程:

  1. 启动 BIOS(基本输入输出系统),这是一个特别小的小系统,只能干特别小的一件事情。其实就是读取硬盘的 MBR (主引导扇区) 启动扇区,将 GRUB(用于加载和管理系统启动的完整程序) 启动起来;
  2. 然后将权力交给 GRUB,GRUB 加载内核、加载作为根文件系统的 initramfs 文件;
  3. 然后将权力交给内核
  4. 最后内核启动,初始化整个操作系统

所以,安装操作系统的过程只能插在 BIOS 启动之后了。因为没安装系统之前,连启动扇区都没有。因而这个过程叫做预启动执行环境(Pre-boot Execution Environment),简称 PXE

PXE 协议分为客户端和服务器端,由于还没有操作系统,只能先把客户端放在 BIOS 里面。当计算机启动时,BIOS 把 PXE 客户端调入内存里面,就可以连接到服务端做一些操作了。

PXE 的工作过程

  1. 启动 PXE 客户端。第一步是通过 DHCP 协议告诉 DHCP Server,DHCP Server 便租给它一个 IP 地址,同时也给它 PXE 服务器的地址、启动文件 pxelinux.0的位置。 (DHCP Server 除了分配 IP 地址以外,想使用 PXE,则需要配置 next-server,指向 PXE 服务器的地址,另外要配置初始启动文件 filename)
  2. 初始化机器:通过上面得到PXE 客户端知道要去 PXE 服务器下载,下载的时候使用的是 TFTP 协议(简单文件传输协议)。所以 PXE 服务器上,往往还需要有一个 TFTP 服务器。PXE 客户端向 TFTP 服务器请求下载这个文件,TFTP 服务器就将pxelinux.0文件传给它。
  3. 获取装机文件:PXE 客户端收到这个文件后,就开始执行这个文件。这个文件会指示 PXE 客户端,向 TFTP 服务器请求计算机的配置信息 pxelinux.cfg。TFTP 服务器会给 PXE 客户端一个配置文件,里面会说内核在哪里、initramfs 在哪里。PXE 客户端会向TFTP服务器请求这些文件。
  4. 最后,启动 Linux 内核,初始化整个操作系统。

7.物理层

最初的想要两台电脑相连,普通的网线是通不了的,所以水晶头要做交叉线,用的就是所谓的 1-3、2-6 交叉接法。

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

这两台电脑已经构成了一个最小的局域网,也即 LAN

而如果想要实现多个物理机相连,可以考虑 Hub 的东西,也就是集线器。这种设备有多个口,但没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去。这是第一层物理层联通的方案。


8.数据链路层(MAC层)

MAC层:Medium Access Control,即媒体访问控制。

具体控制的是什么?

控制在往媒体上发数据的时候,谁先发、谁后发的问题。这个问题中的规则,学名叫多路访问。类比车管所管束马路上跑的车,具体有以下解决方案:

  1. 方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分
  2. 方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议
  3. 方式三:不管三七二十一,有事儿先出门,发现特堵,就回去。错过高峰再出。我们叫作随机接入协议。著名的以太网,用的就是这个方式。

发给谁,谁接收?

这会用到一个物理地址,叫作链路层地址。但是因为第二层主要解决媒体接入控制的问题,所以它常被称为 MAC 地址。

第二层网络包的格式如下:
在这里插入图片描述
其中CRC,也就是循环冗余检测。通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误。

思考:已知目的Ip地址,怎么获取目的MAC地址?

通过之前提过的ARP 协议,查看本地ARP表,没有再去局域网里广播ARP请求,得到ARP应答后,同时也会缓存到IP-MAC映射的本地表中,也设置合适的过期时间,保证数据的准确性。

》》》回到提到的集线器可以将解决多个物理机互联的问题,因为集线器没有“大脑”只会用广播的方式传递信息,这样浪费了太多不需要的包进行传递和接收。

思考:如果这时候知道目标 MAC 地址是连接某个口的电脑的 MAC 地址是不是简单得多呢?

这时候就需要一个能把MAC报头拿下来检查,并选择转发的设备了,能拿到MAC报头,那就是二层设备的–交换机。 交换机通过学习(会记住每次发送包的端口)形成转发表,同时也有一定的时效性来保证数据的准确性。


9.交换机与VLAN

面对复杂场景下,需要多台交换机存在,多台交换机相连起来就形成一个稍微复杂的拓扑结构
在这里插入图片描述

但交换机一旦变多最常见的问题就是环路问题,就是两个交换机将两个局域网同时连接起来的时候,广播包会越来越多直到堵塞,两台机器都能够逐渐学习到拓扑结构也是如此,会一直修改转发表还是会不听广播知直到堵塞。

解决环路问题:(STP协议)
在数据结构中,有一个方法叫做最小生成树。有环的我们常称为图。将图中的环破了,就生成了树。在计算机网络中,生成树的算法叫作 STP,全称 Spanning Tree Protocol。

STP协议概念介绍

  • Root Bridge,根交换机,相当于门派中的掌门。
  • Designated Bridges,指定交换机,将当于中间的树枝,所谓“指定”的意思是,我拜谁做大哥,其他交换机通过这个交换机到达根交换机,也就相当于拜他做了大哥。
  • Bridge Protocol Data Units (BPDU) ,网桥协议数据单元。当两个掌门交换机碰见的时候,也就是相连的时候,就需要互相比一比内力了,比较内力的协议就是BPDU。同时BPDU 只有掌门能发,已经隶属于某个掌门的交换机只能传达掌门的指示。
  • Priority Vector,优先级向量。可以比喻为实力 (值越小越厉害)。实力是啥?就是一组 ID 数目,[Root Bridge ID, Root Path Cost, Bridge ID, and Port ID]。为什么这样设计呢?这是因为要看怎么来比实力。先看 Root Bridge ID。拿出老大的 ID 看看,发现掌门一样,那就是师兄弟;再比 Root Path Cost,也即我距离我的老大的距离,也就是拿和掌门关系比,看同一个门派内谁和老大关系铁;最后比 Bridge ID,比我自己的 ID,拿自己的本事比。

STP工作流程

  1. 每个网桥都被分配了一个 ID。这个 ID 里有管理员根据实际分配的优先级,ID越小等级越高。

  2. 各个网桥相互连接发送 BPDU 来比“功夫”,赢的继续比或当掌门,而输的就没有机会了。它们只有在收到掌门发的 BPDU 的时候,转发一下,表示服从命令。

    a. 掌门遇到掌门,输的一方都归顺赢的一方。

    b. 同门相遇,有两种情况,第一种:掌门与小弟B,之前是掌门-小弟A-小弟B距离是6,但掌门-小弟B距离是2,小弟B直接升到掌门下。第二种:小弟A与小弟B相遇,小弟A-掌门距离为5,但小弟A-小弟B-掌门距离为3,小弟A就会是小弟B的下属。

    c. 掌门与其他帮派的小弟相遇,掌门会与其他帮派的老大比较,输了就把自己和连接的小弟一起投靠这个帮派。

    d. 不同门派的小弟相遇,比较各自掌门,输的一方慢慢归顺另一方。

虽然交换机有一定的减少广播数量的能力,但仍不能避免信息广播的问题。
思考:如何解决广播问题和安全问题?

  1. 物理隔离:每个部门单独一台交换机,但需要考虑资源浪费的情况。
  2. 虚拟隔离:又称VLAN,或者叫虚拟局域网,只需要在原来的二层的头上加一个 TAG,里面有一个 VLAN ID,一共 12 位。为什么是 12 位呢?因为 12 位可以划分 4096 个 VLAN。当然每个用户需要一个 VLAN 了,不够后面会探讨这个问题。
    而在这种情况下,对于支持 VLAN 的交换机,有一种口叫作 Trunk 口。它可以转发属于任何 VLAN 的口。交换机之间可以通过这种口相互连接。

10.ICMP与Ping

一般查看网络是否联通,都会用ping一下,ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议

ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源地址和目标地址。作为侦查兵,要轻装上阵。
在这里插入图片描述
ICMP最常用的类型是 主动请求为 8,主动请求的应答为 0。

ping:
而ping跟这个类似,常用的 ping 就是查询报文,是一种主动请求,并且获得主动应答的 ICMP 协议。所以,ping 发的包也是符合 ICMP 协议格式的,只不过它在后面增加了自己的格式。

对 ping 的主动请求,进行网络抓包,称为 ICMP ECHO REQUEST。同理主动请求的回复,称为 ICMP ECHO REPLY

比起原生的 ICMP,这里面多了两个字段:
一个是标识符。这个很好理解,你派出去两队侦查兵,一队是侦查战况的,一队是去查找水源的,要有个标识才能区分。
另一个是序号,你派出去的侦查兵,都要编个号。如果派出去 10 个,回来 10 个,就说明前方战况不错;如果派出去 10 个,回来 2 个,说明情况可能不妙。
在选项数据中,ping 还会存放发送请求的时间值,来计算往返时间,说明路程的长短。

ICMP:
差错报文类型:

  1. 第一种是终点不可达
    网络不可达:找不到地方呀 ?
    主机不可达:找到地方没这个人呀?
    协议不可达:找到地方,找到人,口号没对上
    端口不可达:找到地方,找到人,对了口号,事儿没对上
    需要进行分片但设置了不分片位:走到一半,山路狭窄,想换小车,但是您的将令,严禁换小车,就没办法送到了。
  2. 第二种是源站抑制
    也就是让源站放慢发送速度
  3. 第三种是时间超时
    也就是超过网络包的生存时间还是没到。
  4. 第四种是路由重定向
    也就是让下次发给另一个路由器。

差错报文的结构,除了前面还是 IP,ICMP 的前 8 字节不变,后面则跟上出错的那个 IP 包的 IP 头和 IP 正文的前 8 个字节,这样就知道失败原因和定位到哪个IP包。

ping的转发与接收

在这里插入图片描述
回顾上文,ICMP最重要的两个字段类型和顺序号(应答包会带上),还有记录往返时间RTT。ping 这个程序是使用了 ICMP 里面的 ECHO REQUEST 和 ECHO REPLY 类型的。ping相当于使用ICMP的查询报文

如果在自己的可控范围之内,当遇到网络不通的问题的时候,除了直接 ping 目标的 IP 地址之外,还应该有一个清晰的网络拓扑图
并且从理论上来讲,应该要清楚地知道一个网络包从源地址到目标地址都需要经过哪些设备,然后逐个 ping(有些设备禁止ping,可以考虑用telnet等其他协议)中间的这些设备或者机器。
如果可能的话,在这些关键点,通过 tcpdump -i eth0 icmp,查看包有没有到达某个点,回复的包到达了哪个点,可以更加容易推断出错的位置。

Traceroute 使用差错报文

Traceroute会故意制造一些错误场景,以此掌握网络情况。
作用:

  1. 设置特殊的 TTL(存活时间,路由器步数),来追踪去往目的地时沿途经过的路由器。
  2. 设置不可能的值作为 UDP 端口号(大于 30000)以此判断UDP是否到达主机 。
  3. 不设置分片,确定路径的MTU(最大数据分段)。

11.网关

思考:学校给每个宿舍的网口分配的IP地址为192.168.1.x,校园网的IP地址是10.10.x.x,请问怎么实现在宿舍上网?

方案一:
让其中一个人再买一张网卡,同时这张卡的IP 地址要按照学校网管部门分配的配置,这种情况下,如果你们宿舍的人要上网,就需要一直开着那个人的电脑。

方案二:
一起买一个家庭路由器,会有内网网口和外网网口。把外网网口的线插到校园网的网口上,将这个外网网口配置成和网管部的一样。内网网口连上你们宿舍的所有的电脑。这种情况下,如果你们宿舍的人要上网,就需要一直开着路由器。

那其他人电脑怎么上网呢, DHCP 是可以默认配置的。在进行网卡配置的时候,除了 IP 地址,还需要配置一个 Gateway 的东西,这个就是网关

网关往往是一个路由器,是一个三层转发的设备。啥叫三层设备?前面也说过了,就是把 MAC 头和 IP 头都取下来,然后根据里面的内容,看看接下来把包往哪里转发的设备。
一个路由器往往有多个网口,如果是一台服务器做这个事情,则就有多个网卡,其中一个网卡是和源 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。

补充概念 静态路由
其实就是在路由器上,配置一条一条规则,规则是提前设置好的。

传输中 IP 和 MAC地址变换

对于传输过程中,IP和MAC地址改变的问题,可以分两种类型。可以把它们称为“欧洲十国游”型和“玄奘西行”型。因为MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网。

两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为转发网关;改变 IP 地址的网关,我们称为 NAT 网关。

“欧洲十国游”型:
是因为每到一个新的局域网,MAC 都是要变的,但是 IP 地址都不变。在 IP 头里面,不会保存任何网关的 IP 地址。所谓的下一跳是,某个 IP 要将这个 IP 地址转换为 MAC 放入 MAC 头。
之所以将这种模式比喻称为欧洲十国游,是因为在整个过程中,IP 头里面的地址都是不变的。IP 地址在三个局域网都可见,在三个局域网之间的网段都不会冲突。在三个网段之间传输包,IP 头不改变。这就像在欧洲各国之间旅游,一个签证就能搞定。

“玄奘西行”型:
局域网之间没有商量过,各定各的网段,因而 IP 段冲突了。

解决冲突:首先,目标服务器 B 在国际上要有一个国际的身份,我们给它一个 192.168.56.2。在网关 B 上,我们记下来,国际身份 192.168.56.2 对应国内身份 192.168.1.101。凡是要访问 192.168.56.2,都转成 192.168.1.101。

源 IP 为服务器 A 的国际身份,因而发送返回包的时候,也发给这个国际身份,由路由器 A 做 NAT,转换为国内身份。 从这个过程可以看出,IP 地址也会变。这个过程用英文说就是 Network Address Translation,简称 NAT

(NAT比较常见的出现在生活中,有家用路由器,家里的网段都是 192.168.1.x,所以你肯定访问不了你邻居家的这个私网的 IP 地址的。所以,当我们家里的包发出去的时候,都被家用路由器 NAT 成为了运营商的地址了。)


12.路由协议

当一个入口的网络包送到路由器时,它会根据一个本地的转发信息库,来决定如何正确地转发流量。这个转发信息库通常被称为路由表

路由表会有多条路由规则,而一条路由规则至少包含目的网络、出口设备、下一跳网关。这种配置方式的一个核心思想是:根据目的 IP 地址来配置路由

实践中可以通过route 命令查询和 ip route 命令都可以进行配置路由。

例如:

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。

策略路由

在真实的复杂的网络环境中,除了可以根据目的 ip 地址配置路由外,还可以根据多个参数来配置路由,这就称为策略路由

可以配置多个路由表,可以根据源 IP 地址、入口设备、TOS 等选择路由表,然后在路由表中查找路由。这样可以使得来自不同来源的包走不同的路由。

动态路由算法

因为手动配置静态路由信息太麻烦了,所以使用动态路由路由器,可以根据路由协议算法生成动态路由表,随网络运行状况的变化而变化。

动态路由算法,就是找到途中最短路径的问题,基本是以下两种方法:

  1. 距离矢量路由算法,是基于 Bellman-Ford 算法的。
    基本思路:每个路由器都保存一个路由表,包含多行,每个路由器都是知道全局信息的,每行对应网络中的一个路由器,每一行包含两部分信息,一个是要到目标路由器,从那条线出去,另一个是到目标路由器的距离。
    更新方式:每过几秒,每个路由器都将自己所知的到达所有的路由器的距离告知邻居,每个路由器也能从邻居那里得到相似的信息。
    缺点: 1)好消息传得快,坏消息传得慢 。就也就是新的机器加入网络会发现的很快,但要是机器退出就很发现的很慢,会一直达到阈值步数或者时间才发现这个设备消失了。2)每次发送的时候,要发送整个全局路由表。虽然最早的路由协议 RIP 就是这个算法,但网络大了就会特别印象效率,它适用于小型网络(小于 15 跳)。
  2. 链路状态路由算法,基于 Dijkstra 算法。
    基本思路:当一个路由器启动的时候,首先是发现邻居,邻居都回复。然后计算和邻居的距离,发送一个 echo,要求马上返回,除以二就是距离。然后将自己和邻居之间的链路状态包广播出去,发送到整个网络的每个路由器。因而,每个路由器都能在自己本地构建一个完整的图,然后针对这个图使用 Dijkstra 算法,找到两点之间的最短路径。
    更新方式:链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了带宽和 CPU 利用率。而且一旦一个路由器挂了,它的邻居都会广播这个消息,可以使得坏消息迅速收敛。

动态路由协议

  1. 基于链路状态路由算法的 OSPF
    OSPF(Open Shortest Path First,开放式最短路径优先)就是这样一个基于链路状态路由协议,广泛应用在数据中心中的协议。由于主要用在数据中心内部,用于路由决策,因而称为内部网关协议(Interior Gateway Protocol,简称 IGP)。
    通过它找到最短的路径,如果发现多个最短路径,也可以进行负载均衡(应用的接入层会有负载均衡 LVS。它可以和 OSPF 一起,实现高吞吐量的接入层设计),这常被称为等价路由
  2. 基于距离矢量路由算法的 BGP
    外网路由协议(Border Gateway Protocol,简称 BGP),BGP协议使用的是路径矢量路由协议(path-vector protocol)。它是距离矢量路由协议的升级版(解决收敛慢的问题,同时在路径中将一个自治系统看成一个整体)。

在网络世界,不同网络会划分成自治系统 AS(Autonomous System)。自治系统分几种类型。

  • Stub AS:对外只有一个连接。这类 AS 不会传输其他 AS 的包。例如,个人或者小公司的网络。
  • Multihomed AS:可能有多个连接连到其他的 AS,但是大多拒绝帮其他的 AS 传输包。例如一些大公司的网络。
  • Transit AS:有多个连接连到其他的 AS,并且可以帮助其他的 AS 传输包。例如主干网。

而每个自治系统都有边界路由器,通过它和外面的世界建立联系。
BGP 又分为两类,eBGP 和 iBGP。
自治系统间,边界路由器之间使用 eBGP 广播路由。
内部网络也需要访问其他的自治系统。边界路由器如何将 BGP 学习到的路由导入到内部网络呢?就是通过运行 iBGP,使得内部的路由器能够找到到达外网目的地的最好的边界路由器(不止一个边界路由器)。

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值