From c41fd3731a5a348356183f7af22308e1599b8dee Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Wed, 13 Jun 2018 13:14:10 +0800 Subject: [PATCH] auto commit --- notes/计算机网络.md | 253 +++++++++++++++++++------------------------- 1 file changed, 111 insertions(+), 142 deletions(-) diff --git a/notes/计算机网络.md b/notes/计算机网络.md index ae1b9064..72ca208c 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -16,23 +16,22 @@ * [局域网](#局域网) * [PPP 协议](#ppp-协议) * [CSMA/CD 协议*](#csmacd-协议) - * [扩展局域网*](#扩展局域网) * [MAC 层*](#mac-层) + * [扩展局域网*](#扩展局域网) * [四、网络层*](#四网络层) - * [网际协议 IP 概述](#网际协议-ip-概述) + * [概述](#概述) * [IP 数据报格式](#ip-数据报格式) * [IP 地址编址方式](#ip-地址编址方式) * [IP 地址和 MAC 地址](#ip-地址和-mac-地址) * [地址解析协议 ARP](#地址解析协议-arp) - * [路由器的结构](#路由器的结构) - * [路由器分组转发流程](#路由器分组转发流程) - * [路由选择协议](#路由选择协议) - * [路由算法分类](#路由算法分类) * [网际控制报文协议 ICMP](#网际控制报文协议-icmp) * [分组网间探测 PING](#分组网间探测-ping) * [Traceroute](#traceroute) * [虚拟专用网 VPN](#虚拟专用网-vpn) * [网络地址转换 NAT](#网络地址转换-nat) + * [路由器的结构](#路由器的结构) + * [路由器分组转发流程](#路由器分组转发流程) + * [路由选择协议](#路由选择协议) * [五、运输层*](#五运输层) * [UDP 和 TCP 的特点](#udp-和-tcp-的特点) * [UDP 首部格式](#udp-首部格式) @@ -139,22 +138,23 @@ ### 1. 五层协议 -- 应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。 +- **应用层** :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。 -- 运输层:提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。 +- **运输层** :提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。 -- 网络层:为主机之间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。 +- **网络层** :为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。 -- 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的节点提供服务。数据链路层把网络层传来的分组封装成帧。 +- **数据链路层** :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的节点提供服务。数据链路层把网络层传来的分组封装成帧。 -- 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。 +- **物理层** :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。 ### 2. 七层协议 其中表示层和会话层用途如下: -- 表示层:数据压缩、加密以及数据描述。这使得应用程序不必担心在各台主机中表示/存储的内部格式不同的问题。 -- 会话层:建立及管理会话。 +- **表示层** :数据压缩、加密以及数据描述。这使得应用程序不必担心在各台主机中表示/存储的内部格式不同的问题。 + +- **会话层** :建立及管理会话。 五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。 @@ -246,8 +246,8 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中 ## 信道分类 -- 点对点信道:一对一通信方式; -- 广播信道:一对多通信方式。 +- 点对点信道:一对一通信方式 +- 广播信道:一对多通信方式 ## 三个基本问题 @@ -302,12 +302,25 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 - **载波监听** :每个站都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。 - **碰撞检测** :在发送中,如果监听到信道已有其它站正在发送数据,就表示发生了碰撞。虽然每一个站在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。 -

- 记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期** 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定,从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 +

+ +## MAC 层* + +MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器(网卡),一台主机拥有多少个适配器就有多少个 MAC 地址,例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。 + +

+ +在 MAC 帧中: + +- **类型** :标记上层使用的协议; +- **数据** :长度在 46-1500 之间,如果太小则需要填充; +- **FCS** :帧检验序列,使用的是 CRC 检验方法; +- **前同步码** :只是为了计算 FCS 临时加入的,计算结束之后会丢弃。 + ## 扩展局域网* ### 1. 在物理层进行扩展 @@ -338,24 +351,11 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。 -

- -## MAC 层* - -MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器(网卡),一台主机拥有多少个适配器就有多少个 MAC 地址,例如笔记本电脑普遍存在无线网络适配器和有线网络适配器。 - -

- -在 MAC 帧中: - -- **类型** :标记上层使用的协议; -- **数据** :长度在 46-1500 之间,如果太小则需要填充; -- **FCS** :帧检验序列,使用的是 CRC 检验方法; -- **前同步码** :只是为了计算 FCS 临时加入的,计算结束之后会丢弃。 +

# 四、网络层* -## 网际协议 IP 概述 +## 概述 因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。 @@ -369,7 +369,7 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器 - 网际控制报文协议 ICMP(Internet Control Message Protocol) - 网际组管理协议 IGMP(Internet Group Management Protocol) -

+

## IP 数据报格式 @@ -383,18 +383,18 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器 - **总长度** : 包括首部长度和数据部分长度。 -- **标识** : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。 - -- **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 - -

- - **生存时间** :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。 - **协议** :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。 - **首部检验和** :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。 +- **标识** : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。 + +- **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 + +

+ ## IP 地址编址方式 IP 地址的编址方式经历了三个历史阶段: @@ -451,109 +451,6 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为

-## 路由器的结构 - -路由器从功能上可以划分为:路由选择和分组转发。 - -分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 - -

- -## 路由器分组转发流程 - -- 从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。 -- 若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付; -- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器; -- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器; -- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; -- 报告转发分组出错。 - -

- -## 路由选择协议 - -互联网使用的路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。 - -互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。 - -可以把路由选择协议划分为两大类: - -- 内部网关协议 IGP(Interior Gateway Protocol):在 AS 内部使用,如 RIP 和 OSPF。 -- 外部网关协议 EGP(External Gateway Protocol):在 AS 之间使用,如 BGP。 - -

- -### 1. 内部网关协议 RIP - -RIP 是一种分布式的基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1,跳数最多为 15,超过 15 表示不可达。 - -RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。 - -距离向量算法: - -- 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1; -- 对修改后的 RIP 报文中的每一个项目,进行以下步骤: - - 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中; - - 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。 -- 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。 - -RIP 协议实现简单,开销小,但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。 - -### 2. 内部网关协议 OSPF - -开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。 - -开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。 - -OSPF 具有以下特点: - -- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。 -- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。 -- 只有当链路状态发生变化时,路由器才会发送信息。 - -所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。 - -### 3. 外部网关协议 BGP - -AS 之间的路由选择很困难,主要是因为互联网规模很大。并且各个 AS 内部使用不同的路由选择协议,就无法准确定义路径的度量。并且 AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。 - -BGP 只能寻找一条比较好的路由,而不是最佳路由。它采用路径向量路由选择协议。 - -每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 - -

- -## 路由算法分类 - -### [](https://github.com/Gouden-Den/Interview-Notebook/blob/213ec425d0e4e4d2b6f8e7c5a56e0d5d3d86c4ac/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C.md#%E9%9D%9E%E8%87%AA%E9%80%82%E5%BA%94%E7%AE%97%E6%B3%95%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E7%AE%97%E6%B3%95)非自适应算法,静态路由算法 - -路由表固定。简单易行,但适应性差,只适用于负载稳定、拓扑变化不大的网络。 - -最短路径算法(Dijkstra): - -- 用 Dijkstra 算法求源点与目的顶点之间的最短路径。 - -### 自适应算法,动态路由算法 - -路由表定时刷新。适应能力强,但算法复杂,实现难度大。 - -距离矢量路由算法(D-V): - -- 每个节点都定期地测量它到邻节点的距离,然后将它们的路由表传送给所有相邻节点,这里的路由表包含的内容有:每条路径的目的地址、本节点到该目的地址的代价 -- 每个节点根据收到的相邻节点的路由信息,按照最短路径原则更新自己的路由表 -- 缺点:交换的路径信息量大、路径信息不一致、收敛速度慢、不适合大型网络 - -链路状态路由算法(L-S): - -- 发现邻居节点,并学习它们的网络地址 -- 测量它到每个邻居节点的延迟或开销 -- 将所有学习到的内容封装成一个分组 -- 将这个分组发送给所有其它路由器 -- 利用静态路由算法计算到每个其它路由器的最短路径 -- 缺点:每个路由器需要有较大的存储空间、计算工作量大 - -距离矢量路由算法将自己对全网拓扑结构的认识告诉给邻居;链路状态路由算法将自己对邻居的认识泛红给全网。 - ## 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 @@ -603,6 +500,78 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。

+## 路由器的结构 + +路由器从功能上可以划分为:路由选择和分组转发。 + +分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 + +

+ +## 路由器分组转发流程 + +- 从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。 +- 若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付; +- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器; +- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器; +- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; +- 报告转发分组出错。 + +

+ +## 路由选择协议 + +路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。 + +互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。 + +可以把路由选择协议划分为两大类: + +- 自治系统内部的路由选择:RIP 和 OSPF +- 自治系统间的路由选择:BGP + +### 1. 内部网关协议 RIP + +RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1,跳数最多为 15,超过 15 表示不可达。 + +RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。 + +距离向量算法: + +- 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1; +- 对修改后的 RIP 报文中的每一个项目,进行以下步骤: + - 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中; + - 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。 +- 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。 + +RIP 协议实现简单,开销小,但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。 + +### 2. 内部网关协议 OSPF + +开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。 + +开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。 + +OSPF 具有以下特点: + +- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。 +- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。 +- 只有当链路状态发生变化时,路由器才会发送信息。 + +所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。 + +### 3. 外部网关协议 BGP + +BGP(Border Gateway Protocol,边界网关协议) + +AS 之间的路由选择很困难,主要是因为互联网规模很大。并且各个 AS 内部使用不同的路由选择协议,就无法准确定义路径的度量。并且 AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。 + +BGP 只能寻找一条比较好的路由,而不是最佳路由。 + +每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 + +

+ # 五、运输层* 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。运输层提供了进程间的逻辑通信,运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看见的好像在两个运输层实体之间有一条端到端的逻辑通信信道。