马上又到了忙碌的考试周/月,于是在此复习计网I的内容。
部分内容已经在期中复习写过了,大部分这里就不再重复,比较偏向计算。
欢迎按照上面目录直接跳转到对应部分,下面也做了一个只有例题的目录。
我们复习一下网络延迟的定义:
延迟(Latency)是指数据包从源站传输到网络目的地所需的时间。传输延迟可以定义为从源站发出数据包的第一个比特开始,到整个数据包到达目的地所需的时间。
Propagation delay = Length of Cable / Speed of Signal
Transmission delay = Size of Message / Speed of Transmission
Transfer delay = Propagation delay + Transmission delay
我们来看下面这几个例题,根据实际情况计算网络延迟:
Q1. Sender和Receiver之间相隔两个1 Gbps的本地链接和一个交换机。发送的消息大小为5000 bits,每条链路之间会有10 µs的传播延迟(Propagation delay)。总传输延迟(Transfer delay)是多少? (假设交换机在接收到消息的最后一位后立即开始转发。)
对于这样的一个问题,我们逐个分析每一条链路。
在第一条链路中,存在一个PD和一个TD,此时它的总延迟Transfer delay = PD + TD = 10 µs + 5000/(1*109) = 15 µs
而第二条链路PD和TD值一样,故它的总延迟也和第一条链接一样。
最后总延迟为Transfer delay = 15 µs * 2 = 30 µs
同理,如果将题目改成多个链路的情况,如T2:
Q2. 在Q1的基础上,Sender和Receiver之间相隔了3个交换机,求其总延迟(Transfer delay).
和上一题一样,这个图中有4条一样的链路,它们每一个的Transfer delay = PD + TD
。
故整个过程中的总延迟为Transfer delay = 4 * (PD + TD) = 60 µs
通过Q1, Q2,我们可以发现在计算延迟时,经过一条链路所消耗的时延为PD + TD
,若路径中的链路均相同时,经过n条相同链路的时延为n * (PD + TD)
我们之前都是在计算发送一个数据报产生的延迟,如果有多个数据报的情况呢,请看Q3:
Q3:如果在Q2的基础上,发送者发送10个大小均为500 bits的数据报,求其总延迟(Transfer delay).
我们根据Q1和Q2的情况,知道了原来数据报大小为5000 bits,现在分成了10个,那其中一个数据报的传输延迟TD' = TD/10 = 0.5 µs
. 而传播延迟不变。
但是因为数据报的数量变多了,传播延迟的总数也会变多。我们先分析第一个数据报的情况。
第一个数据报经过每一条链路产生的延迟为4 * (TD/10 + PD)
。
当多个数据报同时发送时,因为它们使用的是相同的物理链路和传输路径,它们在传输介质上的传播时延是相同的。而传播时延是由信号在传输媒介中传播的速度和距离决定的,是链路的固定的值,不会因为同时发送多个数据报而发生变化,每条链路仅需要计算一次。
因此,剩下的9个数据报经过每一条链路产生的延迟为 9 * TD/10
但是,我们还需要考虑一个时间重合的情况,当一个数据报传输的同时,后一个数据报也接着在传输,这些数据报的传输在同一段时间内共享了相同的传输路径和资源。共享的时间为一个TD/10
,故前三条链路中的传输时延不必重复计算。
而在最后的链路上,Receiver接收到一个数据报的时候,下一个数据报即将以1 Gbps的速度接收,所需要的时间为一个TD/10
。此时已经没有了时间重叠,故需要计算最后一段链路的传输延迟,9个数据报的传输延迟为9 * TD/10
。
故最后总延迟为:Transfer delay = 4 * (TD/10 + PD) + 9 * TD/10 = 13 * TD/10 + 4 PD = 46.5 µs
我们的例子中,每条链路的速率都是一样的,如果有一条链路速率变化会发生什么呢。如Q4.
Q4. 在Q3的基础上,在Switch2和Switch3之间的速率突变为1 Mbps,求其总延迟(Transfer delay).
如同Q3一样,我们可以先计算出其他3条链路的情况,第一个数据报产生的延迟为3 * (1/10 TD + PD)
。在第三条链路上,速率突变成1 Mbps,此时传输延迟变成 500/(1*106) = 1/10 TD * 103
,传播延迟不变,故第一个数据报的总延迟为 (3 + 1000) * 1/10 TD + 4 PD
。
其他数据报只考虑传输延迟,它们在第3条链路上的传输延迟变成 9 * 1/10 TD * 103
但是因为传输速率变小了的问题,当前一个数据报被Switch3收到以后会立刻以1 Gbps的速率,消耗1/10 TD
时间发出去,但是Switch3收到下一个数据报还需要以1 Mbps的速率,消耗1/10 TD * 103
的时间才能收到。中间产生了一个空窗期,这段延迟时间也需要计算进去。
故最后总延迟为:Transfer delay = (3 + 1000) * 1/10 TD + 4 PD + 9 * 1/10 TD * 103 + 9 * (1000 - 1) * 1/10 TD = 13 * TD/10 + 4 PD = 9537 µs
我们来总结一下这类题的计算技巧:
PD + TD
,若路径中的链路均相同时,经过n条相同链路的时延为n * (PD + TD)
。What are the differences between Interior Gateway Protocol (IGP) and Exterior Gateway Protocol (EGP)? List some example of them.
内部网关协议(IGP)和外部网关协议(EGP)有哪些区别?请举例说明。
What algorithm is used by distance vector routing protocols and link state routing protocols?
距离矢量路由协议和链路状态路由协议使用了什么算法?
What are the features of distance vector routing protocols and link state routing protocols?
距离矢量路由协议和链路状态路由协议的特点是什么?
下面是两个路由协议的例题:
What are the next hop addresses and outgoing interfaces for the packets?
如图是一个路由器的路由表,找到下面数据包经过路由器的下一跳地址。
- To: 192.168.1.11
- To: 172.16.1.11
- To: 172.16.2.22
- To: 255.255.255.255
我们可以根据路由表的信息来判断这些数据包的下一跳地址。从路由表可以知道,路由器与10.0.0.0/8和子网172.16.1.0/24直连,去192.168.1.0/24子网经过172.16.1.2,去192.168.2.0/24子网通过10.10.10.2。使用静态路由,通过 172.16.6.3,到达200.200.200.0/24,同时配置了一个静态路由,统一通过172.16.6.4。
The routing table is known to have the following routing records for the following subnets/addresses, which record will be matched in preference to the given IP address?
已知路由表中有如下子网/地址的路由记录,请问给出的IP地址会优先匹配哪条记录?Routing Table:
- 192.168.1.0/25
- 192.168.1.64/27
- 192.168.1.80/28
- 0.0.0.0/0
IP: (a). 192.168.1.90, (b). 192.168.1.100, (c). 192.168.1.150
我们首先计算这些子网的主机范围。
我们将这些地址用框图画出来,可以发现它们是包含关系。
接下来考虑这些IP地址的覆盖范围。
对于都能覆盖到的IP,我们往往会默认选择最精确的那个范围(范围最小),即子网3,故:
What three tables are maintained by EIGRP for each routed protocol?
What information are stored in these tables?
Which tables does EIGRP store the primary route (successor) to the destination?
Which tables does EIGRP store the backup route (feasible successor) to the destination?
EIGRP 为每个路由协议维护哪三个表格?
这些表中存储了哪些信息?
EIGRP 在哪些表中存储了到目的地的主路由(后继路由)?
EIGRP 在哪些表中存储了通往目的地的备份路由(可行后继路由)?
EIGRP利用邻居表(IP EIGRP Neighbor Table)和拓扑表(IP EIGRP Topology Table)中的信息建立路由信息,然后基于复合度量值计算出首选路由,并存储在路由表(IP Routing Table)中。
IP EIGRP Neighbor Table中记录了直接连接的相邻EIGRP邻居路由器和本地接口的列表。即该路由器的Next Hop们。
IP EIGRP Topology Table中记录了从每个EIGRP邻居获知的所有路由列表,并标识后继路由(best successor)和备选/可行后继(backup/feasible successor)路由。
IP Routing Table记录了,EIGRP拓扑表和其他路由过程中的最佳(后继)路由列表。(注意:可行后继路由不存在Routing Table中)。
总结一下:
How can EIGRP determine the feasible distance, reported distance, successor and feasible successor for a destination network?
EIGRP 如何确定目标网络的可行距离、报告距离、后继路由和可行后继路由?
What are used as metric for EIGRP? How to calculate the metric for a destination network?
EIGRP 的度量指标是什么?如何计算目标网络的度量?
EIGRP使用一些算法计算后继路由和备份路由的度量值(Metrics),并将它们写入拓扑表(IP EIGRP Topology Table)。
路径上的最小开销,称为可行距离(FD, feasible distance)。如果路由有FD的度量值被称为后继路由/主路由。后继可以有多个路由器,它们的FD一样。
邻居路由器通告的路由开销,称为报告距离(RD, reported distance)。如果邻居路由RD小于原始的后继路由FD,则该邻居路由可以成为后备路由/可行后继路由。
在默认条件下,Metrics的表达式为:
EIGRP bandwidth = (107/ bandwidth) * 256
EIGRP delay = (delay /10) * 256
Metrics = EIGRP bandwidth + EIGRP delay = 256 * (107/bandwidth kbps + delay/10)
bandwidth
是路由上沿着任何接口的最低配置带宽,单位为kbps。delay
是从源路由到目的路由的延迟之和,单位为µs。
What are the operations of DUAL?
DUAL 有哪些操作?
扩散更新算法(Diffusing Update Algorithm, DUAL)是Cisco的EIGRP路由协议使用的算法,用于确保在可能导致路由环路的情况下,对给定路由进行全局重新计算。
DUAL维护一个与路由表分开的拓扑表,其中包括到目标网络的最佳路径和DUAL确定为无环的备用路径。
如果一条路径变得不可用,DUAL将在其拓扑表中搜索有效的备用路径。
通过下面一个例子可以理解DUAL的过程,如下拓扑图中:
在稳定状态下,DUAL维护的各拓扑表如下:
因为Router A和Router B直接相连,它们之间的仅有一条记录。因为不会产生环路,故B不会记录C和D。
Router C:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via B | 3 | 1 | Successor |
via D | 4 | 2 | Feasible Successor |
via E | 4 | 3 | - |
Router D:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via B | 3 | 1 | Successor |
via C | 5 | 3 | - |
via E | 5 | 4 | - |
Router E:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via D | 3 | 2 | Successor |
via C | 4 | 3 | - |
突然,Router D与Router B之间的连接断开,此时Router B和Router D最先知晓。Router D的拓扑表变为:
Router D:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Active | |
via C | 5 | 3 | - |
via E | 5 | 4 | - |
此时刚好将Router D的后继路由器删除了,于是Router D检索拓扑表中是否存在可行后继,发现刚好也没有。于是Router D进入进入Active状态,会向它的邻居发送query,请求可行的路径。
Router C收到D的query后,会在拓扑表中删除Router D的记录,于是有:
Router C:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via B | 3 | 1 | Successor |
via E | 4 | 3 | - |
但Router C仍然有Successor Router,处于Passive状态,于是回复Router D可以通过Router C到达目的地。
同时,Router E收到D的query后,同样删除Router D的记录,得:
Router E:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Active | |
via C | 4 | 3 | - |
此时将Router E的Successor删除了,故它也需要向邻居发送query。因为Router E也进入Active状态,向其他邻居Router C发送query。
Router C收到E的query后,会在拓扑表中删除Router E的记录,于是有:
Router C:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via B | 3 | 1 | Successor |
但Router C仍然有Successor Router,处于Passive状态,于是回复Router E可以通过Router C到达目的地。
Router E更新自己的状态为Passive,并设置Router C为Successor:
Router E:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via C | 4 | 3 | Successor |
处于Passive状态下的Router E会回复Router D的query,于是Router D根据收到的回复,更新自己的状态为Passive,并设置Router C为Successor:
Router D:
EIGRP | FD | RD | Topology |
---|---|---|---|
10.1.1.0/24 | 3 | Passive | |
via C | 5 | 3 | Successor |
via E | 5 | 4 | Successor |
最后,整个网络收敛。
注意在整个过程中:
Which multicast addresses are used by EIGRP to exchange the routing information?
EIGRP 使用哪些组播地址交换路由信息?
EIGRP 使用 224.0.0.10 或 FF02::A 的组播地址,以及 MAC 地址 01:00:5e:00:00:0a 进行多播通信。
下面是一个EIGRP寻找后继路由和可行后继路由的例子。如图,EIGRP发送源为Router 1,目标为Router 3.
EIGRP属于距离矢量路由协议,它是从目标开始寻找的。一步步往Router 1开始计算,最后可以得到Router 1可以从3条路走到Router 3. 我们分别计算每条路的PD和RD。
PD:
(107 / 56 + 20100 / 10) * 256 > (107 / 100 + 20100 / 10) * 256 = (10000 + 2010) * 256
(107 / (10 * 103) + 2100 / 10) * 256 = (1000 + 210) * 256
(107 / (100 * 103) + 300 / 10) * 256 = (100 + 30) * 256
我们可以发现通过Router 4计算出的RD第一部分分母比较大而第二部分分子比较小,则它的值比较小,Router 4就是后继路由。
接下来我们要找可行后继路由,需要计算除了后继路由外的RD。
(107 / (100 * 103) + 100 / 10) * 256 = (100 + 10) * 256
(107 / (10 * 103) + 1100 / 10) * 256 = (1000 + 110) * 256
我们发现直接连接的RD更小,并且将它与Via Router 4的PD比较,发现RD<PD,我们选择Router 3作为后备路由。
What three databases are maintained by OSPF? What information are stored in these databases?
OSPF 维护哪三个数据库?这些数据库中存储了哪些信息?
What types of networks need a DR (Designated Router) and BDR (Backup Designated Router) election? Why?
How to determine the DR and BDR in OSPF network?
哪些类型的网络需要选举 DR(指定路由器)和 BDR(备份指定路由器)?为什么?
如何确定 OSPF 网络中的 DR 和 BDR?
指定路由器(Designated Router, DR)和后备指定路由器(Backup Designated Router, BDR)是在多接入网络中交换 OSPF 路由信息的中心点。每个非 DR 或非 BDR 路由器将只与 DR 和 BDR 交换路由信息,而不是与网段上的每个路由器交换更新。 这样所有的拓扑信息均由DR来发布,大大减少 OSPF 流量。
对于单接入网络不存在DR和BDR。故只有多播网络和点对多点网络中才需要选举DR和BDR。
具有最高 OSPF 优先级/ID(一般是IP最大的)的路由器将被选为 DR。优先级第二高的路由器将成为 BDR。当 OSPF 优先级相同时,OSPF 将根据路由器 ID 决定 DR 的选举。选择最高的路由器 ID。
选举过程结束后,即使网络中添加了 OSPF 优先级值更高的路由器,DR 和 BDR 仍会保留其角色。
例如:
它们的优先级都一样,选取ID最大的R3为DR,第二大的R2为BDR。
What is used as metric for OSPF?
How to calculate the metric for a destination network?
OSPF 的度量指标是什么?
如何计算目标网络的度量?
每个 OSPF 路由器都应用 SPF 算法计算通往每个目标网络的最佳路径。SPF 算法将Cost相加,Cost值通常基于带宽。
路径开销(Path Cost)的计算公式为:OSPF cost = 100,000,000 / Bandwidth (bps) = 108 / Bandwidth (bps)
其值在 1 到 65535 之间。
Which multicast addresses are used by OSPF to exchange the routing information?
OSPF 使用哪些组播地址交换路由信息?
OSPF使用组播地址 224.0.0.5和224.0.0.6,OSPFv3使用组播地址 FF02::5和FF02::6。
下面是一个使用OSPF寻找DR和BDR,以及计算开销的例子。
如图是一个OSPF拓扑图,
- 有几个区域需要选举DR和BDR?
- 在子网192.168.11.0/24中,找到选举的DR和BDR路由器?
- 从Router 1开始,到子网192.168.44.0/24中的开销是多少?
108/(100 * 106) = 1
108/(64 * 103)= 1562.5
,Router 3: 108/(56 * 103)= 1785.71
108/(100 * 106)= 1
Cost = 108/(100 * 106) + 108/(64 * 103) + 108/(100 * 106) = 1564.5
,路径为R1 -> R2 -> R4 -> SubnetWhat are the differences between connect oriented and connectionless services?
Which transport protocol is providing these services?
面向连接的服务和无连接服务之间有什么区别?
提供这些服务的传输协议分别是哪个?
What functions are provided by the transport protocols of TCP and UDP?
TCP 和 UDP 的传输协议提供了哪些功能?
Which application layer protocols use TCP or UDP as transport protocol?
哪些应用层协议使用 TCP 或 UDP 作为传输协议?
What is the purpose of port number?
How to assign the port number for the application on the server site and client site?
List some common used port numbers for famous application protocols.
端口号的目的是什么?
如何为服务器端和客户端的应用分配端口号?
列出一些著名应用协议常用的端口号。
在传输层,在发送端应用程序和目的地应用程序之间流动的每个连接集称为会话。每个主机上可能运行许多应用程序或服务。传输层为每个应用程序或服务分配端口(Port),以跟踪同时通过网络的不同会话。
端口的范围使0 ~ 65535,其中分为三类:
How does TCP use three way handshake to establish a connection?
TCP 如何使用三次握手建立连接?
TCP在数据传输开始之前需要建立面向连接的会话。TCP使用三次握手(three-way handshake)建立连接。
How does TCP use sequence number and acknowledgment to provide reliable transmission?
TCP 如何使用序列号和确认号来提供可靠的传输?
TCP使用肯定应答重传(Positive acknowledgment with retransmission, PAR)技术来保证数据的可靠传输。这种技术的重要特点就是:超前校验。
其中最重要的三个参数是:
在建立连接时,如三次握手的例子,主机一般最开始使用Seq=0作为开始,第一次发送端发送Seq=0。
而接收端的回复为Seq=0(自己的0), Ack=1=0+1(发送端的0),告诉发送端接下来请从Seq=1开始给我传输数据。
发送端的确认为Seq=1(接收端的Ack), Ack=1=0+1(接收端的0)。
总结:
数据传输过程中,情况和三次握手的不太一样。举个例子,根据上面的例子的延续。
发送端从1开始发送,而接收端也是从1开始发送,故发送端发送数据例如:Seq=1, Ack=1, Len=10。
接收端回复收到数据,根据发送端的要求,从1开始发送,同时接收数据1~9后要求下次发送端从它已经发送的数据长度的后一位开始传输,它的回复可能会变成:Seq=1, Ack=11=(1+10-1)+1, Len=80。其中1+10-1表示发送的数据的最后一个字节的编号是10,而不是11,+1表示希望发送端下次从11开始发。
发送端也回复收到了,根据接收端的要求,从11开始发送数据,同时要求下次接收端从它已经发送的数据长度的后一位开始传输,它的回复例如:Seq=11, Ack=81=(1+80-1)+1, Len=20。
为了简单起见,我们可以直接认为Ack=对方Seq+对方Len,而忽略-1与+1的问题。
总结:
How does TCP use sliding window for end to end flow control?
TCP 如何使用动态窗口大小进行端到端流量控制?
TCP还通过窗口大小(window size)来控制发送主机最大发送的byte数。窗口大小可以进行动态调整,称为Sliding Window.
在一个初始化后,若在当前window size下可以成功发送,则下次调整window size为它的两倍。若发送超时或发生丢包,则window size回到上次可以重新发送的大小进行重新尝试。
下面是一个关于序列号和确认号的例题:
如图:假设已经建立了连接,在下列情况中服务器返回的确认信息(回复)的Seq和Ack是多少?之后客户端还要发送数据的话,它的Seq和Ack是多少?
根据我们之前所总结的,在传输数据时,Seq=对方Ack;Ack=对方Seq+对方Len。
很容易可以得到服务器返回的Seq=1024,Ack=12445=(12345+100-1)+1,表示服务器收到了发送端的 100 个字节的数据,从 12345 到 12444,同时希望客户端下次从12444+1开始发送。当然,为了方便记忆直接记为Ack=对方Seq+对方Len即可。
而客户端下次发送遵循以上原则,很容易得到:Seq=12445,Ack=1224.
What are the two types of application communications?
应用通信有哪两种类型?
应用层的通信分为:客户端/服务端模型(client/server model)和对等通信模型(peer-to-peer model)。
客户端/服务端模型中,请求信息的设备称为客户端,响应请求的设备称为服务端。服务端通常在后台运行服务或进程,不受终端用户的直接控制。客户端通过向服务端请求数据开始交换。每当服务器收到请求时,就会按照其协议的要求,以适当的格式与客户端交换适当的信息。
绝大部分的协议都是基于客户端/服务端模型的。
而在对等通信模型中,任何一台设备既可以作为客户端又可以作为服务端。在对等网络中,每个客户端都是服务端,每个服务端都是客户端。两者都可以发起通信,并在通信过程中被视为平等。
例如比较常见的P2P下载,点对点电话等就是使用对等通信模型。
What is the operations of DNS?
What is the difference between the authoritative or non authoritative DNS records?
DNS 的操作是什么?
权威和非权威 DNS 记录有什么区别?
DNS使用分层结构,一级一级地存储域名-IP的映射关系。如图:
在层次结构的顶层,根服务器(Root DNS servers)保存着如何到达顶级域服务器的记录。
例如www.lib.hoyue.fun
的DNS信息查询,先从本地DNS服务器,向上级DNS服务器请求地址,直到找到解析记录或到达根服务器。根服务器找到顶级域名DNS服务器.fun
,再找到二级域名DNS服务器hoyue.fun
,再找到三级域名DNS服务器lib.hoyue.fun
,最后在这个服务器上找到了www.lib.hoyue.fun
的记录。
如果当前DNS服务器是负责最终解析域名的服务器,而不是需要去询问其他服务器得到的,则称为权威服务器。否则为非权威服务器。
DNS服务器通过不同的记录来解析不同的资源类型。DNS有如下常见的记录:
What is the operations of HTTP?
What is the format of URL?
HTTP 的操作是什么?
URL 的格式是什么?
超文本传输协议(HTTP)用于传输动态/静态的网页信息。常见的Web服务器有:Apache、IIS、Nginx等。而客户端一般使用浏览器进行渲染。
HTTP使用统一资源定位符(URL)去告诉浏览器所访问的资源。它遵循如下格式:
What is the operations of email system using SMTP and POP3?
使用 SMTP 和 POP3 的电子邮件系统是如何运行的?
SMTP协议用于发送邮件,POP3协议用于接收邮件。在邮件通信中,我们将发送邮件的客户端称为邮件用户代理(MUA, Mail User Agent),中转服务器或转发邮件的服务器为邮件传输代理(MTA, Mail Transfer Agent),最后抵达的收件人所在的服务器称为邮件传递代理(MDA, Mail Delivery Agent)。
下面是一个简单邮件传输的例子,现在client需要发送一个邮件到位于account server里的账号上:
下面是传输过程:
最后,是一个关于应用层的例题:
识别以下URL中的域名部分,使用的应用层协议和传输层协议,及其端口。
URL例如,就以本文为例:https://hoyue.fun/network1_final.html
这个很简单,域名部分为hoyue.fun,使用的协议是HTTPS,使用TCP协议传输,端口号为443,就不过多解释了。