网络协议总结

网络协议总结

网络模型

网络协议

  • 局域网 :小范围内的私有网络,一个家庭内的网络、一个公司内的网络、一个校园内的网络都属于局域网。
  • 广域网:把不同地域的局域网互相连接起来的网络。运营商搭建广域网实现跨区域的网络互连。
  • 互联网:互联全世界的网络。互联网是一个开放、互联的网络,不属于任何个人和任何机构,接入互联网后可以和互联网的任何一台主机进行通信。

网络协议就是为了通信各方能够互相交流而定义的标准或规则,设备只要遵循相同的网络协议就能够实现通信。

TCP/IP 模型

TCP/IP 是有由 IETF 建议、推进其标准化的一种协议,是 IP 、 TCP 、HTTP 等协议的集合。TCP/IP 是为使用互联网而开发制定的协议族,所以互联网的协议就是 TCP/IP 。

先介绍下 TCP/IP 与 OSI 分层之间的对应关系,以及 TCP/IP 每层的主要协议。
在这里插入图片描述

网络接入层

TCP/IP 是以 OSI 参考模型的物理层和数据链路层的功能是透明的为前提制定的,并未对这两层进行定义,所以可以把物理层和数据链路层合并称为网络接入层。网络接入层是对网络介质的管理,定义如何使用网络来传送数据。但是在通信过程中这两层起到的作用不一样,所以也有把物理层和数据链路层分别称为硬件、网络接口层

设备之间通过物理的传输介质互连, 而互连的设备之间使用 MAC 地址实现数据传输。采用 MAC 地址,目的是为了识别连接到同一个传输介质上的设备。

封装与解封装

通常,为协议提供的信息为包头部,所要发送的内容为数据。每个分层中,都会对所发送的数据附加一个头部,在这个头部中包含了该层必要的信息, 如发送的目标地址以及协议相关信息。在下一层的角度看,从上一分层收到的包全部都被认为是本层的数据。
数据发送前,按照参考模型从上到下,在数据经过每一层时,添加协议报文头部信息,这个过程叫封装
封装
数据接收后,按照参考模型从下到上,在数据经过每一层时,去掉协议头部信息,这个过程叫解封装

解封装
经过传输层协议封装后的数据称为,经过网络层协议封装后的数据称为,经过数据链路层协议封装后的数据称为帧,物理层传输的数据为比特

TCP/IP 通信中使用 MAC 地址、 IP 地址、端口号等信息作为地址标识

实际数据传输举例

发送数据包

实际应用中,互联网是使用的 TCP/IP 协议进行网络连接的。我们以访问网站为例,看看网络是如何进行通信的。
http传输

接收数据包

包的接收流程是发送流程的反向过程。

网络接口处理

收到以太网包后,首先查看头部信息的目的 MAC 地址是否是发给自己的包。如果不是发送给自己的包就丢弃。如果是发送给自己的包,查看上层协议类型是IP 包,以太网帧解封装成 IP 包,传给 IP 模块进行处理。如果是无法识别的协议类型,则丢弃数据。
网络接口处理

IP 模块处理

收到 IP 包后,进行类似处理。根据头部信息的目的 IP 地址判断是否是发送给自己包,如果是发送给自己的包,则查看上一层的协议类型。上一层协议是TCP ,就把 IP 包解封装发送给 TCP 协议处理。
IP模块处理
假如有路由器,且接收端不是自己的地址,那么根据路由控制表转发数据。
在这里插入图片描述

TCP 模块处理

收到 TCP 段后,首先查看校验和,判断数据是否被破坏。然后检查是否按照序号接收数据。最后检查端口号,确定具体的应用程序。
在这里插入图片描述
数据接收完毕后,发送一个 “ 确认回执 ” 给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。

数据被完整接收后,会把 TCP 段解封装发送给由端口号识别的应用程序。

应用程序处理

应用程序收到数据后,通过解析数据内容获知发送端请求的网页内容,然后按照HTTP 协议进行后续数据交互。

网络构成

搭建一套网络涉及各种线缆和网络设备。
在这里插入图片描述

通信介质与数据链路

设备之间通过线缆进行连接。有线线缆有双绞线、光纤、串口线等。根据数据链路不同选择对应的线缆。传输介质还可以被分为电波、微波等不同类型的电磁波。

  • 传输速率:单位为 bps ,是指单位时间内传输的数据量有多少。又称作带宽,带宽越大网络传输能力就越强。
  • 吞吐量:单位为 bps ,主机之间实际的传输速率。吞吐量这个词不仅衡量带宽, 同时也衡量主机的 CPU 处理能力、 网络的拥堵程度、 报文中数据字段的占有份额等信息。

网卡

任一主机连接网络时,必须要使用网卡。可以是有线网卡,用来连接有线网络,也可以是无线网卡连接 WiFi 网络。每块网卡都有一个唯一的 MAC 地址,也叫做硬件地址或物理地址

二层交换机

在这里插入图片描述
二层交换机位于 OSI 模型的第 2 层(数据链路层)。它能够识别数据链路层中的数据帧,并将帧转发给相连的另一个数据链路。

数据帧中有一个数据位叫做 FCS ,用以校验数据是否正确送达目的地。二层交换机通过检查这个值,将损坏的数据丢弃。

二层交换机根据 MAC 地址自学机制判断是否需要转发数据帧。

路由器 / 三层交换机在这里插入图片描述

路由器是在 OSI 模型的第 3 层(网络层)上连接两个网络、并对报文进行转发的设备。二层交换机是根据 MAC 地址进行处理,而路由器 / 三层交换机则是根据== IP 地址==进行处理的。 因此 TCP/IP 中网络层的地址就成为了 IP 地址。

四至七层交换机4层与7层交换机

四至七层交换机负责处理 OSI 模型中从传输层至应用层的数据。以 TCP 等协议的传输层及其上面的应用层为基础,分析收发数据,并对其进行特定的处理。例如,流量大的应用的一台服务器不能满足访问需求,通过负载均衡设备将访问分发到后台多个服务器上,就是四至七层交换机的一种。还有带宽控制、广域网加速器、防火墙等应用场景。

数据链路层

MAC 地址

每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的,才能正确识别到数据链路上的设备。

MAC 地址由 6 个字节组成。前 3 个字节表示厂商识别码,每个网卡厂商都有特定唯一的识别数字。后 3 个字节由厂商给每个网卡进行分配。厂商可以保证生产出来的网卡不会有相同 MAC 地址的网卡。
在这里插入图片描述
现在可以通过软件修改 MAC 地址,虚拟机使用物理机网卡的 MAC 地址,并不能保证 MAC 地址是唯一的。但是只要 MAC 地址相同的设备不在同一个数据链路上就没问题。

以太网

有线局域网中普遍使用以太网,以太网标准简单,传输速率高。常见的网络拓扑结构如下图。
在这里插入图片描述

什么是网络拓扑

网络的连接和构成的形态称为网络拓扑。它不仅可以直观的看到网络物理连接方式,还可以表示网络的逻辑结构。

以太网数据格式

当今最常用的以太网协议标准是 ETHERNET II 标准。 ETHERNET II标准定义的数据帧格式如下图。
在这里插入图片描述

  • 前导码( Preamble )
    前导码由 7 个字节组成,每个字节固定为 10101010 。之后的 1 个字节称为帧起始定界符,这个字节固定为 10101011 。这 8 个字节表示以太网帧的开始,也是对端网卡能够确保与其同步的标志。帧起始定界符的最后两位比特被定义为 11 ,之后就是以太网数据帧的本体。
  • 目的地址( Des tination Address )
    目的地址由 6 个字节组成,用来标识数据帧的目的设备。
  • 源地址( Sour ce Address )
    源地址由 6 个字节组成,用来标识数据帧的始发设备,类似于快递的发件人地址。
  • 类型( Type )
    类型字段由 2 个字节组成。类型字段是表明上一层(即网络层)的协议类型,可以让接收方使用相同的协议进行数据帧的解封装。
  • 数据( Data )
    帧头后就是数据。一个数据帧所能容纳的最大数据范围是 46 ~ 1500 个字节。如果数据部分不足 46 个字节,则填充这个数据帧,让它的长度可以满足最小长度的要求。
  • FCS( Frame Check Sequence )
    FCS 由 4 个字节组成,位于数据帧的尾部,用来检查帧是否有所损坏。通过检查 FCS 字段的值将受到噪声干扰的错误帧丢弃。

交换机二层转发原理

交换机有多个网络端口,它通过识别数据帧的目标 MAC 地址,根据 MAC 地址表决定从哪个端口发送数据。MAC 地址表不需要在交换机上手工设置,而是可以自动生成的。
在这里插入图片描述

交换机是如何添加、更新、删除 M AC 地址表条目的?

在初始状态下,交换机的 MAC 地址表是空的,不包含任何条目。当交换机的某个端口接收到一个数据帧时,它就会将这个数据帧的源 MAC 地址、接收数据帧的端口号作为一个条目保存在自己的 MAC 地址表中,同时在接收到这个数据帧时重置这个条目的老化计时器时间。这就是交换机自动添加 MAC 地址表条目的方式。
在这里插入图片描述

如何使用 M AC 地址表条目进行转发?

当交换机的某个端口收到一个单播数据帧时,它会查看这个数据帧的二层头部信息,并进行两个操作。一个操作是根据源 MAC 地址和端口信息添加或更新MAC 地址表。另一个操作是查看数据帧的目的 MAC 地址,并根据数据帧的目的 MAC 地址查找自己的 MAC 地址表。在查找 MAC 地址表后,交换机会根据查找结果对数据帧进行处理,这里有 3 中情况:

  • 交换机没有在 MAC 地址表中找到这个数据帧的目的 MAC 地址,因此交换机不知道自己的端口是否有连接这个 MAC 地址的设备。于是,交换机将这个数据帧从除了接收端口之外的所有端口泛洪出去。
    在这里插入图片描述
  • 交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口不是接
    收到这个数据帧的端口,交换机知道目的设备连接在哪个端口上,因此交换机
    会根据 MAC 地址表中的条目将数据帧从对应端口单播转发出去,而其它与交
    换机相连的设备则不会收到这个数据帧。
    在这里插入图片描述
  • 交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口就是接收到这个数据帧的端口。这种情况下,交换机会认为数据帧的目的地址就在这个端口所连接的范围内,因此目的设备应该已经收到数据帧。这个数据帧与其它端口的设备无关,不会将数据帧从其它端口转发出去。于是,交换机会丢弃数据帧。
    在这里插入图片描述
  • 单播:主机一对一的发送数据。单播地址是主机的 MAC 地址。
  • 广播:向局域网内所有设备发送数据。只有全 1 的 MAC 地址为广播 MAC 地址,即 FF-FF-FF-FF-FF-FF 。
  • 泛洪:将某个端口收到的数据从除该端口之外的所有端口发送出去。泛洪操作广
    播的是普通数据帧而不是广播帧。

VLAN

广播域是广播帧可以到达的区域。换句话说,由多个交换机和主机组成的网络就
是一个广播域。

网络规模越大,广播域就越大,泛洪流量也越来越大,降低通信效率。在一个广播域内的任意两台主机之间可以任意通信,通信数据有被窃取的风险。
在这里插入图片描述
为了解决广播域扩大带来的性能问题和安全性降低问题, VLAN 技术应运而生。 VLAN 技术能够在逻辑上把一个物理局域网分隔为多个广播域,每个广播域称为一个虚拟局域网(即 VLAN )。每台主机只能属于一个 VLAN ,同属一个 VLAN 的主机通过二层直接通信,属于不同 VLAN 的主机只能通过 IP路由功能才能实现通信。通过划分多个 VLAN ,从而减小广播域传播的范围,过滤多余的包,提高网络的传输效率,同时提高了网络的安全性。

VLAN 原理

VLAN 技术通过给数据帧插入 ==VLAN 标签(即 VLAN TAG )==的方式,让交换机能够分辨出各个数据帧所属的 VLAN 。

VLAN 标签是用来区分数据帧所属 VLAN 的,是 4 个字节长度的字段,插入到以太网帧头部上。 VLAN 标签会插入到源 MAC 地址后面, IEEE 802.1Q标准有这个格式定义和字段构成说明。
在这里插入图片描述

  • TPID (标签协议标识符):
    长度 2 个字节,值为 0x8100 ,用来表示这个数据帧携带了 802.1Q 标签。不支持 802.1Q 标准的设备收到这类数据帧,会把它丢弃。
  • TCI (标签控制信息):
    长度 2 个字节,又分为三个子字段,用来表示数据帧的控制信息:
    • 优先级( Priorit y ):长度为 3 比特,取值范围 0 ~ 7 ,用来表示数据帧的优先级。取值越大,优先级越高。当交换机发送拥塞是,优先转发优先级高的数据帧。
    • CFI (规范格式指示器):长度为 1 比特,取值非 0 即 1 。
    • VLAN ID ( VLAN 标识符):长度为 12 比特,用来表示 VLAN 标签的数值。取值范围是 1 ~ 4094 。

划分 VLAN 后,交换机如何处理广播报文?

交换机上划分了多个 VLAN 时,在交换机接收到广播数据帧时,只会将这个数据帧在相同 VLAN 的端口进行广播。
在这里插入图片描述

划分 VLAN 后,交换机如何处理目的 M AC 地址不在 M AC 地址表中的单播数据帧?

交换机上划分了多个 VLAN 时,当交换机接收到一个目的 MAC 地址不存在于自己 MAC 地址表中的单播数据帧时,只会将这个数据帧在相同 VLAN 的端口进行泛洪。

划分 VLAN 后,不同 VLAN 的主机能否通信?

在不使用路由转发的前提下,交换机不会从一个 VLAN 的端口中接收到的数据帧,转发给其它 VLAN 的端口。

怎么区分不同的 VLAN ?

通过 VLAN ID 进行区分,例如 VLAN 10 和 VLAN 20 就是不同的 VLAN。

VLAN 技术有哪些好处?

  • 增加了广播域的数量,减小了每个广播域的规模,也减少了每个广播域中终端设备的数量;
  • 增强了网络安全性,保障网络安全的方法增加了;
  • 提高了网络设计的逻辑性,可以规避地理、物理等因素对于网络设计的限制。

划分 VLAN

我们可以使用不同的方法,把交换机上的每个端口划分到某个 VLAN 中,以此在逻辑上分隔广播域。

交换机通常会使用==基于端口划分 VLAN ==的方法。在交换机上手动配置,绑定交换机端口和 VLAN ID 的关系。

  • 优点:配置简单。想要把某个端口划分到某个 VLAN 中,只需要把端口的PVID (端口 VLAN ID )配置到相应的 VLAN ID 即可。
  • 缺点:当终端设备移动位置是,可能需要为终端设备连接的新端口重新划分VLAN 。

除了这种方法外,还可以使用基于 ==MAC 地址划分 VLAN 、基于 IP 地址划分VLAN 、基于协议划分 VLAN 、基于策略划分 VLAN ==等方法来划分VLAN。

PVID :接口默认 VLAN ID ,是交换机端口配置的参数,默认值是 1 。

跨交换机 VLAN 原理

终端设备不会生成带 VLAN 标签的数据帧,它们发出的数据帧叫做无标记帧(Untagged )。它们连接的交换机会给无标记帧打上 VLAN 标签。交换机通过每个端口的 PVID ,判断从这个接口收到的无标记帧属于哪个 VLAN ,并在转发时,插入相应的 VLAN 标签,从而将无标记帧变为标记帧( Tagged )

网络层

为什么没有配置 IP 地址就无法上网? IP 协议又是啥?

这要从 TCP/IP 协议说起,互联网使用的是 TCP/IP 协议,其中 IP 协议又是最重要的协议之一。IP 协议是基于 IP 地址将数据包发送给目的主机,能够让互联网上任何两台主机进行通信。
在这里插入图片描述
IP 协议位于 OSI 参考模型的第三层,即网络层。

网络层的主要作用是实现终端节点之间的通信。这种终端节点之间的通信,也叫点对点通信。
在这里插入图片描述

  • 主机:配置有IP 地址,不进行路由控制的设备。
  • 路由器:既有IP地址又具有路由控制的设备。
  • 节点:主机和路由器的统称。

数据如何传输到目的地?

数据链路层实现两个直连设备之间的数据传输,网络层的 IP 协议实现没有直连的两个网络之间的数据传输。

IP 地址的基础知识

在 TCP/IP 通信中使用 IP 地址识别主机和路由器。 IP 地址是逻辑地址,需要手工配置或自动获取,为了保证正常通信,每个设备必须配置 IP 地址

IP 地址的组成

IP 地址由网络号(网段地址)和主机号(主机地址)两部分组成。
在这里插入图片描述
网络号是设备所在区域的一种标识,网络号相同的设备位于同一个网段内,网络号不同的设备通过路由器实现通信。主机号是在同一个网段中不同设备的标识,不允许同一个网段内出现重复的主机号。

路由器是根据目的 IP 地址的网络号进行路由。
在这里插入图片描述

IP 地址的分类

IP 地址分为四类,分别是== A 类、 B 类、 C 类、 D 类==(还有一个保留的 E类)。

A 类地址

A 类 IP 地址是首位以“ 0 ”开头的地址。从第 1 位到第 8 位是它的网络号,网络号的范围是 0 ~ 127 。其中 0 和 127 属于保留地址,减去两个保留地址,因此有 126 个可用的 A 类地址。

B 类地址

B 类 IP 地址是前两位以“ 10 ”开头的地址。从第 1 位到第 16 位是它的网络号,网络号的范围是 128.0 ~ 191.255 。其中 128.0 和 191.255 属于保留地址,减去两个保留地址,因此有 16382 个可用的 B 类地址。

C 类地址

C 类 IP 地址是前三位以“ 110 ”开头的地址。从第 1 位到第 24 位是它的网络号,网络号的范围是 192.0.0 ~ 223.255.255 。其中 192.0.0 和223.255.255 属于保留地址,减去两个保留地址,因此有 2097150 个可用的C 类地址。

D 类地址

D 类 IP 地址是前四位以“ 1110 ”开头的地址。从第 1 位到第 32 位是它的网络号,网络号的范围是 224.0.0.0 ~ 239.255.255.255 。D 类地址没有主机号,用于组播。

网段地址和广播地址

当主机号全为 0 时,表示的是网段地址,非主机地址。当主机号全为 1 时是广播地址,也不是主机地址。因此在分配 IP 地址过程中,需要排除这两个地址。例如一个 C 类地址 192.168.1.0/24 最多只有 254 个可用主机地址,而不是 256 个。

广播地址

IP 地址中的主机号全部为 1 的就是广播地址,它是向同一个网段中的所有主机发送数据包。例如一个 B 类主机地址 172.20.1.100 的广播地址是172.20.255.255 。

IP 组播

组播用于将包发送给特定组内的所有主机。
在这里插入图片描述

组播使用 D 类地址。因此 IP 地址前四位是“ 1110 ”开头的,就是组播地址。剩下的 28 位就是组播的组编号。组播的地址范围是 224.0.0.0 ~239.255.255.255 ,其中 224.0.0.0 ~ 224.0.0.255 既可以在同一个网段内实现组播,又可以跨网段给全网所有组员发送组播包。

子网掩码

早期网络地址采用固定网络位长度的方式,使 IPv4 地址遭到大量浪费。如今网段地址的长度可变,同时也需要一种标识来获取网段地址,以便路由器对数据包进行转发,这种识别码就是子网掩码。

CIDR 与 VLSM

解决 IP 地址浪费问题,除了使用子网掩码,还使用了 CIDR 和 VLSM 技术。

CIDR ,即无类域间路由,采用任意长度分割 IP 地址的网络号和主机号。它有两个作用:

  • 把多个网段聚合到一起,生成一个更大的网段;
  • 汇总路由表 IP 地址,分担路由表压力。

==VLSM ==,即可变长子网掩码,它可以对 A 、 B 、 C 类地址再进行子网划分,以达到充分利用 IP 地址的目的。

CIDR 和 VLS M 的区别

  • CIDR 是主机号向网络号借位,目的是把几个网络汇总成一个大的网络,增加子网主机数量;
  • VLSM 是网络号向主机号借位,目的是把一个标准的网络划分成几个子网,减少子网主机数量。

公网地址与私有地址

IP 地址分为公网地址和私有地址。公网地址是在互联网上使用的,私有地址是在局域网中使用的。

  • 公网地址由 Internet NIC 负责分配,通过它直接访问互联网。
  • 私有地址是一段保留的 IP 地址。只在局域网中使用,无法在互联网上使用。但是私有地址可以通过 NAT 技术,将私有地址转换为公网地址接入互联网。

公网 IP 地址在互联网范围内是唯一的,私有 IP 地址只要在同一个局域网内唯一即可。在不同局域网内出现相同的私有 IP 不会影响使用。

IP 路由

IP 路由是设备根据 IP 地址对数据进行转发的操作。当一个数据包到达路由器时,路由器根据数据包的目的地址查询路由表,根据查询结果将数据包转发出去,这个过程就是 IP 路由。

路由表

为了将数据包发给目的节点,所有节点都维护着一张路由表。路由表记录 IP 数据在下一跳应该发给哪个路由器。 IP 包将根据这个路由表在各个数据链路上传输。

路由表的生成方式有两种:一种是手动设置,也叫静态路由。另一种是路由器之间通过交换信息自动刷新,也叫动态路由

下一跳

Hop ,中文叫“跳”。它是指网络中的一个区间。 IP 包就是在网络中一跳一跳的转发,在每一个区间内决定 IP 包下一跳的路径。

一跳是指数据链路中广播域的区间,也就是说不经过路由器而能直接到达的相连主机或路由器网卡的一个区间。

路由条目类型

默认路由

默认路由是指路由表中任何一个地址都能与之匹配的条目。所有数据包都可以使用默认路由进行数据转发。默认路由为 0.0.0.0/0 或 default 。

主机路由

“ IP地址/32 ”被称为主机路由,它是路由表中指向单个 IP 地址或主机名的路由条目。例如: 192.168.153.15/32 就是一条主机路由,表示整个 IP 地址的所有位都将参与路由。

回环地址

以 127 开头的 IP 地址都是环回地址,其所在的回环接口可以理解为虚拟网卡。使用回环地址时,数据包会直接被主机的 IP 层获取,而不经过链路层,也不会流向网络。一般用来检查主机上运行的网络服务是否正常。

路由汇总

路由汇总主要是为了减少路由条目,把可以聚合的路由汇聚为一个大网络。

路由表越大,查找路由表所需的内存和 CPU 也就越多,时间也会越长,导致转发 IP 数据包的性能下降。如果想要搭建大规模、高性能的网络,就需要尽可能的控制路由表的大小。

IP 分片与重组

数据链路不同, MTU 则不同

每种数据链路的最大传输单元( MTU )不同,网络层的 IP 是数据链路的上一层, IP 通过分片屏蔽数据链路的差异,实现不同数据链路互通。从 IP 的上一层看,它完全可以忽略各个数据链路上的 MTU ,只需要按照源 IP 地址发送的长度接收数据包。
在这里插入图片描述

IP 报文的分片与重组

当遇到 IP 数据包大于数据链路 MTU 时,往往无法直接发送出去,主机或路由器就会对 IP 数据包进行分片处理。

经过分片后的 IP 数据,只会在目标主机上进行重组,中途经过路由器时不会进行重组。

在这里插入图片描述

路径MTU发现

分片机制有两点不足:

  • 加重路由器的处理性能;
  • 在分片传输中,一旦某个分片丢失,会造成整个 IP 数据包作废。

为了解决这个问题,要使用路径 MTU 发现( Path MTU Di scover y )技术。路径 MTU 是指从发送端主机到接收端主机之间不需要分片时最大 MTU值。即路径中存在的所有数据链路中最小的 MTU 。路径 MTU 发现是从发送主机按照路径 MTU 的值将数据报分片后进行发送,避免在中途的路由器上进行分片处理。

在这里插入图片描述
路径 MTU 发现的工作原理如下:

  1. 发送端主机发送 IP 数据包时将其头部的分片禁止标志位设置为 1 。根据这个标志位,途中的路由器即使收到需要分片的大包,也不会分片,而是直接将包丢弃。之后通过一个 ICMP 不可达消息将数据链路上 MTU 值给发送端主机。

  2. 发送端主机根据收到的 MTU 值对数据包进行分片处理,再把 IP 数据包发送给相同的目的主机。如此重复,直到数据包被发送到目标主机为止没有再收到任何 ICMP ,就认为最后一次 ICMP 所通知的 MTU 即是一个合适的 MTU值。 MTU 值至少可以缓存约 10 分钟,在这 10 分钟内使用刚得到的 MTU,过了 10 分钟后就重新做一次路径 MTU 发现。

如果是在 TCP 的情况下,根据路径 MTU 的大小计算出最大段长度( MSS ),然后再根据这些信息进行数据包的发送。因此,在TCP 中如果使用路径 MTU 发现, IP 层则不会再分片。

路由器三层转发原理

路由器有多个端口,分别连接不同的数据链路。它通过识别目的 IP 地址的网络号,再根据路由表进行转发,路由表中有匹配的路由条目才会转发,无匹配的路由条目则直接丢弃。路由条目既可以手动设置静态路由,也可以通过路由协议自动生成动态路由。

路由器如何进行三层转发

当一台路由器收到一个数据包时,会执行如下步骤:

  • 对数据包进行解封装
    通过解封装,查看网络层头部信息的目的 IP 地址

  • 在路由表中查找匹配的路由条目
    查找匹配的路由条目,就需要将数据包的目的 IP 地址与各个路由条目的网段地址先进行二进制与( AND )运算,再将运算结果与路由条目的网段地址进行比较,若一致则该条目与目的 IP 地址相匹配。最后,与所有路由条目完成运算和比较,可得到一条或多条相匹配的路由条目。也可能没有匹配的路由条目,那么丢弃数据包。
    在这里插入图片描述

  • 从多个匹配项中选择掩码最长的路由条目。
    如果路由表中有多条路由条目都匹配数据包的目的 IP 地址,则路由器会选择掩码长度最长的路由条目,这种匹配方式称为最长匹配原则
    例如:10.1.3.10 的网络地址与 10.1.3.0/16 和 10.1.3.0/24 两项都匹配,这时应该选择匹配度最长的 10.1.3.0/24 。
    在这里插入图片描述

  • 将数据包按照相应路由条目进行转发
    路由条目中包含下一跳出接口。当路由器找到相应的路由条目后,它就会根据对应的下一跳和出接口,将数据包从出接口发送数据给下一跳设备。
    在这里插入图片描述

ARP

只要确定了 IP 地址,就可以向这个目标地址发送 IP 数据报文。但是在进行实际通信时,还要知道每个 IP 地址所对应的 MAC 地址。

地址解析协议,简称 ARP 协议。是根据目的设备的 IP 地址来查询对应 MAC地址的协议。

ARP 的工作原理

当主机 A 向同一个网段内的主机 C 发送数据,但是不知道主机 C 的 MAC地址。
在这里插入图片描述

  1. ARP 请求:主机 A 以主机 C 的 IP 地址为目的 IP 地址,以广播 MAC 地址为目的 MAC 地址,在同网段内发送这个广播报文,这个报文就叫 ARP 请求报文

    二层交换机不查看 IP 地址,根据目的 MAC 地址将报文除接收端口外的所有端口发送。 在这里插入图片描述

  2. ARP响应:主机 C 发现目的 IP 地址是自己的 IP 地址,于是主机 C 以自己 MAC 地址和 IP 地址作为源 MAC 地址和源 IP 地址,以主机 A 的MAC 地址和 IP 地址作为目的 MAC 地址和目的 IP 地址,发送响应报文给主机 A ,这个报文就叫== ARP 响应报文==。其它主机收到主机 A 的 ARP 请求报文,因为目的 IP 地址不是自己的 IP 地址,因此不会进行响应。

    当主机 A 在发送 ARP 广播请求报文时,二层交换机已经有主机 A 的 MAC地址表条目。当收到主机 C 发送的单播 ARP 响应报文时,二层交换机将报文从相应端口发送出去。并将主机 C 的 MAC 地址和对应端口记录到 MAC地址表中。
    在这里插入图片描述

  3. 更新 ARP 缓存表:主机 A 收到 ARP 响应报文后,将主机 C 的 IP 地址和 MAC 地址记录到 ARP 缓存表中。下次再向主机 C 发送数据时,直接将缓存的目的 MAC 地址进行封装。 在这里插入图片描述

当主机 A 向不同网段的主机 C 发送数据,但是不知道主机 C 的 MAC 地址。
在这里插入图片描述

  1. 主机 A 使用主机 C 的 IP 地址查询 ARP ,ARP 发现主机 C 不在同一个网段,需要通过默认网关(即默认路由的下一跳地址),但是没有网关 MAC地址;
    在这里插入图片描述

  2. 主机 A 先将发送给主机 C 的数据放入缓存中,然后发送 ARP 请求报文,主机 A 以网关 IP 地址为目的 IP 地址发送== ARP 广播请求报文==;
    在这里插入图片描述

  3. 路由器收到 ARP 广播请求报文后,将主机 A 的 MAC 地址和对应端口添加到自己的 MAC 表中,然后查看目的 IP 地址发现是请求自己的 MAC 地址,于是单播发送== ARP 响应报文==;
    在这里插入图片描述

  4. 主机 A 收到 ARP 响应报文后,将发送给主机 C 的数据封装网关 MAC 地址为目的 MAC 地址进行发送;
    在这里插入图片描述

  5. 路由器收到报文后,查看目的 IP 地址,是发送给主机 C 的,于是查询路由表从相应端口发送数据。由于没有主机 C 的 MAC 地址,路由器发送 ARP请求报文,源 MAC 地址和源 IP 地址替换为发送端口的MAC 地址和 IP 地址;
    在这里插入图片描述

  6. 主机 C 收到 ARP 请求报文后,添加路由器的端口和 MAC 地址到 MAC 地址表,单播发送 ARP 响应报文
    在这里插入图片描述
    7.路由器收到主机 C 的 MAC 地址后,将其添加到 MAC 地址表中。将主机 A发送给主机 C 的报文重新封装,以自己的 MAC 地址为源 MAC 地址,以主机 C 的 MAC 地址为目的 MAC 地址,发送给主机 C ;
    在这里插入图片描述

  7. 主机 C 收到主机 A 发送的数据,发送过程结束。

  8. 当主机 C 向主机 A 发送回复报文时,同主机 A 向主机 C 发送数据的步骤一致。

ARP 代理

如果 ARP 请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理 ARP 功能的设备就可以回答该请求,这个过程称作代理 ARP

代理 ARP 功能屏蔽了分离的物理网络,让用户使用起来,跟在同一个物理网络上一样。

免费 ARP

免费 ARP 是一种特殊的 ARP 请求,它并非通过 IP 找到对应的 MAC 地址,而是当主机启动的时候,发送一个免费 ARP 请求,即请求自己的 IP 地址的 MAC 地址。

与普通 ARP 请求报文的区别在于报文中的目标 IP 地址。普通 ARP 报文中的目标 IP 地址是其它主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP地址是自己的 IP 地址
在这里插入图片描述
免费 ARP 的作用:

  • 起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其它主机自己的 IP 地址和 MAC 地址。
  • 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
  • 可用于更新其它主机的 ARP 缓存表。如果该主机更换了网卡,而其它主机的ARP 缓存表仍然保留着原来的 MAC 地址。这时,通过免费的 ARP 数据包,更新其它主机的 ARP 缓存表。

ICMP

IP 提供尽力而为的服务,指为了把数据包发送到目的地址尽最大努力。它并不做对端目的主机是否收到数据包的验证,无法保证服务质量。

==ICMP(互联网控制消息协议)==是提供这类功能的一种协议。ICMP 的主要功能包括,确认 IP 包是否成功送达目的地址,通知发送过程中 IP 包被丢弃的原因。

ICMP 报文像 TCP/UDP 一样通过 IP 进行传输,但是 ICMP 的功能不是传输层的补充,应该把它当做网络层协议。

ICMP 头部封装字段如下图。
ICMP 头部
通过类型字段编码字段的取值判断这个 ICMP 消息的类型。常见的 ICMP消息所对应的类型和编码值如下图。
ICMP类型和编码值
从功能上,ICMP 的消息分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息
ICMP消息类型

ping

我们常用的 ping 工具就是通过 ICMP 消息测试网络层连通性的。源主机发出Echo request 消息,目的主机回应 Echo repl y 消息,则两台主机间的网络层通信正常。也可以通过 ping 命令来判断目标主机是否启用。
ping

IPv4 头部

IP 提供最简单的服务:实现从源到目的的数据转发。不会在传输数据前先与接收方建立连接,也不保证传输的可靠性,它只提供尽力而为的服务。

IP 通信时传输的是== IP 报文==, IP 报文由 IP 头部和数据两部分组成。 IP 头部包含控制报文转发的必要信息。通过 IP 头部的结构,可以对 IP 的功能有一个详细的了解。
在这里插入图片描述

什么是字节?什么是比特?

比特,英文名 bit ,也叫位。二进制中最小单位,一个比特的值要么是 0 要么是 1 。

字节,英文名 By te 。一个字节由八个比特构成。

  • 版本( Ver sion )
    字段长度为 4 比特,表示 IP 的版本号。IPv4 的版本号是 4 ,所以这个字段的值也是 4 。常见的版本号有 IPv4 和 IPv6 。

  • 头部长度( IHL:Internet Header Length )
    字段长度为 4 比特,表示 IP 头部大小,单位是 4 字节( 32 比特)。没有可选项的 IP 包,头部长度为 5 ,即 20 字节( 4 × 5 = 20 )。

  • 区分服务( TOS:Type Of Service )
    字段长度为 8 比特,用来说明数据是要加速传输还是精确传输,以及数据在传输过程中是否遇到了拥塞。

  • 总长度( Total Length )
    字段长度为 16 比特,表示 IP 头部和数据加起来的总字节数。 IP 包的最大长度为 65535 字节。

  • 标识( ID:Identifi cation )
    字段长度为 16 比特,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个 IP 包,它的值也逐渐递增。另外,即使 ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。

  • 标志( Flags )
    字段长度为 3 比特,表示分片信息。每比特的具体含义如下表。

    比特位含义
    0未使用。现在必须是0
    1表示是否进行分片 0 - 可以分片 1 - 不能分片
    2被分片时,表示是否为最后一个包 0 - 最后一个分片的包 1 - 分片中断的包
  • 分片偏移( FO:Fragment Off set )
    字段长度为 13 比特,表示分片在整个数据包中的位置。作用是告诉重组分片的设备,应该按照什么样的顺序重组数据包。

  • 生存时间( TTL:Time To Li ve )
    字段长度为 8 比特,表示数据包可以经过的中转路由器数量。每经过一个路由器, TTL 会减少 1 ,直到变成 0 则丢弃改包,避免数据包在网络中无限传递。

  • 协议( Protocol )
    字段长度为 8 比特,表示 IP 上一层所使用的协议。常见的 IP 上层协议有TCP 和 UDP 。
    协议

  • 头部校验和( Header Checksum )
    字段长度为 16 比特,用来校验数据包的头部是否被破坏。设备会丢弃校验失败的数据包。 IPv6 以取消头部校验和字段,通过上层的 TCP 或 UDP 校验协议是否正确。

  • 源地址( Sour ce Address )
    字段长度为 32 比特( 4 字节),表示发送端 IP 地址。

  • 目的地址( Des tination Address )
    字段长度为 32 比特( 4 字节),表示接收端 IP 地址。

  • 可选项( Options )
    这个字段很少使用,在 IPv6 协议中已经取消。

  • 填充( Padding )
    在有可选项的情况下, 头部长度不是 32 比特的整数倍时,通过向字段填充0 ,调整为 32 比特的整数倍。

  • 数据( Data )
    IP 数据字段,用于存放数据。把 IP 上一层协议的头部也作为数据进行处理。

路由协议

路由协议

路由的概念

在 TCP/IP 通信中,网络层的作用是实现终端的点对点通信。IP 协议通过 IP地址将数据包发送给目的主机,能够让互联网上任何两台主机进行通信。IP 地址可以识别主机和路由器,路由器可以把全世界的网络连接起来。
在这里插入图片描述

什么是路由器

路由器可以连接多个网络。它有多个端口,分别连接不同的网络区域。通过识别目的 IP 地址的网络号,再根据路由表进行数据转发。路由器会维护一张路由表,通过路由表的信息,路由器才能正确的转发 IP 报文。
路由器表

什么是路由

路由是网络设备根据 IP 地址对数据进行转发的操作。当路由器收到一个数据包时,它根据数据包的目的 IP 地址查询路由表,如果有匹配的路由条目,就根据查询结果将数据包转发出去,如果没有任何匹配的路由条目,则将数据包丢弃,这个过程就是 IP 路由。除了路由器,三层交换机、防火墙、负载均衡设备甚至主机等设备都可以进行路由操作,只要这个设备支持路由功能
路由

什么是路由表

为了将数据包发给目的节点,所有节点都维护着一张路由表。==路由表是路由器通过各种途径获得的路由条目,每一个条目包含的网段地址 / 子网掩码、路由协议,出接口、下一跳 IP 地址、路由优先级和度量值等信息。==路由表记录 IP 包在下一跳应该发给哪个路由器。 IP 包根据路由表在各个数据链路上传输。
路由表

路由表来源

一个实际的网络中,一台路由器通常包含多条路由条目,这些路由条目从不同的来源获取。路由表的来源可分为三类,分别是直连路由静态路由动态路由

  • 直连路由:路由器直接连接的路由条目,只要路由器接口配置了 IP 地址,接口状态正常,就会自动生成对应的直连路由。
    直连路由
  • 静态路由:通过命令手动添加的路由条目就是静态路由。
    静态路由
  • 动态路由:通过路由协议从相邻路由器动态学习到的路由条目。
    动态路由

路由优先级

不同来源的路由有不同的优先级,优先级的值越小,则路由的优先级就越高。当存在多条目的网段相同,但来源不同的路由时,具有最高优先级的路由成为最优路由,将被加入到路由表中,而其它路由则处于未激活状态,不显示在路由表中。

路由协议的默认优先级如下:
路由优先级

路由环路

路由环路是数据转发形成死循环,不能正确到达目的地。
路由环路
路由环路的主要生成原因是配置错误的路由网络规划错误导致。比如:在两台路由器上配置到相同目的地址的路由表项,下一跳互相指向对方,就会造成路由环路。另外某些动态路由协议配置不当,也有可能产生环路。

黑洞路由

一条路由条目,无论是静态的还是动态的,都需要关联到一个出接口,出接口指的是设备要到达目的网络是的出站接口。路由的出接口可以是这个设备的物理接口,如千兆网口,也可以是逻辑接口,如 VLAN 接口,或者是隧道接口等。其中有一种接口非常特殊,那就是 Null 接口,只有一个编号,那就是 0 。Null0 是一个系统保留的逻辑接口,当网络设备在转发数据包时,如果使用出接口 Null0 的路由,那么数据包将被丢弃,就像被扔进了一个黑洞里,因此出接口为 Null0 的路由条目又被称为黑洞路由
黑洞路由
黑洞路由是一种非常有用的路由条目,适用于如下场景:

  • 在网络使用中,按需将数据包指向黑洞路由,实现流量过滤。
  • 在已经部署路由汇总的网络中,用于防止数据转发出现环路。
  • 在部署了 NAT 的网络中,用于防止数据转发出现环路。
  • 在 BGP 网络中,用于发布特定网段的路由。

动态路由协议

静态路由是手动添加完成的。如果有 100 个网段,一个路由器就需要设置将近100 条路由信息。网络使用过程中,不可避免的出现网段新增、删除、修改等情况,这些更新的路由信息需要在所有路由器上进行设置。还有一个不可忽视的问题,一旦某个路由器出现故障,数据传输无法自动绕过故障节点,只能通过手动设置才能恢复正常。
静态路由
如果是使用动态路由,提前设置好路由协议,路由器之间会定期交换路由信息,路由器会知道网络中其它网段的信息,动态生成路由表。如果网络出现变化,网段需要增删改时,只需要在相应的路由器上配置动态路由即可。不需要像静态路由那样,在所有路由器上进行修改。对于大型网络,路由器个数较多时,主要使用动态路由协议。
动态路由
即使网络上的节点出现故障,只要有一个可绕行的其它路径,那么路由器的路由表会自动重新设置,数据包也会自动选择这个路径。

采用路由协议后,网络拓扑结果变化的响应速度会大大提升。无论网络正常的增删改,还是异常的网络故障,相邻的路由器都会检测到变化,会把拓扑的变化通知网络中其它的路由器,使它们的路由表产生相应的变化。这个过程比手动对路由表的修改要快很多,也准确很多。

对于少于 10 个路由器的小型网络,静态路由或许已经能够满足需求,但是在大中型网络中,通常会使用动态路由协议,或者动态路由与静态路由协议相结合的方式来建设这个网络

动态路由协议基本原理

路由器之间需要运行相同的路由协议,才能相互交换路由信息。每种路由协议都有自己的语言,即相应的路由协议报文。如果两台路由器启动了相同的路由协议,那么就有了相互通信的基础不同的路由协议,有相同的目的,就是计算和维护路由表。通常工作过程包含 4 个阶段:

  • 邻居发现阶段:运行了路由协议后,路由器会主动把自己的网段信息发送给相邻的路由器。既可以使用广播发送路由协议消息,也可以单播将路由协议消息发送给指定的邻居路由器
  • 交换路由信息阶段:发现邻居后,每台路由器都将自己的路由信息发送给相邻的路由器,相邻路由器又发送给下一个相邻的路由器。经过一段时间后,每台路由器都会收到网络中所有的路由信息。
  • 计算路由阶段:每一台路由器都会运行某种算法,计算出最终的路由表来。
  • 维护路由阶段:为了感知突然发送的网络故障,比如:设备故障或线路中断等,路由协议规定相邻两台路由器之间,应该周期性发送协议报文。如果路由器在一段时间内,没收到邻居发来的协议报文,就认为邻居路由器失效。
    动态路由原理

自治系统

随着 IP 网络的发展,网络规模已经很大了,无论哪种路由协议都不能完成全网的路由计算,因此网络分成了很多个自治系统( AS , Autonomous System)路由选择域 ( Routing Domain )。自治系统可以制定自己的路由策略,并管理自治系统内进行具体路由控制的路由器集合。

每个自治系统都有一个唯一的自治系统编号,它的基本思路是希望通过不同的编号来区分不同的自治系统。通过路由协议和自治系统编号,路由器可以确定路由路径和路由信息的交换方式。某个自治系统缺乏足够的安全机制,就可以利用编号改变路径回避它。

自治系统的编号范围是 1 ~ 65535 ,其中 1 ~ 64511 是注册的因特网编号, 64512 ~ 65535 是专用网络编号。

自治系统

EGP 和 IGP

自治系统(路由选择域)内部动态路由使用的协议是域内路由协议,即== IGP== 。而自治系统之间的路由控制使用的是域间路由协议,即 EGP

IGP 和 EGP 的关系,跟 IP 地址网络号和主机号的关系类似。根据 IP 地址的网络号在网络中进行路由选择,根据主机号在网段内部进行主机识别一样。既可以根据 EGP 在区域网络之间进行路由选择,也可以根据 IGP 在区域网络内部进行主机识别

路由协议被分为 EGP 和 IGP 两个层次。没有 EGP 就不可能有世界上各个不同机构网络之间的通信,没有 IGP 机构内部也就不可能进行通信。

IGP 是指在同一个自治系统内交换路由信息的路由协议。RIPRIP2OSPF 属于 IGP 。IGP 的主要目的是发现和计算自治系统内的路由信息。

EGP 与 IGP 不同,EGP 用于连接不同的自治系统,并在不同自治系统间交换路由信息。EGP 的主要目的是使用路由策略和路由过滤等手段,控制路由信息在自治系统间的传播。BGP 属于 EGP

动态路由协议类型

按照路由的算法和路由信息的交换方式,路由协议可以分为距离矢量(Di stance-Vec tor ,D-V )路由协议和链路状态( Link-State )路由协议。其中典型的距离矢量协议是 RIP ,典型的链路状态协议是 OSPF

距离矢量路由协议

距离矢量路由协议指的是基于距离矢量的路由协议,RIP 是最具代表性的距离矢量路由协议。距离矢量这个概念包含两个关键的信息:距离和方向,其中距离是指到达目的网络的度量值(即所要经过路由器的个数),而方向指的是到达目的网络的下一跳设备。
距离矢量路由协议
每一台运行距离矢量路由协议的路由器会周期性的将自己的路由表通告出去,相邻的路由器收到路由信息并更新自己的路由表,再继续向其它直连的路由器通告路由信息,最终网络中的每台路由器都能知道各个网段的路由,这个过程称为路由的泛洪过程。
在这里插入图片描述
路由器之间互换目的网络的方向和距离的信息,并以这些信息更新路由表。这种方法在处理上比较简单,不过由于只有距离和方向的信息,所以当网络构造变得复杂时,在获得稳定的路由信息之前需要消耗一定时间(即路由收敛时间长),也极易发生路由循环等问题。

链路状态路由协议

运行链路状态路由协议的路由器会使用一些特殊的信息描述网络的拓扑结构和IP 网段,这些信息被称为链路状态信息( LSA ),所有路由器都会产生自己直连接口的链路状态信息。
链路状态路由协议
路由器将网络中泛洪的链路状态信息搜集起来,存入一个数据库中,这个数据库就是 LSDB (链路状态数据库),LSDB 是对整个网络的拓扑结构及 IP 网段的描述,路由器拥有相同的 LSDB 。对于任何一台路由器,网络拓扑都完全一样。
LSDB
接下来所有的路由器都基于 LSDB 使用最短路由优先算法进行计算,得到一棵已自己为根的、无环路的最短路径树,并将得到的路由加载到路由表中。
LSDB 算法
链路状态算法使用增量更新机制,只有当链路的状态发生变化时,才发送路由更新信息。

相比距离矢量路由协议,链路状态路由协议具有更大的扩展性和更快的收敛速度,但是它的算法消耗更多的内存和 CPU 处理能力。

路由协议的性能指标

不同的路由协议,有不同的特点。各个路由协议的性能指标体现如下:

  • 协议计算的正确性:是指路由协议的算法会不会产生错误的路由导致网络环路。不同的路由协议使用的算法不同,因此路由正确性也不相同。链路状态路由协议(如 OSPF )在算法上杜绝了产生路由环路的可能性,比距离矢量路由协议更优。
  • 路由收敛速度:路由收敛是指全网路由器的路由表达到一致状态。收敛速度快,意味着网络拓扑结构发生变化时,路由器能够更快的感知,并及时更新相应的路由信息。OSPF 、BGP 等协议的收敛速度快于 RIP 。
  • 协议所占的系统开销::路由器在运行路由协议时,需要消耗的系统资源,比如:CPU 、内存等。工作原理的不同,各个路由协议对系统资源的需求也不同。OSPF 路由技术的系统开销要大于 RIP 协议。
  • 协议自身的安全性:是指协议设计时,有没有考虑防止网络攻击。OSPF 、RIPv2 有相应的防止攻击的认证方法,而 RIPv1 没有。
  • 协议适用网络规模:不同路由协议所适用的网络规模、拓扑结构不同。RIP 协议有 16 跳的限制,所以只能应用在较小规模的网络中;而 OSPF 可以应用在几百台路由器的大规模网络中;BGP 能够管理全世界所有的路由器,其所管理的网络规模大小只受系统资源的限制。

主要路由协议

各种路由协议都需要使用 IP 来进行报文封装,但其细节有所不同。

RIP 协议是最早的路由协议,是为小型网络中提供简单易用的动态路由。RIP协议报文采用 UDP 封装,端口号是 520 。由于 UDP 是不可靠的传输层协议,所以 RIP 协议需要周期性的广播协议报文来确保邻居收到路由信息。

OSPF 是目前应用最广泛的路由协议,可为大中型网络提供分层的、可靠的路由服务。OSFP 直接采用 IP 进行封装,所有协议报文都由 IP 封装后进行传输,协议号是 89 。IP 是尽力而为的网络层协议,本身是不可靠的,所以为了保证传输的可靠性,OSPF 采用了复杂的确认机制来保证传输可靠。

BGP 采用 TCP 来保证协议传输的可靠性,TCP 端口号是 179 。BGP 不需要自己设计可靠传输机制,降低了协议报文的复杂度和开销。

路由协议
几种主要的路由协议表如下:
路由协议表

传输层

初识传输层

传输层的作用是建立应用程序间的端到端连接,为数据传输提供可靠或不可靠的通信服务。传输层有两个重要协议,分别是 TCP 和 UDP。TCP是面向连接的可靠传输协议UDP 是无连接的不可靠传输协议
传输层
一个 IP 地址可以标识一台主机,IP 报文头部有一个字段,用来标识上层协议类型。根据这个字段的协议号,来识别 IP 传输的数据是 TCP 还是 UDP 。IP 用协议号 6 标识 TCP ,用协议号 17 标识 UDP 。但一台主机可能同时有多个程序,传输层的 TCP 和 UDP ,为了识别上一层的应用程序类型,使用端口号来识别具体的程序,从而使这些程序可以复用网络通道。
传输层协议号
二层的帧通信和三层的包通信都是无连接的、不可靠的通信方式,四层的 TCP却是一种可靠的通信方式。如果帧在传输中丢失,通信双方的二层功能模块发现不了;如果包在传输中丢失,通信双方的三层功能模块发现不了。但是,一个TCP 段丢失了,TCP 模块一定能够发现。一个 TCP 段的丢失,意味着一个IP 包的丢失,因为 TCP 段是封装在 IP 包里的;同理,一个 IP 包的丢失,意味着一个帧的丢失。因此,二层和三层通信的不可靠性在 TCP 这里得到补充
TCP传输
应用程序其实就是 TCP/IP 的应用协议,应用协议大多以客户端/服务端的形式运行。客户端( Client ,使用服务的一方。)是请求的发起端。而服务端(Server ,提供服务的程序或主机。)则是请求的处理端。作为服务端的程序有必要提前启动,随时准备接收客户端的请求。否则即使有客户端的请求发过来,也无法进行处理。
客户端/服务端
确认一个请求究竟是发给哪一个服务端,可以通过收到数据包的目的端口号轻松识别。当收到 TCP 的建立连接请求时,如果目的端口号是 22 ,则转给SSH ,如果是 80 则转给 HTTP 。

TCP

TCP 是面向连接的、可靠的流协议。流就是不间断的数据,当应用程序采用TCP 发送消息时,虽然是按顺序发送,但接收端收到是没有间隔的数据流。比如,在发送端应用程序发送了 10 次 100 字节的数据,那么在接收端,应用程序可能会收到一个 1000 字节连续不间断的数据。
TCP
TCP 为提供可靠性传输,实行顺序控制、重发控制机制。此外还有流量控制、拥塞控制、提高网络利用率等众多功能。

UDP

UDP 是不具有可靠性的协议,可靠性功能交给上层的应用去完成。UDP 虽然可以确保发送数据的大小,比如:发送端应用程序发送一个 100 字节的消息,那么接收端应用程序也会以 100 字节为长度接收数据。但不能保证数据一定会到达。因此,应用有时会根据需要进行重发处理。

TCP 和 UDP 的区别

其实不然,TCP是面向连接的,并且具备顺序控制、重发控制等机制,可以为应用提供可靠传输。而 UDP主要用于对高速传输和实时性有较高要求的通信。比如:通过 IP 电话进行通话。如果使用 TCP ,数据如果丢失会重发,这样就无法流畅地传输通话的声音,导致无法进行正常交流。而采用 UDP ,它不会进行重发处理。也就不会有声音大幅度延迟到达的问题。即使有部分数据丢失,也只会影响小部分的通话。因此,TCP 和 UDP 需要根据应用的目的选择使用

端口号

数据链路层和网络层的地址,分别是 MAC 地址和 IP 地址。MAC 地址用来标识同一网段中不同的设备,IP 地址标识网络中的主机或路由器。传输层的地址就是端口号,端口号用来识别同一台主机中不同的应用程序,也被称为程序地址

一台主机可以同时运行多个程序,比如 www 服务的 Web 浏览器、电子邮箱客户端等程序都可同时运行。传输层协议正是利用这些端口号,识别主机正在进行通信的应用程序,并准确的传输数据。
端口号
仅仅通过目的端口来识别某一个通信是不准确的。两台主机访问的目的端口号80 相同,可以根据源端口号区分这两个通信。

目的端口号和源端口号相同,但是两台主机的源 IP地址不同;IP 地址和端口号都一样,只是协议号不同。这些情况,都会认为是两个不同的通信。

因此,网络通信中通常采用 5 个信息来识别一个通信。它们是源 IP 地址目的 IP 地址协议号源端口号目的端口号。只要其中一项不同,就会认为是不同的通信。
通信识别
TCP/UDP 的端口号是一个 16 位二进制数,端口号范围为 0 ~ 65535 。在实际进行通信时,要事先确定端口号。确定端口号的方法分为两种:

  • 标准端口号
    这种方法也叫静态方法。它是指每个应用程序都有指定的端口号。HTTP 、SSH 、FTP 等常用的应用程序所使用的端口号是固定的,这些端口号又称为知名端口号。知名端口号范围是 0 ~ 1023 。
    除了知名端口号外,还有一些端口号也被正式注册,称为注册端口。它们分布在 1024 ~ 49151 之间。

  • 时序分配法
    这种方法也叫动态分配法。服务端有必要确定监听的端口号,但是接受服务的客户端不需要确定端口号

    客户端应用程序不用设置端口号,由操作系统进行分配。操作系统可以为每个应用程序分配不冲突的端口号。比如:每需要一个新的端口号时,就在之前分配号码的基础上加 1 。这样,操作系统就可以动态管理端口号了。

    动态分配的端口号范围是 49152 ~ 65535 之间。

UDP

UDP ,全称 User Datagram Protocol 。UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的、不可靠的通信服务。并且它是将应用程序发来的数据,在收到的那一刻,立即按照原样发送到网络上的一种机制。

即使在网络出现拥堵的情况下,UDP 也无法进行流量控制。传输途中出现丢包,UDP 也不负责重发。当出现包的到达顺序错误时也没有纠正的功能。如果需要这些细节控制,那么需要交由上层的应用程序去处理。也可以说,是损失信息传输的可靠性来提升信息传输的效率

UDP 的特点如下:

  • UDP 是无连接的:UDP 发送数据前不与对方建立连接。
  • UDP 不对数据进行排序:UDP 报文的头部没有数据顺序的信息。
  • UDP 对数据不发送确认,发送端不知道数据是否被正确接收,也不会重发数据。
  • UDP 传送数据比 TCP 快,系统开销也少。
  • UDP 缺乏拥塞控制机制,不能够检测到网络拥塞。

由于 UDP 面向无连接,它可以随时发送数据。再加上 UDP 本身的处理既简单又高效,因此常用于以下几个方面:

  • 包总量较少的通信( DNS 、SNMP 等)
  • 视频、音频等多媒体通信(即时通信)
  • 只在局域网使用的应用通信
  • 广播通信(广播、多播)

TCP

TCP 是对传输、发送、通信进行控制的协议。主要特点如下:

  • 三次握手建立连接:确保连接建立的可靠性。
  • 端口号:通过端口号识别上层协议和服务,实现网络的多路复用。
  • 完整性校验:通过计算校验和,保证接收端能检测出传输过程中可能出现的错误。
  • 确认机制:对于正确收到的数据,接收端通过确认应答告知发送方,超出一定时间后,发送方将重传没有被确认的段,确保传输的可靠性。
  • 序列号:发送的数据都有唯一的序列号,标识了每一个段。接收端可以利用序列号实现丢失检测、乱序重排等功能。
  • 窗口机制:通过可调节的窗口,TCP 接收端可以告知希望的发送速度,控制数据流量。

TCP 实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序错误的分包进行顺序控制。作为一种面向有连接的协议,只有在确定对端存在时,才会发送数据,从而可以控制通信流量的浪费。由于 UDP 没有连接控制,即使对端不存在或中途退出网络,数据包还是能够发送出去。

  • 连接
    连接是指网络中进行通信的两个应用程序,为了相互传递消息而专有的、虚拟的通信线路,也叫做虚拟电路

    一旦建立了连接,进行通信的应用程序只使用这个虚拟线路发送和接收数据,就可以保障信息的传输。应用程序可以不用考虑 IP 网络上可能发生的各种问题,依然可以转发数据。TCP 则负责连接的建立、断开、保持等管理工作。
    连接
    为了在不可靠的 IP 通信实现可靠性传输,需要考虑很多事情,数据的破坏、丢包、重复以及分片顺序混乱等问题。TCP 通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输

序列号和确认应答

在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到的消息。这个消息叫做确认应答( ACK )
确认应答
TCP 通过确认应答实现可靠的数据传输。当发送端将数据发出后,会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。否则,数据可能已经丢失。

在一定时间内没有等到确认应答,发送端会认为数据已经丢失,并进行重发。这样,即使有丢包,仍能保证数据到达对端,实现可靠传输。
重发间隔
未收到确认应答,不一定是数据丢失。也可能对端已经收到数据,返回的确认应答在途中丢失,也会导致发送端重发。此外,也可能确认应答延迟到达,发送端重发数据后才收到。
重发间隔
每一次传输数据时,TCP 都会标明段的起始序列号,以便对方确认。在 TCP中并不直接确认收到哪些段,而是通知发送方下一次应该发送哪一个段,表示前面的段已经收到。比如:收到的确认应答序列号是 N + 1 时,表示 N 以及 N之前的数据都收到了。
序列号
由于每一个段都有唯一的编号,这样的话,当接收端收到重复的段时容易发现,数据段丢失后也容易定位,乱序后也可以重新排列。

超时重发

超时重发是指在重发数据之前,等待确认应答到来的那个间隔时间。如果超过RTT(往返时间),仍未收到确认应答,发送端将进行数据重发。
超时重发
数据被重发后,若还收不到确认应答,则再次发送。这时,等待确认应答的时间将会以 2 倍、4 倍的指数函数增长。数据也不会无限地重发,达到一定的重发次数后,还没收到确认应答,就会认为网络或对端主机发送异常,强制关闭连接,并通知应用通信异常强行终止。

RTT 时间是一个非常重要的参数。过大的 RTT 会导致 TCP 重传非常慢,降低传输的速度;过小的 RTT 会导致 TCP 频繁重传,降低资源的使用效率。在实际情况下,通过实时跟踪数据往返的时间间隔来动态调整 RTT 的数值。

连接管理

TCP 提供面向有连接的通信传输,面向有连接是指在数据通信前做好通信两端的准备工作。在数据通信前,发送一个 SYN 包作为建立连接的请求。如果对端发来确认应答,则认为可以开始数据通信。如果对端的确认应答未能到达,就不会进行数据通信。在通信结束时,会使用 FIN 包进行断开连接的处理。

SYN 包和 FIN 包是通过 TCP 头部的控制字段来管理 TCP 连接。一个连接的建立与断开,正常过程至少需要来回发送 7 个包才能完成建立一个 TCP连接需要发送 3 个包,这个过程叫作三次握手断开一个 TCP 连接需要发送4 个包,这个过程也称作四次挥手。创建一个 TCP 连接,会产生一个 32 位随机序列号,因为每一个新的连接使用一个新的随机序列号
三次握手 四次挥手

三次握手

主机 A 想向主机 B 发送数据,TCP 模块通过三次握手建立连接 TCP 会话。

三次握手,是指 TCP 会话建立过程中共交换了 3 个 TCP 控制段,它们分布是 SYN 段、SYN + ACK 段、ACK 段。详细过程如下:
三次握手

  1. 发送端主机 A 向接收端主机 B 发出 SYN 段,表示发起建立连接请求,同时把自己的状态告诉主机 B 。将段的序列号设为 a ,SYN 置位,表示 SYN管理段。
  2. 主机 B 收到连接请求后,回应 SYN + ACK 段,将序列号设为 b ,确认号设为 a + 1 ,同时将 SYN 和 ACK 置位。
  3. 主机 A 收到主机 B 的连接确认后,发送 ACK 段再次进行确认,确认会话的建立,将 ACK 置位。主机 A 收到确认号是 a + 1 、序列号是 b 的段后,发送序列号为 a + 1 、确认号为 b + 1 的段进行确认。
  4. 主机 B 收到确认报文后,连接建立。双方可以开始传输数据。

经过 3 次握手后,A 和 B 之间其实是建立了两个 TCP 会话一个是从 A 指向 B 的 TCP 会话,另一个是从 B 指向 A 的 TCP 会话。A 发送的 SYN段,表示 A 请求建立一个从 A 指向 B 的 TCP 会话,目的是控制数据能够正常、可靠的从 A 传输到 B 。B 在收到 SYN 段后,会发送一个 SYN +ACK 段作为回应。SYN + ACK 的含义是:B 一方面同意了 A 的请求,另一方面也请求建立一个从 B 指向 A 的 TCP 会话,这个会话目的是控制数据能够正确、可靠的从 B 传输到 A 。A 收到 SYN + ACK 段后,回应一个 ACK,表示同意 B 的请求。

四次挥手

当 TCP 数据段的传输结束时,双方都需要发送 FIN 段和 ACK 段来终止TCP 会话。这个方式叫做四次挥手,详细过程如下:
四次挥手

  1. 主机 A 想要终止连接,发送序列号为 p 的段,FIN 置位,表示 FIN 管理段。
  2. 主机 B 收到主机 A 发送的 FIN 段后,发送 ACK 段,确认号为 p + 1 ,同时关闭连接。
  3. 主机 B 发送序列号为 q的段,FIN 置位,通知连接关闭。
  4. 主机 A 收到主机 B 发送的 FIN 段后,发送 ACK 段,确认号为 q + 1 ,同时关闭连接。TCP 连接至此结束。

TCP 会话的终止分为两个部分。首先 A 发送 FIN 控制段,请求终止从 A 到 B 的 TCP 会话。B 回应 ACK 段,表示同意 A 的终止会话请求。A 收到 B的 ACK 段后,才开始终止这个会话。同理,B 也会向 A 发起请求,终止从 B到 A 的 TCP 会话。

单位段

经过传输层协议封装后的数据称为段。在建立 TCP 连接时,可以确定数据段的大小,也就是最大消息长度( MSS )。TCP 在传输大量数据时,是以 MSS的大小将数据进行分割发送,重发也是以 MSS 为单位。
单位段
MSS 是在三次握手时,由两端主机计算出来的。两端主机在发出建立连接的请求时,会在 TCP 头部写入 MSS 值。然后在两者间选择较小的值使用。MSS默认值为 536 字节,理想值是 1460 字节,加上 IP 头部 20 字节和 TCP头部 20字节,刚好在 IP 层不会被分片。
MSS

窗口控制

TCP 是以 1 个段为单位,每发一个段进行一次确认应答。如果包的往返时间越长,通信性能就越低。

为解决这个问题,TCP 引入了窗口的概念。确认应答不再是每个分段,而是以窗口的大小进行确认,转发时间被大幅度的缩短窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值。窗口大小是一个 16 位字段,因此窗口最大是 65535 字节。在 TCP 传输过程中,双方通过交换窗口的大小来表示自己剩余的缓冲区( Buffer )空间,以及下一次能够接受的最大数据量,避免缓冲区的溢出
窗口控制
发送数据中,窗口内的数据即使没有收到确认应答也可以发送出去。如果窗口中的数据在传输中丢失,也需要进行重发。因此,发送端主机在收到确认应答前,必须在缓冲区保留这部分数据。

收到确认应答后,将窗口滑动到确认应答中的序列号位置。这样可以按顺序将多个段同时发送,这种机制也被称为滑动窗口控制

滑动窗口控制

窗口控制和重发控制

在使用窗口控制时,如果出现确认应答未能返回的情况,数据已经到达对端,是不需要再进行重发的。然而,在没有使用窗口控制时,没收到确认应答的数据是会重发的。而使用了窗口控制,某些确认应答即使丢失也无需重发。
窗口控制
如果某个报文段丢失,接收主机收到序号不连续的数据时,会为已经收到的数据返回确认应答。即使接收端收到的包序号不是连续的,也不会将数据丢弃,而是暂时保存至缓冲区。出现报文丢失时,同一个序号的确认应答将会被重复发送。如果发送端收到连续 3 次同一个确认应答,就会将对应的数据进行重发。这种机制比超时管理更高效,也被称为高速重发机制
高速重发

流控制

接收端处于高负荷状态时,可能无法处理接收的数据,并丢弃数据,就会触发重发机制,导致网络流量无端浪费。

为了防止这种情况,TCP 提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量,这就是流控制。它的具体操作是,接收端主机通知发送端主机自己可以接收数据的大小,于是发送端会发送不超过这个限度的数据。这个限度的大小就是窗口大小。

TCP 头部中有一个字段用来通知窗口大小。接收主机将缓冲区大小放入这个字段发送给接收端。当接收端的缓存不足或处理能力有限时,窗口大小的值会降低一半,从而控制数据发送量。也就是说,发送端主机会根据接收端主机的指示,对发送数据的量进行控制,也就形成了一个完整的 TCP 流控制。

若接收端要求窗口大小为 0 ,表示接收端已经接收全部数据,或者接收端应用程序没有时间读取数据,要求暂停发送。
流控制
如果窗口更新的报文丢失,可能会导致无法继续通信。为避免这个问题,发送端主机会时不时的发送一个叫窗口探测的数据段,此数据段仅含一个字节以获取最新的窗口大小信息。

拥塞控制

有了 TCP 的窗口控制,收发主机之间不再以一个数据段为单位发送确认应答,也能够连续发送大量数据包。在网络出现拥堵时,如果突然发送一个较大量的数据,有可能会导致整个网络瘫痪。

为了防止这个问题出现,在通信开始时,就会通过一个叫慢启动的算法得出的数值,对发送数据量进行控制。
拥塞控制
为了在发送端调节发送数据的量,需要使用拥塞窗口。在慢启动时,将拥塞窗口的大小设置为 1 MSS 发送数据,之后每收到一次确认应答( ACK ),拥塞窗口的值就加 1 。在发送数据包时,将拥塞窗口的大小与接收端主机通知的窗口大小做比较,选择它们当中较小的值发送数据。这样可以有效减少通信开始时连续发包导致网络拥堵,还可以避免网络拥塞的发生。

对比 TCP 和 UDP

TCP和UDP 的差异

UDP 格式

UDP 段由 UDP 头部和 UDP 数据组成。UDP 头部有源端口号、目的端口号、长度、校验和组成,UDP 头部长度为固定的 8 字节。
UDP格式

  • 源端口号:字段长 16 位,表示发送端 UDP 端口号。
  • 目的端口号:字段长 16 位,表示接收端 UDP 端口号。
  • 长度:字段长 16 位,表示 UDP 头部和 UDP 数据的总长度。
  • 校验和:字段长 16 位,是错误检查的字段,包括 UDP 头和 UDP 数据的内容计算得出,用于检查传输过程中出现的错误。

TCP 格式

TCP 头部比 UDP 头部复杂得多,由一个 20 字节的固定长度加上可变长的选项字段组成。
TCP格式

  • 源端口号:字段长 16 位,表示发送端 TCP 端口号。

  • 目的端口号:字段长 16 位,表示接收端 TCP 端口号。

  • 序列号:字段长 32 位,是指 TCP 段数据的位置序号。根据序列号来判断是否存在重收、漏收、乱序等情况。

  • 确认号:字段长 32 位,是指下一次应该收到的数据的序列号。收到这个确认号,表示这个确认号之前的数据都已经正常收到。

  • 数据偏移:字段长 4 位,表示 TCP 数据从哪一位开始计算,也可以看作TCP 头部的长度。

  • 保留:字段长 6 位,保留给以后扩展使用。

  • 控制位:字段长 6 位,每 1 位标志位可以打开一个控制功能,也叫做控制位。从左到右分别是 URG 、ACK 、PSH 、RST 、SYN 、FIN。

    • URG:标志位为 1 时,表示有需要紧急处理的数据。
    • ACK:标志位为 1 时,表示确认应答有效。
    • PSH:标志位为 1 时,表示将数据立即上传给应用程序,而不是在缓冲区排队。
    • RST:标志位为 1 时,表示 TCP 连接出现异常,必须强制断开连接。
    • SYN:标志位为 1 时,表示请求建立连接,并设置序列号的初始值。
    • FIN:标志位为 1 时,表示数据发送结束,请求断开 TCP 连接。
  • 窗口:字段长 16 位,标明滑动窗口的大小,表示自己还能接收多少字节的数据。

  • 校验和:字段长 16 位,是错误检查的字段,包括 TCP 头和 TCP 数据的内容计算得出,用于检查传输过程中出现的错误。

  • 紧急指针:字段长 16 位,表示紧急数据的长度。当 URG 位为 1 时,这个字段才有效。

  • 选项:字段的长度是可变的。通过添加不同的选项,实现 TCP 的一些扩展功能。

  • 填充:如果 TCP 段的头部不是 4 字节的整数倍,就填充一些 0 ,来保证头部长度是 4 字节的整数倍。

  • 数据:TCP 段的数据部分,不是 TCP 头部内容,字段最大是 MSS 。

应用层

TCP/IP 模型的下三层,分别是网络接入层、网络层和传输层。它们都是为应用层服务的,传输应用层的各种数据,现在就来看看最高层的应用层。
应用层
在 TCP/IP 模型中,应用层提供的服务相当于 OSI 模型的应用层、表示层和会话层的服务总和。不仅包含了管理通信连接的会话层功能、数据格式转换的表示层功能,还包括主机间交互的应用层功能。
TCP/IP
==应用层的目的是向应用程序提供网络接口,直接向用户提供服务。==相比于下层的网络协议,应用协议要常见得多,常用的协议有 HTTP 、HTTPS 、SSH、FTP等应用层协议。

TCP/IP 模型中应用层位于传输层之上,传输层的端口号用于标识数据所对应的应用层协议。也就是说,有端口号的协议都是应用层协议。应用协议是终端设备之间的应用通信规则。应用之间交互的信息叫消息,应用协议定义这些消息的格式以及消息的控制或操作的规则。
应用层协议
应用协议的通信方式可分为两类:

  • 服务器和客户端模型
    服务器和客户端模型中,始终公开固定 IP 地址的主机为其它主机的应用程序提供服务,请求服务的主机之间不会互相通信。这些为其它主机提供服务的终端设备称为服务器,那些请求服务的主机则称为客户端。大多数应用层协议,都是这种模型。
    服务器和客户端模型
  • P2P 模型
    在 P2P 模型中,没有特定的服务器或客户端,这些设备上安装的应用程序,可以在主机间建立对等连接,既可以提供服务,也可以接受服务。通常是大流量的应用程序采用 P2P 模型,比如:下载器等。
    P2P 模型

NAT

初始 NAT

IP 地址分为公网地址私有地址。公网地址有 IANA 统一分配,用于连接互联网;私有地址可以自由分配,用于私有网络内部通信。
公网IP 和 私网IP
NAT 技术是将私有地址转换成公网地址,使私有网络中的主机可以通过少量公网地址访问互联网。

NAT 技术

IP 地址中预留了 3 个私有地址网段,在私有网络内,可以任意使用。
3个私有地址
其余的 IP 地址可以在互联网上使用,由 IANA 统一管理,称为公网地址
公网地址
NAT 解决了 IPv4 地址不够用的问题,另外 NAT 屏蔽了私网用户真实地址,提高了私网用户的安全性。

典型的 NAT 组网 模型,网络通常是被划分为私网和公网两部分,各自使用独立的地址空间。私网使用私有地址 10.0.0.0/24 ,而公网使用公网地址。为了让主机 A 和 B 访问互联网上的服务器 Server ,需要在网络边界部署一台 NAT设备用于执行地址转换。NAT 设备通常是路由器防火墙
NAT 组网

基本 NAT

基本 NAT 是最简单的一种地址转换方式,它只对数据包的 IP 层参数进行转换,它可分为静态 NAT动态 NAT

静态 NAT 是公网 IP 地址和私有 IP 地址有一对一的关系,一个公网 IP 地址对应一个私有 IP 地址,建立和维护一张静态地址映射表。

动态 NAT 是公网 IP 地址和私有 IP 地址有一对多的关系,同一个公网 IP 地址分配给不同的私网用户使用,使用时间必须错开。它包含一个公有 IP 地址池和一张动态地址映射表。

ICMP

ICMP

ICMP

IP 是尽力传输的网络协议,提供的数据传输服务是不可靠的、无连接的,不能保证数据包能成功到达目的地。那么问题来了:如何确定数据包成功到达目的地?

这需要一个网络层协议,提供错误检测功能和报告机制功能,于是就有了ICMP(互联网控制消息协议)。ICMP 的主要功能是,确认 IP 包是否成功送达目的地址,通知发送过程中 IP 包被丢弃的原因。有了这些功能,就可以检查网络是否正常、网络配置是否正确、设备是否异常等信息,方便进行网络问题诊断。

ICMP 消息是通过 IP 进行传输,但它的目的并不是让 IP 成为一种可靠的协议,而是对传输中发生的问题进行反馈。ICMP 消息的传输同样得不到可靠性保证,也有可能在传输过程中丢失。因此 ICMP 不是传输层的补充,应该把它当做网络层协议。

ICMP 消息封装

ICMP 消息使用 IP 来封装,封装格式如下图。
ICMP 消息封装格式
其中 type(类型)字段表示 ICMP 消息的类型,code(代码)字段表示ICMP 消息的具体含义。常见的 ICMP 消息类型如下图:
ICMP 消息类型
从功能上,ICMP 的消息可分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息
ICMP 消息
常见的 ICMP 消息类型:

  • 回送请求消息( Echo Reques t ):是由源设备(主机或路由器等)向一个指定的目的设备发出的请求。这种消息用来测试目的地是否可达。
  • 回送响应消息( Echo Repl y ):对 Echo Request 的响应。目的设备发送 Echo Reply 来响应收到的 Echo Request 。最常用的 ping 命令就是使用 Echo Request 和 Echo Reply 来实现的。
    ICMP 回送消息
  • 目的不可达( Destination Unreachable ):路由器无法将 IP 包发送给目的地址时,会给源设备返回一个 Destination Unreachable 消息,并在消息中显示不可达的具体原因。
    目的不可达
    实际情况下,经常会遇到的错误代码是 1 ,表示主机不可达,它是指路由表中没有目的设备的信息,或目的设备没有连接到网络。
    目的不可达类型
  • 参数问题( Parameter Problem ):路由器发现 IP 包头出现错误或非法值后,向源设备发送一个 Parameter Problem 消息。这个消息包含有问题的 IP 头,或错误字段的提示信息。
    参数问题
  • 重定向( Redirec t ):如果路由器发现一条更优的路径发送数据,那么它就会返回一个 Redirect 消息给主机。这个消息包含了最合适的路由信息和源数据。
    实际情况下,这种 Redirect 消息会引发路由问题,所以不进行这种设置。比如:路由器的路由表不准确时,ICMP 有可能就无法正常工作。
    重定向
  • 超时( Time Exceeded ):IP 包中有一个字段是 TTL(生存周期),它的值每经过一次路由器就减 1 ,直到减到 0 时 IP 包会被丢弃。这时,路由器会发送一个 Time Exceeded 消息给源设备,并通知 IP 包已被丢弃。
    设置 TTL 的主要目的,是当路由发生环路时,避免 IP 包无休止的在网络上转发。还可以用 TTL 控制 IP 包的可达范围,比如设置一个较小的 TTL值。
    TTL
  • 时间戳请求/时间戳响应( Timestamp Request / Timestamp Repl y ):时间戳可以记录 ICMP 消息一次往返所需的时间。源设备发送一个带有发送时间的 Timestamp Request 消息,目的设备收到后,发送一个带有原设备发送时间、目的设备接收时间以及目的设备发送时间的 Timestamp Reply消息。源设备收到 Timestamp Reply 时,并同时记录到达时间。这些时间戳可以估计网络上的传输时间。
    时间戳请求/时间戳响应

ICMP 的应用

ICMP 被广泛应用于网络测试,最常用的 ping 和 tracert 网络测试工具,都是使用 ICMP 协议实现的。

DNS

DNS ,全称 Domain Name System 。采用 client/server 模式, DNS client 发出查询请求, DNS server 响应请求。 DNS client 通过查询 DNS server 获得主机的 IP 地址,进而完成后续的TCP/IP 通信过程。
DNS

DNS 域名

域名是为了识别主机名或机构的一种分层的名称。因为单独的一台域名服务器是不可能知道所有域名信息,所以域名系统是一个分布式数据库系统,域名(主机名)到 IP 地址的解析可以由若干个域名服务器共同完成。每一个站点维护自己的信息数据库,并运行一个服务器程序供互联网上的客户端查询。DNS 提供了客户端与服务器的通信协议,也提供了服务器之间交换信息的协议。由于是分布式系统,即使单个服务器出现故障,也不会导致整个系统失效,消除了单点故障。

DNS 域名组成

DNS 域的本质是一种管理范围的划分,最大的域是根域,向下可以划分为顶级域、二级域、三级域、四级域等。相对应的域名是根域名、顶级域名、二级域名、三级域名等。不同等级的域名使用点号分隔,级别最低的域名写在最左边,而级别最高的域名写在最右边。
DNS域名

DNS 域名空间

域名空间结构像是一棵倒过来的树,也叫做树形结构根域名就是树根( root),用点号表示,往下是这棵树的各层枝叶。根域名的下一层叫顶级域名,顶级域名包括三大类:
DNS域名空间

  • 国家顶级域名
  • 通用顶级域名
  • 国际顶级域名

DNS 域名解析

域名转换为对应的 IP 地址的过程叫做域名解析。在域名解析过程中, DNS client 的主机调用解析器( Resol ver ),向 DNS server 发出请求, DNS server 完成域名解析。
DNS域名解析
域名解析是按照 DNS 分层结构的特点,自顶向下进行的。但是如果每一个域名解析都从根域名服务器开始,那么根域名服务器有可能无法承载海量的流量。在实际应用中,大多数域名解析都是在本地域名服务器完成。通过合理设置本地域名服务器,由本地域名服务器负责大部分的域名解析请求,提高域名解析效率。
域名解析

DNS 解析器

从应用程序的角度看,访问 DNS 是通过一个叫解析器( Resol ver )的应用程序来完成的。发送一个 TCP 或 UDP 数据包之前,解析器必须将域名(主机名)转换为 IP 地址。一个解析器至少要注册一个域名服务器的 IP 地址。通常,它至少包括本地域名服务器的 IP 地址。
DNS解析器

DNS 域名服务器

DNS 域名空间的层次结构,允许不同的域名服务器管理域名空间的不同部分。域名服务器是指管理域名的主机及软件,它可以管理所在分层的域。其所管理的分层叫做区域( zone )。一个 zone 是 DNS 域名空间的一棵子树,它可以单独管理而不受其它 zone 影响。每层都设有一个域名服务器

DNS 域名服务器类型

  • 本地域名服务器
    互联网接入服务运营商或者一个大的网络机构,像公司、大学等都有一台或多台可以自行管理的域名服务器,这类域名服务器称为本地域名服务器,也称为默认域名服务器。
  • 根域名服务器
    通常根域名服务器用来管理顶级域,本身并不对域名进行解析,但它知道相关域名服务器的 IP 地址。
  • 授权域名服务器
    互联网上的主机在域名服务器上进行注册,这个域名服务器就是主机的授权域名服务器。通常,主机的授权域名服务器就是本地域名服务器。
  • 主域名服务器
    主域名服务器是完成一个或多个区域域名解析工作的主要域名服务器,通常也是一个或多个区域的授权域名服务器。主域名服务器有区域内主机地址信息的源数据文件,并且是区域传送中区域数据的唯一来源。
  • 辅助域名服务器
    辅助域名服务器可以协助主域名服务器提供域名查询服务,在主机很多的情况下,可以有效分担主域名服务器的压力。辅助域名服务器也有冗余功能,当主域名服务器故障时,辅助域名服务器能够在数据有效期内继续为主机提供域名解析服务。

DNS 域名完整解析过程

DNS 域名完整解析过程
DNS 客户端进行域名 www.tsinghua.edu.cn 的解析过程如下:

  1. DNS 客户端向本地域名服务器发送请求,查询 www.tsinghua.edu.cn 主机的 IP 地址;
  2. 本地域名服务器查询数据库,发现没有域名为 www.tsinghua.edu.cn 的主机,于是将请求发送给根域名服务器;
  3. 根域名服务器查询数据库,发现没有这个主机域名记录,但是根域名服务器知道 cn 域名服务器可以解析这个域名,于是将 cn 域名服务器的 IP 地址返回给本地域名服务器;
  4. 本地域名服务器向 cn 域名服务器查询 www.tsinghua.edu.cn 主机的 IP地址;
  5. cn 域名服务器查询数据库,也没有相关记录,但是知道 edu.cn 域名服务器可以解析这个域名,于是将 edu.cn 域名服务器的 IP 地址返回给本地域名服务器;
  6. 本地域名服务器再向 edu.cn 域名服务器查询 www.tsinghua.edu.cn 主机IP 地址;
  7. edu.cn 域名服务器查询数据库,也没有相关记录,但是知道tsinghua.edu.cn 域名服务器可以解析这个域名,于是将 tsinghua.edu.cn的域名服务器 IP 地址返回给本地域名服务器;
  8. 本地域名服务器向 tsinghua.edu.cn 域名服务器查询 www.tsinghua.edu.cn 主机的 IP 地址;
  9. tsinghua.edu.cn 域名服务器查询数据库,发现有主机域名记录,于是给本地域名服务器返回 www.tsinghua.edu.cn 对应的 IP 地址;
  10. 最后本地域名服务器将 www.tsinghua.edu.cn 的 IP 地址返回给客户端,整个解析过程完成。

DNS 传输层协议

DNS 域名服务器使用的端口号是 53 ,并且同时支持 UDP 和 TCP 协议。为什么同时使用两种协议呢?

因为 DNS 响应报文中有一个删减标志位,用 TC 表示。当响应报文使用UDP 封装,且报文长度大于 512 字节时,那么服务器只返回前 512 字节,同时 TC 标志位置位,表示报文进行了删减。当客户端收到 TC 置位的响应报文后,将采用 TCP 封装查询请求。DNS 服务器返回的响应报文长度大于 512字节。
DNS 传输协议

DNS 查询方式

DNS 域名解析包括两种查询( query )方式,一种是递归查询,另一种是迭代查询

递归查询

DNS 服务器如果不能直接响应解析请求,它将继续请求其它的 DNS 服务器,直到查询域名解析的结果。查询的结果可以是域名主机的 IP 地址,或者是域名无法解析。无论哪种结果,DNS 服务器都会将结果返回给客户端

迭代查询

如果 DNS 服务器查不到相应记录,会向客户端返回一个可能知道结果的域名服务器 IP 地址,由客户端继续向新的服务器发送查询请求。对域名服务器的迭代查询,只得到一个提示,则继续查询

DNS 反向查询

在 DNS 查询中,客户端希望知道域名对应的 IP 地址,这种查询称为正向查询。大部分的 DNS 查询都是正向查询。与正向查询对应的,是反向查询它允许 DNS 客户端通过 IP 地址查找对应的域名
DNS 反向查询
为实现反向查询,在 DNS 标准中定义了特色域 in-addr.arpa 域,并保留在域名空间中,以便执行反向查询。为创建反向域名空间,in-addr.arpa 域中的子域是按照 IP 地址相反的顺序构造的。

DNS 应用场景

静态域名解析

域名解析分为动态域名解析静态域名解析。在解析域名时,首先采用静态域名解析,如果静态解析不成功,再采用动态域名解析。

静态域名解析是通过静态域名解析表进行的,手动建立域名和 IP 地址之间的对应关系表,该表的作用类似于操作系统下的 hosts 文件,可以将一些常用的域名放入表中。当 DNS client 需要域名所对应的 IP 地址时,即到静态域名解析表中去查找指定的域名,从而获得所对应的 IP 地址,提高域名解析的效率。
静态域名解析表

动态域名解析

动态域名解析需要专用的域名服务器( DNS server )运行域名解析服务器程序,提供从域名到 IP 地址的映射关系,负责接收客户端( DNS client)提出的域名解析请求。

DNS 代理

在使用了 DNS 代理( DNS proxy )功能的组网中,DNS client 将 DNS请求报文直接发送给 DNS proxy 。DNS proxy 会先查找本地域名解析表,如果未查询到对应的解析表项,会将 DNS 请求报文转发给 DNS Server ,并在收到 DNS server 的应答报文后将其返回给 DNS client ,从而实现域名解析。
DNS 代理
因此,当 DNS server 的地址发生变化时,只需改变 DNS proxy 上的配置,无需逐一改变局域网内每个 DNS client 的配置,从而简化了网络管理。

ARP

初识ARP

从网络分层上看,我们知道二层网络中,使用 MAC 地址进行传输,MAC 地址做为数据链路层的设备标识符。
二层网络传输
三层网络中,使用 IP 地址进行传输,IP 地址做为网络层的设备标识符。
三层网络传输
IP 地址通过 ARP,获得 MAC 地址,有了 MAC 地址才能在物理网络上传输数据。

ARP 是什么呢?

ARP ,是地址解析协议。==根据设备的 IP 地址来查询对应 MAC 地址的协议。==主机通过 ARP 查询到 MAC 地址后,将在 ARP 缓存表中增加映射表项,即IP 地址和 MAC 地址的映射表项。
ARP 表

ARP 原理

ARP 是如何知道 MAC 地址的呢?简单说,ARP 是通过 ARP 请求ARP响应报文确定 MAC 地址的。
ARP 请求和响应
假如主机 A 向同一网段上的主机 B 发送数据。主机 A 的 IP 地址为10.0.0.1 ,主机 B 的 IP 地址为 10.0.0.2 ,主机 C 的 IP 地址为10.0.0.3 。它们都不知道对方的 MAC 地址。ARP 地址解析过程如下:
在这里插入图片描述

  • 主机 A 首先查看自己的 ARP 表(即 ARP 缓存表),确定是否有主机 B的 IP 地址对应表项。如果有,则直接使用表项中的 MAC 地址进行封装,封装成帧后发送给主机 B 。
    ARP 缓存表
  • 如果主机 A 的 ARP 表没有对应的表项,就发送一个广播帧,源 IP 和源MAC 地址是主机 A ,目的 IP 地址是主机 B ,目的 MAC 地址是广播MAC 地址,即 FFFF-FFFF-FFFF 。这就是 ARP 请求报文
    ARP 请求报文
  • ARP 请求是广播报文,同一个网段的所有主机都能收到。只有主机 B 发现报文中的目的 IP 地址是自己,于是主机 B 发送响应报文给主机 A ,源 MAC地址和源 IP 地址是主机 B ,目的 MAC 地址和目的 IP 地址是主机 A ,这个报文就叫 ARP 响应报文。同时,主机 B 的 ARP 表记录主机 A 的映射关系,即主机 A 的 IP 地址和 MAC 地址的对应关系。
    ARP 响应报文
  • 主机 C 也收到了 ARP 请求报文,但目的 IP 地址不是自己,所以不会进行响应。于是主机 C 添加主机 A 的映射关系到 ARP 表,并丢弃 ARP 请求报文。
    在这里插入图片描述
  • 主机 A 收到 ARP 响应报文后,添加主机 B 的映射关系,同时用主机 B 的MAC 地址做为目的地址封装成帧,并发送给主机 B 。
    在这里插入图片描述
    如果每发送一个 IP 报文就要进行一次 ARP 请求,来确定 MAC 地址,那将会造成不必要的网络流量,通常的做法是用 ARP 表记录 IP 地址和 MAC 地址的映射关系。主机发送报文时,首先会查看它的 ARP 表,目的是为了确定是否是已知的设备 MAC 地址。如果有,就直接使用;如果没有,就发起 ARP请求获取。不过,缓存是有一定期限的。ARP 表项在老化时间( agingtime )内是有效的,如果老化时间内未被使用,表项就会被删除。
    在这里插入图片描述
    ARP 表项分为动态 ARP 表项静态ARP 表项
  • 动态 ARP 表项由 ARP 动态获取,因此在网络通信中,无需事先知道 MAC地址,只要有 IP 地址即可。如果老化时间内未被使用,表项就会被自动删除。
  • 静态 ARP 表项是手工配置,不会老化。静态 ARP 表项的优先级高于动态ARP 表项,可以将相应的动态 ARP 表项覆盖。
    ARP表

代理 ARP

ARP 广播报文会被路由器隔离,没有默认网关、网段不同的主机相互通信时,连接这两个网络的路由器可以响应这个 ARP 请求,这个过程叫做代理 ARP(Proxy ARP )。
代理ARP
主机 A 与另一个网段的主机 B 通信,主机 A 直接发送 ARP 请求,解析主机B 的 MAC 地址。运行了代理 ARP 的路由器收到 ARP 请求后,代替主机 A在 20.0.0.0 网段发出 ARP 请求,解析主机 B 的地址。
代理ARP 请求目标MAC
主机 B 收到路由器发出的 ARP 请求,发出 ARP 响应报文,告知自己的MAC 地址是 2222-2222-2222 。路由器收到 ARP 响应后,也向主机 A发送 ARP 响应,但目的 MAC 地址是与 10.0.0.0 网段连接的端口 MAC 地址是 1010-1010-1010 。主机 A 收到报文后,在 ARP 表中添加 IP 地址是 20.0.0.1 和 MAC 地址是 1010-1010-1010 的映射表项。
代理ARP 响应
因此主机 A 会将所有要发送给主机 B 的数据发送给路由器,路由器再将其转发给主机 B 。反之亦然。

代理 ARP 功能屏蔽了分离的网络,主机不用修改 IP地址和子网掩码就可以和现有的网络互通。让用户使用起来,跟在同一个网络上一样。代理 ARP 使用在主机没有默认网络,或没有任何路由的网络上,通常是那些不支持设定子网掩码的老设备。但代理 ARP 会转发 ARP 广播报文,造成网络效率低,不适合用于大规模网络。
代理ARP 主要作用

RARP

RARP 是将ARP 反过来,从设备 MAC 地址获取 IP 地址的一种协议。通常是打印机等小型嵌入式设备接入网络时会用得到。

RARP 原理

使用 RARP 需要搭建一台 RARP 服务器,在服务器上注册设备的 MAC 地址及 IP 地址。

  • 设备插电启动后,广播发送一个请求报文,希望获得 IP 地址应答。目的MAC 地址是广播地址,源 MAC 地址是自己的物理地址。
    在这里插入图片描述
  • RARP 服务器收到 IP 地址请求后,给设备分配一个 IP 地址,并通过响应报文发送给设备。设备收到响应报文后,把 RARP 服务器分配的 IP 地址设置成自己的 IP 地址。
    在这里插入图片描述

免费 ARP

免费 ARP 是一种特殊的 ARP 请求,它并非通过 IP 找到对应的 MAC 地址,而是当主机启动的时候,发送一个免费 ARP 请求,即请求自己的 IP 地址的 MAC 地址。
免费 ARP
与普通 ARP 请求报文的区别在于报文中的目标 IP 地址。普通 ARP 报文中的目标 IP 地址是其它主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP地址是自己的 IP 地址
在这里插入图片描述
免费 ARP 的作用:

  • 起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其它主机自己的 IP 地址和 MAC 地址。
  • 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
  • 可用于更新其它主机的 ARP 缓存表。如果该主机更换了网卡,而其它主机的ARP 缓存表仍然保留着原来的 MAC 地址。这时,通过免费的 ARP 数据包,更新其它主机的 ARP 缓存表。

ARP 报文

ARP 报文分为 ARP 请求报文ARP 应答报文,它们的报文格式相同,但是各个字段的取值不同。
ARP 报文格式
ARP 报文中各个字段的含义如下。
ARP 报文字段含义

IP

IPv6 地址

IPv6 地址不但比 IPv4 的地址长度大,还有其他方面的不同。

IPv6 地址表示

IPv6 地址,是 IPv4 地址的 4 倍,如果用点分十进制表示法,那么会有 16 个八位组,地址过于冗长。为了使用方便, 使用十六进制表示法,分隔成 8 个 16 位段,每 16 位段的值在 0000 ~ FFFF 的十六进制数之间,每个 16 位段之间用 “ : ” 分开。

但是 IPv6 地址还是太长,不方便记忆,看着都头晕,也不方便书写,毫无规律可言。于是就有了两条简化规则。第一条规则是:

  • 每组十六进制数中开头的 0 可以省略。
  • 由全 0 组成的连续的 16 位段可以用一对冒号 “ :: ” 表示。

IPv6 地址类型

IPv6 地址根据使用范围和功能,分为三种类型:

  • 单播( Unicast )
  • 任意播( Anycast )
  • 组播( Multicast )
    对比 IPv4 ,IPv6 地址中没有广播地址,但是有一个包含全部节点的组播地址,跟 IPv4 中的广播地址功能相同。

单播

其中单播地址又细分为全球单播地址唯一本地地址链路本地地址等。

全球单播地址

单播地址表示单台设备的地址。全球单播地址是指这个单播地址是全球唯一的。也就是说,全球单播地址是可以在公网使用、全网可路由的 IPv6 地址,类似于IPv4 的公网 IP 地址。全球单播 IPv6 地址是由 Internet 地址授权委员会(IANA )分配给地区 Internet 注册机构( RIR ),再由 RIR 分配给Internet 服务提供商( ISP )。

IANA 分配 128 位的 IPv6 地址时,同 IPv4 一样,也是分配一个网段,即网络/子网位,不会分配 128 位的地址。IPv6 单播地址的通用格式如下:
全球单播地址格式
全球单播 IPv6 地址的前 3 位固定为 001 ;第 4 ~ 48 位的这 45 位由地址分配机构分配;48 位之后的 16 位是网络划分子网位,称为子网 ID ;剩余的 64 位 IPv6 地址就是主机位,但是叫做接口 ID( Interface ID )。因为一台主机可以有几个接口,用 IPv6 地址表示主机的一个接口更准确,而不是表示一台主机。同时,一个接口可以有多个 IPv6 地址,还可以有一个 IPv4 地址,接口 ID 只是这个接口的几个标识符之一。

本地单播地址

除了全球单播地址,还有几种其它类型的本地单播地址,分别应用在不同的场景。

有哪些本地单播地址呢?

本地单播地址有 4 种类型,分别是唯一本地地址链路本地地址未指定地址回环地址

  • 唯一本地地址
    虽然 IPv6 地址非常充足,但是 IANA 还是分配了一段可以在私有网络使用的私有 IP 地址空间。这种可以自行使用而不用申请的单播 IPv6 地址叫做唯一本地地址。唯一本地地址只能在私有网络使用,不能在全球路由,不同的私网可以复用这类地址。它的作用和范围跟 IPv4 的私有 IP 地址相同。

    唯一本地地址的前 7 为固定是 1111110 ,前缀为 FC00::/7 的 IPv6 地址。之前还有站点本地地址( Site Local Address ),前缀是 FEC0::/10 ,已被ULA取代。
    唯一本地地址

  • 链路本地地址
    IPv6 的链路本地地址( Link-Local Address ),是 IPv4 地址中没有的类型,是 IPv6 新定义的地址类型。

    链路本地地址是只在链路内有效的地址。启动 IPv6 时,网络接口会自动配置这样的一个 IPv6 地址,就可以直接和同一链路上的其它设备通信。因为链路本地地址只在链路本地有效,所以这些数据包不会被发送到其它链路上。

    链路本地地址的前 10 位固定是 1111111010 ,之后的 54 位固定为 0 ,最后 64 位是接口 ID 。也就是说,链路本地地址的前缀为 FE80::/10 。
    链路本地地址格式
    如果链路本地地址的前 64 位都是相同的,那么接口如何使用 64 位的接口 ID进行标识,才能确保链路本地地址在链路中不会出现 IP 地址冲突呢?答案是接口使用自己的物理 MAC 地址来填充接口 ID 字段。理论上接口的 MAC 地址是唯一的,因此通过 MAC 地址生成的接口 ID 和链路本地地址也是唯一的。

    把 MAC 地址转换成接口 ID ,使用 MAC-to-EUI64 转换法。简单的讲,就是使用接口的 48 位 MAC 地址,在 MAC 地址中间,也就是 OUI 后面,插入一个固定的十六进制数 0xFFFE ,并把第 7 位的 U/L (全局/本地)位设置为 1 ,这样就转换为一个 64 位的接口 ID 。

  • 未指定地址

    未指定地址是 128 位全为 0 的前缀地址,简写成 ::/128 ,相当于 IPv4 中的 0.0.0.0/32 。这个地址不能分配给接口使用,只有当 IPv6 设备还没获取到地址时,才将未指定地址作为数据包的源 IPv6 地址

  • 回环地址

任意播地址

IPv6 定义了一种任性的功能,通过任意播地址( Any cas t Address )实现。任意播地址是根据功能定义的,而不是根据报文格式,IPv6 没有定义任意播的地址空间,与单播使用相同的地址空间。所以,无法根据地址判断是单播地址还是任意播地址。

单播是一对一,组播是一对多,广播是一对全体,那么任意播就是一对最近的通信方式。
在这里插入图片描述
一个任意播地址可以分配给多台设备,路由器会有多条路由到达相同的目的地,选择代价最小的路由进行数据转发。在大型网络中,流量可以发送到最近的设备,数据传输效率更高。而且当最近的设备故障时,路由器可以把路由指向下一台最近的路由器。
在这里插入图片描述

组播地址

组播地址不是标识一台设备,而是一组设备:一个组播组( Multi cas t Group)。发送组播数据包通常是单台设备,可以是组播组成员,也可以是其它主机,数据包的目的地址是组播地址。

组播组成员有可能是一台设备,也可能是这个网络上的所有设备。IPv6 没有广播地址,但是有一个包含所有节点的组播组,和广播地址做相同的事情:所有节点都是这个组播组的成员。

组播地址的前 8 位全是 1 ,后面跟着 4 位标记位,再后面就是 4 位表示地址范围。最后的 112 位作为组 ID ( Group ID ),标识不同的组播组。前面的 80 位是 0 ,只使用后面的 32 位。
组播地址格式

嵌入的 IPv4 地址

在 IPv6 地址的环境中使用 IPv4 地址,需要用到转换技术,把 IPv4 地址转换成 IPv6 地址。比如 6to4 技术就是将 IPv4 地址转换成 16 进制数,再嵌入到 IPv6 地址的最后 32 位。

ICMPv6

IPv6 也是使用 ICMP 来管理网络,实现错误检查和报告机制功能。IPv4 协议中 ICMP 使用的协议号是 1 ,而 IPv6 协议中 ICMPv6 使用的值是 58 。ICMPv6 对于头部字段的定义也与 ICMP 相同。
ICMPv6

NDP

IPv6 的==邻居发现协议( NDP )==相当于 IPv4 的 ARP 、ICMP 的路由器发现和 ICMP 的重定向,还可以发现网络中使用的 IPv6 地址前缀等参数,并实现地址自动配置等。IPv6 协议通过 NDP 功能实现即插即用特性:

  • 路由器发现( Router Discovery ):当一个节点接入到 IPv6 链路时,它可以发现链路上的路由器,而不需要借助使用 DHCP 。
  • 前缀发现( Prefix Discovery ):当一个节点接入到 IPv6 链路时,它能够发现链路的前缀。
  • 参数发现( Parameter Discovery ):节点能够发现所在链路的参数,像链路的 MTU 和跳数限制等。
  • 地址自动配置( Address Autoconfiguration ):节点能够自动配置,不需要使用 DHCP 。
  • 地址解析( Address Resolution ):节点不需要通过 ARP 就能够获取链路上其它节点的 MAC 地址。
  • 下一跳确定( Next-Hop Determination ):能够确定到达目的节点的下一跳链路层节点,或者所在链路的目的节点,或是到达目的节点的路由器。
  • 邻居不可达检测( Neighbor Unreachability Detection ):节点上能够检测到链路上的邻居何时不可达,邻居有可能是主机,也可能是路由器。
  • 地址冲突检测( Duplicate Address Detection ):节点能够检测到要使用的地址是否已经被其它节点占用。
  • 重定向( Redirect ):对于非连接的目的节点,路由器能够通知主机存在更好的下一跳路由。

NDP 报文是在数据链路内接收和发送,因此封装 NDP 的数据包是使用 IPv6链路本地地址,或者是链路范围内的组播地址。在安全性上也有加强,NDP 报文的跳数限制是 255 。如果收到的数据包的跳数限制值小于 255 ,那么这个数据包至少经过了一台路由器,因此丢弃这个数据包。这样可以阻止 NDP 不会受到非本地链路的攻击或欺骗。

NDP 报文

NDP 定义了 5 种报文类型,且跳数限制字段值都是 255 。如果收到的 NDP报文中跳数限制字段值不是 255 ,那么会丢弃这个 NDP 报文。在 ICMPv6封装这 5 种 NDP 报文时,编码字段都是 0 ,不同报文类型通过类型值来标识:

  • 路由器请求( Router Solicitation ,RS ):路由器请求报文是由主机发出的,用来请求链路中的路由器发送一个 RA 。类型字段值是 133 。
  • 路由器通告( Router Advertisement ,RA ):路由器通告报文是路由器发出的,用来通告路由器的存在和链路参数,比如:链路前缀、链路 MTU,以及跳数限制等。这些报文周期性的发送,也用于响应路由器请求报文。类型字段值是 134 。
  • 邻居请求( Neighbor Solicitation ,NS ):也是有主机发起,用来请求另一台主机的 MAC 地址,也用于地址冲突检测、邻居不可达检测。类型字段值是 135 。
  • 邻居通告( Neighbor Advertisement ,NA ):用于响应邻居请求报文。如果一个节点改变了 MAC 地址,那么它通过发送一个未请求的邻居通告报文来告知这个新地址。类型字段值是 136 。
  • 重定向( Redirect ):跟 IPv4 协议中的 ICMP 用法相同,只不过是移植到 NDP 中。类型字段值是 137 。

路由器发现

路由器在所在的链路上周期性发送 RA ,告知它的存在和配置的所有参数。未收到请求的 RA 的源地址是路由器接口的链路本地 IPv6 地址,目的地址是所有节点的组播地址( FF02::1 )。

刚接入到链路的主机,需要等待一个 RA ,用来发现链路上的路由器和链路参数。默认等待 200 秒的时间太长。所以,主机激活时,就会发送一个 RS ,这个报文的源地址可以是未指定地址( :: ),也可以是主机的链路本地 IPv6 地址。目的地址就是所有路由器的组播地址( FF02::2 ),请求链路本地路由器为主机提供一些信息。

只有路由器才会监听链路本地路由器组播地址,当路由器收到 RS 时,就会发送一条 RA 作为响应。如果收到报文的源地址是链路本地地址,那么使用链路本地地址单播发送。如果源地址是未指定地址( :: ),那么会以组播方式发送给所有节点( FF02::1 )。
在这里插入图片描述
当主机收到 RS 时,会把路由器的链路本地地址作为默认路由地址,添加到自己的路由表中。如果路由器列表有多条默认路由器条目,那么主机要给出选定默认路由器的方法。要么是整个默认路由器列表依次轮询,要么选择单台路由器作为默认路由。

地址自动配置

当一台 IPv6 的设备第一次接入链路时,它能够自动配置自己的接口地址。这个过程的第一步就是确定 64 位接口 ID 部分,使用 MAC-to-EUI64 转换法获取接口 ID 。

邻居地址解析

IPv4 通过 ARP 获取 MAC 地址,然而 ARP 协议无法照搬到 IPv6 环境中,IPv6 没有定义广播地址。为了解决查询目的设备的 MAC 地址问题,IPv6 通过 NDP 获取 MAC 地址。IPv6 设备使用 NS 和 NA 来实现 MAC地址的查询和响应。IPv6 使用目的节点组播地址作为 NS 的目的地址。

地址冲突检测

虽然通过 MAC 地址转换成接口 ID ,大多数情况下可以保证是设备地址是唯一的,但是也可能存在重复 MAC 地址的情况,因此不管设备是如何获取地址的,都需要在使用之前进行地址冲突检测

获取一个地址的节点会把新地址作为临时状态的地址。在地址冲突检测完成前,地址不能被使用。节点会发送目的地址是新地址的 NS 来验证。NS 的源地址是未指定地址,目的地址是目的节点的组播地址。

私有地址

无状态地址自动配置会有一个安全隐患:即使一台设备从一个子网转移到另一个子网,它的接口 ID 始终保持不变。那么就可以通过接口 ID 来识别用户,推断出用户的所在位置,追踪用户的活动和位置记录,暴露个人隐私信息。

这个问题可以通过 IPv6 私有地址来解决。私有地址是随机生成的接口 ID 。接口 ID 通常一天变化一次,也会在获取一个新的 IPv6 地址时改变。

但是服务器的地址不需要经常变化。跟服务器通信的节点,以及 DNS 服务器必须通过静态地址了解服务器的位置。因此,标准的无状态配置的 IPv6 地址保留“公共”地址,任何一个向服务器发送数据时,使用这个地址作为目的地址。但是服务器发送数据时,使用的却是私有地址。

网络设备

网络其实就是一堆设备连接在一起,然后在上面跑各种网络协议,实现设备之间的网络互通。其中第一步便是把所有设备按照一定的规则连接起来。这些设备可能是路由器、交换机、防火墙等网络设备,也可能是服务器、电脑、手机等需要接入网络的设备。为了完成各种设备的连接需求,会用到网络物理层的连接标准和链接线缆,也就是网线或者光迁等。

网络有哪些构成

由交换机、路由器等网络硬件,以及个人计算机、服务器等计算机硬件构成,这些硬件都叫做节点,节点之间通过链路进行连接。

什么是节点(node)

计算机、交换机、路由器等构成网络的硬件都可以称为通信节点。

什么是链路(link)

将各个节点进行连接的线路,可以使用有线线缆或者无线电波。
链路

什么是主机(host)

通过网络为其它机器提供服务的计算机,也称为服务器

什么是客户端(client)

从主机获得服务的计算机,比如个人计算机等,也称为终端。
client

什么是客户端服务器类型

区分服务提供方和服务接受方的架构。客户端向服务器请求服务,而服务器响应客户端的服务请求。比如:HTTP 通信。

什么是点对点类型

不区分服务提供方和服务接受方的架构。参与网络的计算机有可能是网络中的服务器,也有可能成为网络中的客户端。比如:Skype 通信。

什么是 LAN(局域网)?

用于机构内部通信与信息传递。使用以太网技术在公司或学校范围内构建网络。LAN 分为使用线缆的有线 LAN 和使用电波的无线 LAN 。一般在 LAN 内部使用私有 IP 地址。

在使用线缆连接 LAN 时,用户的个人计算机通过以太网线(双绞线)连接交换机,然后由交换机连接路由器,最终在路由器处理不同子网和发送到互联网的通信。

什么是 MAN(城域网)?

使用光缆在相距较远的校园园区或城市内建立通信的网络,比 LAN 的范围要广。

什么是 WAN(广域网)?

范围比 LAN 和 MAN 都要广,用于跨区域或国家间的远程通信。一般有电信运营商建设。在 WAN 中使用公网 IP 地址进行通信。

家庭或企业在连接互联网时,需要与 ISP(互联网服务供应商)签订合同,通过 ISP 提供的接入点完成连接。而接入点的连接则需要通过电信运营商提供的服务来完成。

中国有哪些 ISP 和电信运营商

ISP 和电信运营商是同一家公司的有中国电信、中国联通等。ISP 中较为著名的有长城宽带等。

WAN 有哪些服务类型

根据用途可分为:最后一公里接入、移动通信、VPN 、专线。
在这里插入图片描述

什么是 OSI 参考模型

早期的网络协议主要有 IBM 公司的 SNA 、Apple 公司的 AppleTal k 、Novel l 公司的 NetWare 等。它们使用的不同厂家生产网络硬件而大相径庭,因此出现了不同网络之间不能互联以及扩容困难的问题。

为了解决这个问题,使得任何厂家生产的网络硬件之间都能互联互通,制定了称为 OSI 参考模型的分层网络模型。

使用分层结构模型有很多优点:按功能分类,便于理解和掌握;定义标准接口,使不同厂商的硬件可以互联;设计和研发网络硬件时,会限定在一定范围内;当某层发生变化时,不影响其它层。
OSI 分层

OSI 参考模型的数据形式和网络协议有哪些

在这里插入图片描述

L2 ~ L4 的数据形式是什么样的

在这里插入图片描述

TCP/IP 分层模型和 OSI 参考模型有什么对应关系

在这里插入图片描述
TCP/IP 分层模型的网络接入层和 OSI 参考模型的物理层相当,但并没有对硬件及数据传输等进行标准化定义。

TCP/IP 分层模型的各层分别对应了哪些网络硬件?

在这里插入图片描述

什么是以太网标准

以太网原本是指使用 CSMA/CD 的控制方式,实际速率为 10Mbit/ s 的标准。随着技术的迭代,速率为 100Mbit/ s 的快速以太网和速率为 1Gbit/ s 的千兆以太网逐步登场。从快速以太网开始,采用了全双工通信方式,而不是CSMA/CD 技术的以太网。

到千兆以太网,半双工通信中还保留了 CSMA/CD 技术规范。到了万兆以太网,就彻底移除 CSMA/CD 规范,所有通信方式都采用全双工方式。

不同类型的以太网区别有哪些?

在这里插入图片描述

IEEE 802.3 标准根据使用的传输线缆和传输速度的不同,有 10BASE-T、10BASE-TX 等名称。那么标准的命名规则是什么?

在这里插入图片描述
Lane 是在 40G/100G 以太网传输中使用的并行传输通道。

IEEE 802.3 定义的链路速率:
802.3 链路速率

以太网的数据按照什么顺序传输

以太网采用小端顺序方式传输比特流,也就是说 1 个字节( 8bit )的数据,会从最低位开始传送,将每 8bit 数据中的 0 与 1 顺序颠倒进行传送。FDDI以及令牌环等网络,则采用大端顺序进行传输数据。
在这里插入图片描述
在网络上进行传输的二进制数据使用的字节排列顺序也叫做网络字节序。TCP/IP 协议中都使用大端顺序开始传送数据。

网络硬件有几种类型

网络硬件分为通用服务器专用设备两大类。

通用服务器:运行 Windows 、Linux 、Unix、Mac Os 等操作系统的通用服务器及服务器上安装的网络服务。

专用设备:由特定目的的操作系统、软件、硬件组成的专用设备。

通用服务器和专用设备有什么区别

在这里插入图片描述

网络设备有哪些

网络设备有路由器、L2 交换机、高层路由器、无线 LAN 的 AP、无线 LAN控制器、网络安全设备、负载均衡器和服务器设备。其中,网络安全设备又分为防火墙、UTM 、新一代防火墙、代理器、URL 过滤器、防病毒网关等;服务器设备细分为 Web 服务器设备、文件服务器设备、DHCP 服务器设备、DNS服务器设备等。

网络设备有几种接口

设备一般有两种接口,一种是用于管理设置的控制端口,另一种是用于传输用户数据流量的数据端口。网络设备通常是一个控制端口和多个数据端口。

什么是控制端口

对网络设备的初始设置、管理、调试等需要通过专用的端口来处理,这类端口就是控制端口( console port )或串行端口( serial port )。一般使用 RJ-45 、DB-9( RS-232 )标准。

电脑使用线缆通过 USB 接口或 DB-9 串口连接到网络设备,通过终端仿真软件与设备进行互连。连接电脑和网络设备的线缆叫做控制线缆。

什么是双绞线

双绞线也叫做网线。线缆是两根细导线一组,共 4 组,外部包裹着线套。

双绞线有几种类型

双绞线分为屏蔽 STP 和非屏蔽 UTP 两类。常见的是 UTP 。

有了双绞线,为什么还需要光纤

虽然双绞线可以完成 10Gbit/ s 速率的通信,但是传输距离短,只有 100m ,因此长距离通信采用光纤,最远可达 80km 。

光纤有几种类型

光纤分为单模光纤、多模光纤。为了使用不同类别的光纤,产生了单模光模块、多模光模块。

  • 单模光模块与单模光纤配套使用。单模光纤传输频带宽,传输容量大,适用于长距传输。
  • 多模光模块与多模光纤配套使用。多模光纤有模式色散缺陷,其传输性能比单模光纤差,但成本低,适用于较小容量、短距传输。

光纤接口有哪些

常见的光纤接口类型有 FCSTSCLC

  • FC
    圆型带螺纹,外壳材质为金属,接口处有螺纹,和光模块连接时可以固定的很好,常用于用于光纤配线架。
  • ST
    卡接式圆型,材质为金属,接口处为卡扣式,常用于光纤配线架。
  • SC
    卡接式方形,俗称大方口,材质为塑料,推拉式连接,接口可以卡在光模块上,常用于光纤收发器和 GBIC 光模块。
  • LC
    卡接式方形,俗称小方口,材质为塑料,常用于连接 SFP 光模块和预端接模块盒。

二层交换机

学习计算机网络,其实就是学习网络协议。通过各种各样的网络协议,实现不同的网络需求。当然,网络协议不是凭空存在的,而是运行在网络设备上。搞懂网络协议,只是知道了技术原理。搞懂网络设备,才能把所学的网络知识用起来,实际解决我们的网络需求。

什么是中继器

中继器( repeater )是一种信号增强设备,运行在 OSI 参考模型的第一层。它的功能仅仅是将信号重新输出,延迟网络的传输距离,不进行其它的数据控制,也无法识别数据链路层的 MAC 地址和网络层的 IP 地址。

什么是网桥

网桥( bridge )是具有两个端口的二层网络设备,可隔离冲突域。作用相当于OSI 模型中的数据链路层,能够根据 MAC 地址进行数据转发。只能连接同构网络(同一网段),不能连接异构网络(不同网段)。

什么是集线器

集线器( hub )是工作在物理层、具有信号放大功能、以它为中心的网络设备。即一个多端口的中继器,以集线器为中心,连接多个节点。广播方式发送数据,也就是说,当它要发送数据时,会发送到与集线器相连的所有节点。

由于集线器没有控制功能,因此所有终端共享带宽,同一时刻只能一个终端发送数据,多个终端同时发送数据就会产生冲突。这时,集线器、连接线缆以及连接在集线器上的终端设备构成了一个冲突域。于是采用 CSMA/CD 方式决定终端能否发送数据。

什么是交换机

集线器是从接收方收到的数据,会转发给所有非发送方端口,也就是简单的通过复制电气信号来实现发送。

但是交换机是通过学习连接的每个终端的 MAC 地址,将数据发送给对应的目的终端上,避免将数据发送到无关端口,提供网络利用率。这里说的交换机都是二层交换机。

如果是没有学习到的 MAC 地址,或者想跟网段内所有终端进行通信,交换机会使用广播方式,将数据帧进行泛洪。

交换机如何学习 MAC 地址

交换机通过数据帧的源 MAC 地址,学习到交换机端口和 MAC 地址的对应关系,并记录到交换机的 MAC 地址表中。

主机 A 向主机 D 发送数据:A 发送数据帧,数据帧的源 MAC 地址是11:11:11:11:11:11 ,目的 MAC 地址是 44:44:44:44:44:44 。交换机端口1 收到数据帧,记录源 MAC 地址和端口的对应到 MAC 地址表项。交换机不知道目的 MAC 地址在哪个端口,于是将数据帧进行泛洪,即转发到除端口 1之外的所有端口。B 和 C 发现目的 MAC 地址不是自己,将丢弃数据帧。
在这里插入图片描述
D 发现是发送给自己的数据帧,于是发送应答数据帧,源 MAC 地址是44:44:44:44:44:44 ,目的 MAC 地址是 11:11:11:11:11:11 。交换机端口4 收到数据帧,记录 D 的 MAC 地址表项。于是交换机知道了主机 A 和主机D 的 MAC 地址信息,之后会根据 MAC 地址表进行转发。交换机通过同样的方式,可以学习到主机 B 和主机 C 的 MAC 地址。
在这里插入图片描述

对比集线器,交换机有哪些优点

在这里插入图片描述

以太网数据帧有哪些类型

在这里插入图片描述

交换机如何转发数据帧

交换机收到数据帧后,会有三种处理方法:直通转发碎片隔离存储转发

  • 直通转发
    直通转发是交换机只读取数据帧的前 14 个字节就进行转发。由于读取的数据量固定,发送方和接收方的速度需要一致,导致无法桥接不同速率的以太网。另外,只读取前 14 个字节,会跳过了 FCS 域,因此无法检测并丢弃 CRC 校验错误的数据帧。
    直通转发
  • 碎片隔离
    碎片隔离是读取数据帧的前 64 个字节就进行转发,可以防止转发小于 64 字节的残帧。但是如果出现 CRC 错误,还是会转发数据帧。也无法桥接不同速率的以太网。
    碎片隔离
  • 存储转发
    存储转发会读取数据帧全部内容再进行转发。这样就可以识别残帧和 CRC 校验错误帧,并将它们丢弃。交换机还能对数据帧进行缓存,因此可以桥接不同速率的以太网。
    存储转发

单工和双工通信有什么区别

单工和双工通信

交换机的处理能力的指标是什么

交换机的处理能力也叫做背板容量或交换机容量。容量单位是 bit/ s(比特每秒),值越大,说明交换机在单位时间内传输的数据越多。

当交换机的所有端口的总带宽小于交换机的容量时,交换结构为非阻塞,即带宽充裕,没有等待处理的情况。反之,当所有端口总带宽超过交换机的容量时,叫做交换机结构过载。

交换机是千兆端口时,处理能力达到端口数 × 2 × 1Gbit/ s 的数值,就是非阻塞。其中 × 2 表示上行和下行都是 1Gbit/ s 的全双工通信。假如交换机有 24个端口,背板容量到达 24 × 2 × 1G = 48Gbit/ s ,就是非阻塞。

根据功能分类,交换机有几种类型

交换机按照功能可以分为二层交换机三层交换机

二层交换机

没有 IP 路由功能、仅处理数据链路层的交换机叫做二层交换机。二层交换机根据不同的功能而不同。
二层交换机

三层交换机

带有 IP 路由功能的交换机叫做三层交换机。

根据外形分类,交换机有几种类型

根据外形,交换机可分为桌面式交换机箱式交换机机框式交换机

  • 桌面式交换机
    桌面式交换机是指放在桌面上使用的交换机。它体积不大,只能连接几台网络设备,通常用于家庭网络中,主要有 3 端口、5 端口、8 端口和 16 端口的产品。

桌面式交换机通常不安装风扇,采用无风扇设计,运行遭受小。

  • 箱式交换机
    箱式交换机通常高度是 1U 或 2U ,可以安装在 19 英寸的机柜内。通常采用金属外壳、内置电源,并配置冷却风扇。下行有 24 千兆网口或 48 千兆网口,上行有 2 万兆光口或 4 万兆光口的配置较多。下行使用 RJ-45 的网线接口,上行使用 SFP+ 槽进行连接。

    主要作为企业中接入交换机使用,支持电源冗余。

  • 框式交换机

    框式交换机是指在机框内组合多个接口模块的交换机。可以根据需要选择端口数量和不同类型的接口模块,扩展性好,端口数量多。

    在机框中可以添加电源、风扇等组成部分,再插入管理模块和接口模块。接口模块和管理模块叫做线卡。机框上总线的主板叫做背板,可以插入线卡。

根据用途分类,交换机有几种类型

根据交换机在网络中的位置和用途,可分为三类:核心交换机(核心层)、汇聚交换机(汇聚层)和接入交换机(接入层)。
交换机类型
在这里插入图片描述

交换机有几种端口类型?

选择交换机时,需要根据实际的使用需求,以及具体的端口类型、端口数量和设备性能等参数,决定购买哪款交换机。

千兆以太网端口

大部分交换机都配置了 RJ-45 的千兆以太网接口,连接千兆接口要使用增强型5类双绞线。通过自适应功能,还可以连接百兆接口。

光纤端口

箱式交换机会配置光纤端口,主要是用于连接上行链路。为了连接万兆以太网的上行链路,通常会搭载 SFP+ 接口。

框式交换机中,一般会配置多个千兆以太网 SFP 或万兆以太网 SFP+ 接口的接口卡。

PoE 端口

接入交换机还会配 PoE 端口。Poe 端口使用网线连接 IP电话或无线 AP ,并通过网线对设备进行供电。

为了让 IP 电话或无线 AP 无需外接电源也能接入网络,通过一根网线给设备供电的技术就是 PoE 技术。PoE 技术有简化布线、节省人工成本,管理方便,使用灵活,安全等优点,得到广泛的应用。

PoE 技术作为 IEEE 802.af 在 2003 年完成了标准化工作,这个技术还用于网络摄像头、POS 终端等连接以太网的硬件设备。

上行链路端口

接入交换机和汇聚交换机要集中下行连接的所有设备流量,并将流量传输到上行的网关或核心交换机中,向网关、核心交换机传输流量的端口叫做上行链路端口,反向就叫做下行链路端口。在箱式交换机中一般会配置 2~4 个万兆上行链路端口。

下行链路端口

通常下行链路是 RJ-45 的接口,也有使用光纤接口的。一台交换机或一块板块,能提供 24 或 48 个接口。

交换机堆叠

通过堆叠线缆可以把多台交换机连接起来,成为逻辑上的一台交换机。

交换机有哪些功能?

MAC 地址数

MAC 地址数是指一台交换机最大可以学习到的 MAC 地址表数量。

生成树功能

为了避免二层环路,我们使用生成树协议( STP ),让交换机知道对方的存在,具体做法是在交换机之间交换 BPDU 数据帧。详情可看《图解 STP 》和《图解 RSTP 和 MSTP 》。

链路聚合

链路聚合是将交换机的多条线路汇聚成一条逻辑线路在网络中使用。有多个称呼:端口聚合、链路捆绑、绑定等。

如果不使用链路聚合功能,直接将交换机的多个物理端口连接起来,可能会导致网络环路。如果使用生成树协议,又会避开某些链路,导致只有一条物理链路可用。如果使用链路聚合,把几条物理链路聚合成一条逻辑链路,即使某一条物理链路断开,由于逻辑线路还有其它物理链路在维持,因此通信也不会中断,到达线路冗余的效果。

VLAN

将广播域分割成一个个逻辑网段的功能叫做 VLAN

端口镜像

将某个端口接收和发送的数据帧复制到镜像端口的功能叫做端口镜像,被复制的源端口叫做监控端口。

为了分析网络故障或检测网络中的流量,交换机会将收到的数据帧复制一份并转发到网络分析设备或流量监控设备中。

QoS 优先级队列

QoS 是 Qual it y of Ser vi ce 的缩写,也叫做服务质量。当数据通过网络设备时,根据通信种类控制通信优先级和带宽的功能。通常是将声音、视频等数据定义为高优先级,高优先数据优先处理,保障这类数据的稳定和低延迟。

除了交换机在二层进行的 QoS 控制外,还有路由器和三层交换机的三层( IP)的 QoS 控制,以及 TCP 进行的四层的 QoS 控制。

IEEE 802.1p 标准完成了对二层的 QoS 优先级控制的标准化工作。通过3bit 长度的优先级控制信息,定义了从 0 到 7 的 8 个优先级,即 CoS 值(服务等级值),交换机会优先转发值大的数据帧。

MAC 地址过滤

为了网络安全,只让指定的设备接入网络。二层交换机提供了以数据帧的头部信息进行过滤的功能。具体过程是,先设置一个过滤条件,比如目的 MAC 地址、源 MAC 地址等,满足条件的数据帧通过,阻断不满足条件的数据帧。

考虑到伪造 MAC 地址的情况发生,还可以跟 802.1X 一起使用。三层交换机或路由器可以根据 IP 头部信息完成 IP 通信过滤的功能。

基于端口的认证

在交换机中,只有通过认证的客户端才能使用有线端口。这个功能由 IEEE 802.1X 完成标准化,对接入 LAN 的客户端进行认证的机制。

当 PC 连接交换机时,认证过程启动。根据发送方的 MAC 地址信息进行客户端识别,通过用户名、口令或证书等认证信息进行用户认证。对于没有认证的客户端发来的数据帧,交换机只接收包含认证信息的数据帧,其余的全部丢弃。对于认证失败的客户端发来的数据帧,交换机就直接丢弃不会进行转发。
802.1X 要素
要使用基于端口的认证功能,客户端的电脑和交换机都要支持 802.1X 认证功能,缺一不可。

802.1X 认证中使用 PPP 的扩展协议 EAP ,通过 EAPOL 协议封装 EAP认证消息,然后在 LAN 中进行传输。认证结束之前,客户端电脑只能进行EAPOL 通信。
在这里插入图片描述

网络管理

远程管理、监控和配置网络设备可以使用 SNMP 协议。SNMP 协议可以对整个网络结构内的交换机和其它网络设备进行集中统一的管理。

被 SNMP 管理的网络设备叫做 Agent ,管理网络的设备叫做 Manager

交换机的架构是由什么组成?

交换机的基本架构是由 RJ-45 接口、PHY 、MAC 等模块的 NIC 和管理由NIC 收发帧缓存、转发表的软件组成,通过查看转发表信息,在 NIC 之间进行数据帧交互。
在这里插入图片描述

路由器

随着接入网络的终端越来越多,网络规模越来越大,但是二层交换机的容量和性能有限,无法接入日益增多的终端。于是就有了三层网络设备路由器,连接不同网段的二层交换机,进而把全世界的网络都连接起来。

什么是路由器

路由器是负责网络层的工作的硬件设备,通过不同端口,连接不同的网段,识别 目的地址,根据路由表进行数据包转发。

在这里插入图片描述

什么是路由选择?

路由器为数据包选择路径的过程叫做路由选择

路由器从接口收到数据包后,根据目的地址的信息进行路由选择,按照选择结果 将数据包从对应接口转发出去。

转发的路线叫做路径

路由器在路由选择时,参考的信息叫做路由表。路由器通过这些信息判断数据包 转发到哪个网络。

路由表由多个路由表项组成,路由表项既可以手动设置静态路由,也可以通过路由协议自动生成动态路由。

在这里插入图片描述
路由选择在网络层完成,过程如下:
在这里插入图片描述

什么是转发?

路由选择的过程需要根据目的 IP 地址的信息,判断将数据包转发到哪个网络。 路由器的一个接口对应一个网络,发送到不同网络,是指路由器从某个接口收到 数据,然后从另外的接口发送出去。

把数据包从接收接口到发送接口的发送过程叫做转发
在这里插入图片描述

4、路由器设备有哪些类型?

一种是在 PC 或 Service 中运行路由器软件当做一台路由器使用。

还有一种更常见、更普及的路由器,是安装路由器专用操作系统和配备专用硬件 的设备,也叫做硬件设备。

与路由器软件对比,专用的硬件设备有许多优点:

  • 提供更容易使用的接口
  • 操作简单
  • 可以在短时间完成加载
  • 定制系统可以轻松的提高吞吐量
  • 可靠性更高
  • 对于路由器功能来说,成本更低

根据性能分类,路由器有哪些类型?

路由器根据性能,可以分为高端路由器、中端路由器和低端路由器,以及价格便宜的家用路由器,共 4 种类型。
在这里插入图片描述

高端路由器

高端路由器的性能最好,主要作为骨干网络的核心路由器使用,在数据中心、电信运营商网络中完成网络互连等功能。
在这里插入图片描述
这类路由器又叫做框式路由器,有可以插入多块扩展卡的卡槽。扩展卡的类型丰 富,主要有路由引擎、交换结构、线卡等。
在这里插入图片描述
框式路由器不仅可以控制接口的数量,还可以增强设备的交换容量,具有引擎冗余功能。

当某一个模块发生故障时,无需关闭路由器电源,在其它模块仍在工作状态下,只替换发生故障的扩展卡即可修复,这种操作叫做热插拔在线插拔

中端路由器

中端路由器通常作为企业的核心路由器,是整个企业网络的中心。
在这里插入图片描述
中端路由器可分为两类,一类是在机框上配置固定数量接口的设备,无法额外添 加端口,叫做箱式路由器;另一类是可以根据需要的端口,添加对应端口的可选 模块,进而扩充端口数量的设备,叫做模块式路由器

低端路由器

低端路由器用于中小企业或大型企业营业部、或分支机构。同中端路由器一样,也分成两类,一类是端口数量固定的箱式路由器,另一条是端口数量和类型可变的模块式路由器。

地址如何分类?

IP 地址分为五类,分别是 A 类B 类C 类D 类E 类。前面三类是根据固定的网络位和主机位区分的。A 类地址范围是 0.0.0.0 ~ 127.255.255.255 ,前面 8 位是网络位,剩余的是主机位。B 类地址范围是 128.0.0.0 ~ 191.255.255.255 ,前面 16 位是网络位,后面 16 位是主机位。C 类地址范围是 192.0.0.0 ~ 223.255.255.255 ,前面 24 位是网络 位,后面 8 位是主机位。

还有用于组播的 D 类地址,范围是 224.0.0.0 ~ 239.255.255.255 ,用于研究的 E 类地址,范围是 240.0.0.0 ~ 255.255.255.255 。

单播、广播、组播和任意波的区别是什么?

单播:向目的 IP 地址的单台主机发送数据。使用 IPv4 中的 A 类、B 类、C 类地址。

广播:向同网段内的所有主机发送数据。使用 255.255.255.255 或主机为全 是 1 的地址。

组播:使用专用 IP 地址,向特定的多个主机发送相同的数据。使用 IPv4 中的 D 类地址。

任意播:一个任意播地址分配给多个主机,还有多条路由到达相同的目的地,选 择代价最小的主机发送数据。只在 IPv6 中存在。
在这里插入图片描述

接口有哪些类型?

IP 地址是网络层的逻辑地址。MAC 地址是数据链路层的物理地址,与物理接口一一对应,无法修改,也不存在重复的地址。

在这里插入图片描述

什么是 ARP ?

ARP 是通过 IPv4 地址获取 MAC 地址的网络协议。路由器在发送 IP 包时, 会用 ARP 获取以太网帧需要的目的 MAC 地址。完成 ARP 解析后,解析结果会保存在 ARP 表中。这个表项有一定时限,这个时限叫做老化时间,超时后需要再次解析 ARP 。

在这里插入图片描述

什么是 DHCP ?

DHCP 是为主机(客户端)自动配置 IP 地址、子网掩码、域名、DNS 服务器、默认网关等信息的网络协议。
在这里插入图片描述
如果手动为每台主机配置 IP 地址,是非常繁琐的,而且容易出错。而使用 DHCP 就可以自动完成地址分配,非常的方便和快捷。

什么是 PPPoE ?

PPPoE 就是以太网上的点对点协议,在 LAN 上完成用户认证,并分配 IP 地 址的网络协议。用于提供网络接入服务,让设备接入互联网。
在这里插入图片描述

路由表包含哪些信息?

路由表包含路由选择的必要信息,主要内容如下:

  1. 目的 IP 地址:IP 包的目的地址。
  2. 子网掩码:表示目的 IP 地址有多少位是网络位。
  3. 网关:IP 包下一跳的 IP 地址。
  4. 网络接口:IP 包从哪个路由器接口发送出去。
  5. 度量值:当有多条到达目的地的不同路径时,度量值越小表示优先级越高。

五个内容组成一条路由表项。

什么是最长匹配原则?

如果路由表中出现多条到达同一个目的网络的表项时,选择子网掩码最长、度量 值最小的表项,这就是最长匹配原则
在这里插入图片描述

什么是默认网关?

如果路由表中不存在满足条件的表项,那么会根据路由表中的默认路由表项进行 转发。默认路由表项的 IP 地址是 0.0.0.0 ,子网掩码是 0.0.0.0 ,即 0.0.0.0/0 。默认路由表项又叫做默认网关。如果路由表中不存在默认网关,那 么路由器会告知错误,并丢弃这个数据包。
在这里插入图片描述

什么是静态路由

手动在路由器上设置的路由表项就叫做静态路由
在这里插入图片描述

什么是动态路由?

当网络规模越来越大,路由器的数量越来越多时,通过手动配置路由表项是不可能的,这就要使用动态路由协议,在路由器之间交换信息自动生成路由表项。
在这里插入图片描述
如果网络使用动态路由,需要消耗一定的时间从其它路由器获取路由信息,路由表在这个过程中会逐渐增大,最终所有的路由器都获取到完整的路由表,这个过程叫做收敛。路由表从初始状态到收敛完成花费的时间叫做收敛时间,收敛时间越短,网络越稳定。通常,路由器数量越多,收敛时间越长,同时收敛时间还跟路由算法有关。算法不同,收敛时间的长短也不同。

使用动态路由时,有三种情况会发送路由器之间的路由信息交互:

  • 首次运行动态路由协议时
  • 网络中添加新的路由器或新的链路时
  • 网络中路由器离线或链路端口导致网络故障时

动态路由有哪些类型?

随着 IP 网络的发展,网络规模已经很大了,无论哪种路由协议都不能完成全网 的路由计算,因此网络分成了很多个自治系统( AS )。在自治系统内部运行 的 IGP 和在 AS 之间运行的 EPG 两类。

其中,EGP 广泛使用的是 BGP

IGP 最常用的是 RIP= 和 OSPF

根据不同的最优路径算法,IGP 可分为距离矢量型链路状态型混合型
在这里插入图片描述

什么是 RIP ?

RIP 是使用到达目的网络需要经过的跳数作为度量值,也就是需要经过多少个 路由器。通常 RIP 每 30 秒更新一次路由信息。当网络规模太大时,会出现路径无法收敛的情况,定义了 16 跳的限制距离。当路由器收到度量值 16跳以上的信息,则认为网络不可达。
在这里插入图片描述
RIP 除了 RIPv1 外,还有升级的 RIPv2 和 IPv6 使用的 RIPng

RIPv1 使用广播交换路由信息,是有类路由协议。RIPv2使用组播交换路由信息,是无类路由协议,还有路由信息的认证功能。

RIPng 使用组播交换路由信息,由于 IPv6 协议自带认证和加密功能,因此 RIPng 不需要携带认证功能。

由于距离矢量型路由协议依靠相邻路由器的信息进行路由选择,无法了解整个网络结构。为了防止环路,需要使用水平分隔技术或毒性逆转方法进行放环。

什么是 OSPF?

OSPF 是用于大规模网络的 IGP ,是运营商和企业首选的动态路由协议。还有使用组播的 MOSPF 和对应 IPv6 的 OSPFv3 作为 OSPF 扩展的动态路由协议。
在这里插入图片描述
OSPF 会把网络分隔成多个区域,形成一级级联骨干区域 0 的结构。以区域为单位进行管理,能够将网络变化限制在区域内,缩短收敛时间。只有区域 0 网 络叫做单一区域 OSPF ,由多个区域构成的网络叫做多区域 OSPF
在这里插入图片描述

什么是 BGP ?

BGP 是 AS 直接进行路由选择的 EGP 。由于 BGP 需要获取大量的、可靠的网络信息,因此采用 TCP 协议的 179 端口进行数据传输。

在这里插入图片描述
AS 之间通过 AS 编号区分,编号范围是 1 ~ 65535 。其中 64512 ~ 65535 是私有 AS 编号,和私有 IP 地址一样,可以在私有网络中使用。

BGP 的路由信息和 IGP 的路由信息不在一起管理,运行 BGP 的路由器会同 时有 IGP 和 EGP 两张路由表

什么是 IS-IS ?

IS-IS 也是用于大型网络的 IGP ,属于链路状态型的路由协议,也可以用在AS 之间。

IS-IS 是经过 ISO 标准化的路由协议。IS 是指转发包的系统,也就是路由器。与 IS 对应的是 ES ,指无法进行路由选择的主机。

什么是路由重分发?

当网络中运行多个路由协议时,各个路由协议的路由信息互相独立。但是在路由器上配置路由重分发,就可以在多个路由协议之间共享路由信息。比如:将通过 BGP 获取的外部 AS 路由信息加入到 OSPF 中,也能够将静态路由向其它路 由协议分发路由信息。

什么是管理距离?

管理距离是用来表示路由信息的可信度,数值越小可信度越高。获取路由信息, 通常有三种来源,一种是与路由器直连的网络,一种是配置的静态路由,还有一种是根据各种动态路由协议获取的路由。如果有多条相同的路由,会选择管理距离值最小的路由。
在这里插入图片描述

什么是 IP 隧道?

通信协议被其它的通信协议封装后,进行转发的技术叫做隧道技术。在网络中的两台路由器配置隧道后,就可以在路由器之间建立一条虚拟的通信链路。

在这里插入图片描述

什么是路由器冗余?

路由器冗余是即使有一部分路由器发生故障,也能够通过线路的切换来进行正常工作,达到网络不间断的效果。路由器通常用来接入互联网或者作为核心数据通信枢纽,一旦发生故障,会造成巨大的影响。但故障是无法完全杜绝的,这种情况下还要向用户提供不间断的业务,就需要将路由器冗余。

在这里插入图片描述
冷备份:平时不使用的备份设备,当运行的设备发生故障时,使用备份设备进行 替换。这种方式使用简单,但是需要一定的时间进行设备的替换和启动,这个过 程会中断用户的网络。

热备份:主设备和备用设备同时运行,当主设备故障时,自动切换到备用设备。 这种方式无需人工干预,系统自动切换,最快的切换速度在毫秒级。

替换:在冗余结构中,停止主设备运行,使用备用设备进行工作的过程叫做替换。

回退:替换后恢复到原来的运行状态,也就是运行的设备从备用设备切换到主设 备的过程叫做回退。

路由器冗余有哪些种类?

在这里插入图片描述
在使用主备方式时,会用到 VRRP 这种冗余协议,还有思科私有的 HSRP 冗余协议。

双活方式会使用到负载均衡技术,适用于两组主备结构,还可以运用到等价多路径路由DNS 轮询等技术。

由 1 台活跃设备和 1 台备用设备组成的冗余结构叫做 1+1 冗余结构,是最常见的热备方式,通常用于企业网的数据中心以及互联网网关中。

集群是由 N 台活跃设备和 1 台备用设备组成的 N+1 冗余结构。在运营商需要处理大流量转发的情况下,路由器大部分采用 N+1 集群的冗余模式。

由 N 台活跃设备和 N 台备用设备组成的冗余结构叫做 2N 冗余结构。

什么是认证?

认证是指用户接入网络时,要求用户输入认证信息(用户名和密码)、验证认证 信息是否正确、确认正确后允许用户接入网络的过程。认证信息不正确时,网络 会拒绝用户的接入请求。常用的认证技术有 RADIUS 和 TACACS+ 。

什么是 QoS ?

QoS 提供保证通信质量的功能,主要分为带宽控制和优先级控制。使用优先级对流量进行分类的过程叫做类别,根据流量的每一个类别进行带宽控制或优先级控制的过程叫做 CoS

路由器有哪些常用命令?

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值