说在前面
你好!如果你前往这里是针对分析题进行复习,请移步第12章 往年常考题目,里面存放着笔者通过各种渠道获取的分析题真题题面。
资料下载
PC网口连接校园网下载考试相关资料。
(可选) PC串口连接各设备并执行重启操作。
reset saved-con Y
reboot N Y
趁这个等待时间进行下面的组网和PC配置。
QUESTION:
S1 S2 R1 R2 R3 R4六台设备却对应四台电脑
重启进程可以后台并行吗?
机房的蓝色电源按钮在关闭时都会清空配置的
一般不用特意清空
可以ctrl + G简单确认一下
正确组网
对于套件二的同学,相较以往还需要多用到R3、R4两台设备,因此四台电脑的分工需要自己考虑好。
一般主控1-2台电脑(PCB\PCC)。一定要注意留一台干净电脑用来上传配置。
建议主控PCB,PCC用于配置上传。因为实验过程与配置上传都需要频繁切换串口。
一定要注意用能卡紧的线,出现问题第一步一定是检查线路是否接触不良。
考前的所有线缆都更新了,非常好用!
如果不好用建议在考前一周跟老师反馈进行更换。
对于非PC端报文的捕获,可能需要用到集线器,借助无条件转发给其他PC实现中间报文的截获。
PC IP配置
首先禁用PC本地连接外的其他虚拟网卡。
然后迅速完成IP地址、掩码、网关的配置。
基本操作
重启后必做
在重启S后立刻执行
interface Ten 1/0/25
shutdown
interface Ten 1/0/26
shutdown
interface Ten 1/0/27
shutdown
interface Ten 1/0/28
shutdown
在重启R后立刻执行
undo interface vlan 1
首先sys 然后sysname
名字在单电脑控制多设备的时候十分关键。
交换机基操
vlan x
int vlan x
ip addr
int GE1/0/1
port access vlan x
还有一种写法:
vlan x
port GE1/0/1 [to GE 1/0/2]
int vlan x
ip addr
路由器基操
注意R3 R4虽然上面贴着E 但实际上还是G
int G0/1
ip addr
int Serial0/0
ip addr
int Loopback1
ip addr
OSPF
配置
ospf
area 0
network + 该设备的引入OSPF的ip addr + 掩码反码
题目往往会限制OSPF的范围,注意到底是哪些端口
要观察到OSPF的状态一般应该变为FULL
重启
用户态下 reset ospf process Y
调试指令
display ospf lsdb
display ospf peer
BGP
基本配置
bgp xxx
peer + 邻居 ip addr + as-number + yyy
注意OSPF可以主动hello建立peer关系,无需手动
address-family ipv4 unicast
peer + peer过的邻居的ip + enable
peer + IBGP邻居的ip + next-hop-local
这一句是额外的句子,不能用来替代peer XXXX enable
network + 要传给对方AS的路由 + mask(不是反码)
network可以细粒度调控
一般考试只有PC和loopback需要被network
重启
用户态 reset bgp all Y
路由聚合
bgp、address-family后
aggregate 聚合IP 聚合mask [detail-suppressed]
detail-suppressed保证BGP只传递聚合路由
ping 通全网
其实也就是同步问题,关键在于纯IGP路由器。
为其配好其他AS的静态路由:
ip route-static + 目标IP + mask + 下一跳IP
禁用 next-hop-local
IBGP间的路由传递往往不更新下一跳。
例如: R1——EBGP——R2——IBGP——R3
当R2传递来自于R1所在AS的路由时,R3收到的下一跳依旧与R2相同,指向R1。
R1对于R2是DIRECT可达,但对于R3便不是这样。
next-hop-local便是为此而生的,把下一条改成同AS的R2.
因此,当考试禁用next-hop-local时,
你需要配置R3到R1的静态路由,下一跳为R2即可。

对于此题,由于next-hop-local的禁用,你需要额外配置:
S2-> 1.x.0.0/16 的静态路由,S1-> 2.x.0.0\16的静态路由。
路由过滤
基于ACL
配置ACL路由策略,阻止5.0.0.0/8网段的路由传递给AS200。
acl basic 2000
rule 0 deny source 5.0.0.0 0.255.255.255
rule 1 permit source 0.0.0.0 255.255.255.255
进入bgp视图,address-family ipv4 unicast之后:
peer AS200的邻居IP filter-policy 2000 export //配置基于ACL的路由过滤
这一句是额外的句子,不能用来替代peer XXXX enable
若题目变为阻止5.0.0.0/8网段的路由传递,则需要对所有peer都进行这个命令。
基于AS-PATH
不通告来自AS200的路由,而只通告自己所在AS内部产生的路由。
ip as-path-acl 1 deny \b200$
ip as-path-acl 1 permit ^$
\b是AS号码前的分割符。
^ 表示字符串开头,^$表示 AS_PATH 为空,也即本地 AS。
若想表达通配应为 .*
如果只是不通告来自AS200的路由:
ip as-path-acl 1 deny \b200$
ip as-path-acl 1 permit .*
进入bgp视图,address-family ipv4 unicast:
对所有peer进行
peer xxx as-path-acl 1 export
基于 route policy
配置路由策略,使S1不向外通告6.0.0.0/8的路由信息,并且向外通告的路由信息的cost都为888。
关于路由本身的筛选直接用ACL:
acl basic 2001
rule 1 deny source 6.0.0.0 0.255.255.255
rule 2 permit source any
再配route-policy:
结构如下:
route-policy <名称> {permit|deny} node <节点号>
if-match <条件> # 条件判断:如果路由符合这个条件…
apply <动作> # …就执行这个动作…
route-policy xxx permit node 10
只有所有 if-match 均为 permit,该route-policy才返回permit
if-match acl 2001 # 这里利用ACL作为条件,得到deny/permit
apply cost 888 # 满足条件的 med 设置为 888, 这里的cost是bgp cost
依旧bgp,address-family,
peer 所有peer route-policy xxx export
调试指令
display bgp peer ipv4 unicast
display current-configuration configuration bgp
display bgp routing-table ipv4 unicast
NAT
四部分操作。
定义 ACL
ACL是啥? Access Control List, 说白了就只是个规则的集合。
acl basic 2000
rule permit source + 内网ip + 内网mask反码
rule deny source any # 拒绝其他
定义 NAT 地址池
nat address-group 1
address 外网ip1 外网ip2 # 地址池范围,NAT会在这里面选
启用 NAT并绑定 ACL 和地址池
interface GE xx # interface要转变为外网IP的接口
nat outbound 2000 address-group 1 # 绑定 ACL 和 group
配置缺省静态路由
ip route-static 0.0.0.0 0.0.0.0 外网网关
这一步很关键。内网里的设备是不知道外网的任何事情的。
TCP
TCP实验需要在vmware的linux虚拟机内完成实验。
基本流程
一定需要记得禁用虚拟网卡。
首先是右上方的网络配置,断开当前网络,并选择对应的sender/receiver
虚拟机上已有的三个网络均配置完毕,可直接使用
然后启动wireshark,选择Eth0,筛选tcp
-
发送端双击桌面init.sh
-
接收方双击桌面TCPTest.sh并开启监听
-
发送方双击桌面TCPTest.sh并完成数据配置,发送文件
TCPTest配置
端口转发速率控制
直接interface 接口
qos lr outbound cir xxx (单位为Kbps)
接收端配置
休眠时间与计数器阈值一般配置为0。
如需对零窗口通告进行分析,可配置:
休眠时间 = 5000, 计数器阈值 = 10。
每收到
计数器阈值次数据,触发长达休眠时间毫秒的休眠。
文件上传
/root/TCPLog目录下有tcpsndwnddata.txt与tcprtodata.txt,分别给出窗口大小和RTO数据,可帮助TCP流程分析。
wireshark报文也可及时截断并保存。
上述文件均可拖出虚拟机到桌面,并在windows系统上根据考试需要完成上传。
高级配置
备选路由与优选路由
static
对于区域外的静态路由,要想控制优先级,只需:
ip route-static xxxx mask yyyy preference 100
注意preference越小,优先级越高。
不加 preference 时,静态路由默认优先级是 60。
ospf
直接 interface 接口
为接口设置:
ospf cost xxx
高优先级cost小,备选路由cost高即可
同一条链路两端点的cost可不同,表达不同方向
一定要注意你的整条路由是否源自OSPF
比如考试中要求两台PC之间采用S1-R2-R1优选路径
而PC不在OSPF里,大家去PC都是靠的静态路由,那当然不能靠ospf的cost了
S1->PCB配的两条static设置优先级
R1->PCA配的两条static设置优先级即可
bgp
可以通过route policy细调
但这里也只讲直接配置的:
bgp、address-family后
default local-preference xxx
lp越大越优先选择
bgp、address-family后
default med xxx
med越小越优先选择
需要注意lp作用于IBGP,MED作用于EBGP
其实严格意义不是这样,但是便于理解就这样说了
优先级是lp>as-path>med
但是在某些场景下会赋相同的默认值从而使其无效
用例在bgp设计实验3:

需要S2-R2-R1且R1-S1-S2
针对S2-R2-R1
R2和S1属于IBGP竞争,调节lp
针对R1-S1-S2
S1和R2属于EBGP竞争,调节med
验证方法
在所有机器上开启:
ip unr en
ip ttl en
然后tracert证明优选,断开优选证明备选。
路由引入
一般常见的是对ospf的其中一员配置静态路由,
然后进入他的ospf,
import-route static
就可以把这个静态路由借助OSPF传递。
例如:

本题便可以给R1配置到达192.168.5.0网段的静态路由,并引入OSPF,
就可以让S1,R2直接学到192.168.5.0网段,无需专门配置静态路由。
如果题干明确说了使用静态路由实现全网互通,就必须每个都专门配,不能利用路由引入。
此外BGP也可以import-route,慎用,还是一点点network比较安全。
状态转移图
建议将指令和转移图全部会背。
LCP协商过程
initial———LCP Open Event———starting
starting———LCP Lower Up Event———reqsent
reqsent———LCP RCR+ Event———acksent (RCR+: Receive Config Good Request)
acksent———LCP RCA Event———opened (RCA: Receive Config Ack Event)
作用于两个Router之间。
为两台设备相连的Serial口配置:link-protocol ppp 并刷新配置:shutdown后undo shutdown
进入R1用户态:
debugging ppp all
terminal debugging
shutdown R2的无关Serial口
重启R2的相关Serial口:shutdown后undo shutdown
IPCP(NCP)协商过程
和LCP基本一致
若题目考察 NCP 状态转移图,可直接写IPCP。 IPCP 是 NCP 里负责 IPv4 的具体协议。
initial———IPCP Open Event———starting
starting———IPCP Lower Up Event———reqsent
reqsent———IPCP RCR+ Event———acksent (RCR+: Receive Config Good Request)
acksent———IPCP RCA Event——— opened (RCA: Receive Config Ack Event)
操作也和LCP一样,或者说debugging ppp all的时候,
LCP协商过程完成后,若有验证过程则需经过PAP/CHAP的验证过程,之后便进入IPCP的协商过程。
PAP验证过程
initial———PAP Server Lower Up Event———ServerListen
ServerListen———PAP Receive Request Event———WaitAAA
WaitAAA———PAP AAA Result Event———ServerSuccess
R1配置:
local-user RTB class network
service-type ppp
password simple aaa
interface 对应串口
ppp authentication-mode pap
R2配置:
interface 对应串口
ppp pap local-user RTB password simple aaa
进入R1用户态:
debugging ppp pap all
terminal debugging
重启R1的相关Serial口:shutdown后undo shutdown
CHAP验证过程
initial———CHAP Server Lower Up Event———SendChallenge
SendChallenge———CHAP Receive Response Event———WaitingAAA
WaitingAAA———CHAP AAA Result Event———Server Success
R1配置:
local-user RTB class network
service-type ppp
password simple aaa
interface 对应串口
下面两句和PAP不同
ppp authentication-mode chap
ppp chap user RTA
R2配置:
local-user RTA class network
service-type ppp
password simple aaa
interface 对应串口
ppp chap user RTB
ppp chap password simple aaa
重启R1的相关Serial口:shutdown后undo shutdown
进入R1用户态:
debugging ppp chap all
terminal debugging
重启R1的相关Serial口:shutdown后undo shutdown
OSPF邻居状态
DOWN->INIT->2-WAY->EXSTART->EXCHANGE->LOADING->FULL
DOWN———HelloReceived Event———INIT
INIT———2-WayReceived Event———2-WAY
2-WAY———AdjOK? Event———EXSTART
EXSTART———NegotiationDone Event———EXCHANGE
EXCHANGE———ExchangeDone Event———LOADING
LOADING———LoadingDone Event———FULL
进入R1用户态:
debugging ospf event
terminal debugging
断开连线再连接即可观察到。
前面的实验由于是serial之间,无法拔线,所以只能shutdown了
BGP协议状态
IDLE———ConnectRetry_Timer_Expires event、Manual start event———CONNECT
CONNECT———TCP_CR_Acked event———OPENSENT
OPENSENT———ReceiveOpenMessage Event———OPENCONFIRM
OPENCONFIRM———ReceiveKeepAliveMsg event———ESTABLISHED
我当时实验没有观察到ACTIVE,完整图表见下图。

进入R1用户态:
debugging bgp event
terminal debugging
reset bgp all 即可观察到。
协议分析
理论相关知识在博客中或理论课已有讲述,在此仅做回顾。
在 往年常考题目 章节中有详细回答。
ARP
目的是根据下一跳的IP地址找到其MAC地址。
有ARP Cache。
ARP Request是广播,对方匹配后单播Reply回来。
ICMP
主要是ping和tracert(windows)。
ICMP报文种类有很多。
tracert(windows)的工作机理是发ttl逐步递增的ping。
使用的是 Echo Request(类型8) 和 Echo Reply(类型0)。
OSPF
算法:Link-State算法
五类报文。Hello,DD,LSR,LSU,LSAck。
DD主从关系协商过程的意义。
详见: Week3-OSPF.
LSU里的LSA有五种。
详见: Week3-OSPF.
注意五类LSA的范围。
BGP
算法:Path-Vector算法
RIP是Distance-Vector算法
network注入的意义(把本地路由表中已经存在的某条路由注入到 BGP 表中,并对外发布)。
ping -a的意义(可检测 Loopback 能不能连通对侧 Loopback)。
Notification与Update报文。
黑洞问题。(路由聚合)
ORIGIN属性。
ORIGIN 表示这条 BGP 路由最早是怎么进入 BGP 的。
i IGP
e EGP
? incomplete
用 network 命令注入通常是 i
import-route XXX 注入通常是 ?
PATH属性。
PATH 记录了经过的AS号, 越靠前越近。
有两个重要作用:防环、选路。
防环规则:如果一台 BGP 路由器收到的路由里,AS_PATH 包含自己的 AS 号,就丢弃。
选路规则:AS_PATH越短越好。(当然选路还收到lp,med影响)
next-hop属性。
next-hop 表示:去往某个 BGP 路由时,下一跳应该交给谁。
这是 BGP 里非常容易出问题的属性。
eBGP 和 iBGP 行为不一样:
eBGP 传路由时,默认会把 next-hop 改成自己
iBGP 传路由时,默认不改 next-hop,还用接收来的原路由的next-hop。
所以我们往往对ibgp手动配next-hop-local,把下一跳改成自己。
TCP
相较于UDP的优缺点(实时性与正确性的考量)。
三次握手与四次挥手(SYN,FIN)。
确认号。
TCP、UDP、IP头部长度。(20B、8B、20B,结合以太网MTU=1500)
零窗口探测报文的意义与时间规律(翻倍)。
SRTT的计算(学习率)。
RTO的变化规律(翻倍)。
慢启动(一个RTT翻倍)、拥塞避免(一个RTT加1)、快恢复快重传(收到三个重复ACK,ssthresh减半)。
tcpsndwnddata的cwnd窗口是以segment为单位,应当乘上1460才是字节单位。
注意tcpsndwnddata里是以报文数为记录单位而不是时间,应当分析出来慢启动时的指数倍增。
即:每收到一个ACK报文,snd_cwnd加一。看似线性。
但当前处于慢启动状态,一个RTT时间内收到的ACK呈指数增长,
一个RTT时间内cwnd也是如此呈指数增长。
往年常考题目
看似是常考题目,实则已经是我能扒到的全部了。。
ICMP
在 PCB 上启动报文捕获,运行
tracert 192.168.5.2,写出运行结果,分析截获的报文中有几种 ICMP 报文,有何作用?并写出每种报文的组成部分。
每一跳对应一次 TTL 探测,TTL=1 到第一跳,TTL=2 到第二跳,直到目的主机 192.168.5.2 回复。
截获报文中主要有 3 类 ICMP 报文:
- ICMP Echo Request
- PCB 发出的探测报文,tracert 通过逐步增大 TTL 来探测路径。
- Type=8,Code=0。
- ICMP Time Exceeded
- 中间路由器发现 TTL 减为 0,丢弃报文,并返回此超时报文,用来告诉源主机我就是这一跳。
- Type=11,Code=0。
- ICMP Echo Reply
- 目的地址 192.168.5.2 收到 Echo Request 后返回,应答成功,表示 tracert 到达终点。
- Type=0,Code=0。
截获PCA ping PCB过程中每一跳的 ICMP 报文并上传。
这题的难点主要在于熟练使用HUB实现中间设备间的报文捕获。
要做的事情是把两台中间设备的直接连接改为通过HUB间接相连,
然后选取一台PC与HUB相连,即可在此pc上通过wireshark捕获报文。
建议直接使用PCC(上传配置的机器),因为其IP地址已经设置为自动分配,不易冲突。
OSPF
在 R1 上有多少个 LSDB?多少个 LSA?并写出这些 LSA 所属的种类和作用。
LSDB 数量取决于路由器所属的 OSPF 区域数,每个区域一个 LSDB。
LSA 数量指该路由器 LSDB 中保存的链路状态通告条目数,可通过dis ospf lsdb查看。
- Type 1 Router-LSA:由每台路由器产生,描述本路由器的接口、链路状态和开销,只在本区域内泛洪。
- Type 2 Network-LSA:由 DR 产生,描述一个广播网络/NBMA 网络中有哪些路由器连接在该网段,只在本区域内泛洪。
- Type 3 Network-Summary-LSA:由 ABR 产生,把一个区域内的网段路由通告到其他区域。
- Type 4 ASBR-Summary-LSA:由 ABR 产生,告诉其他区域如何到达 ASBR。
- Type 5 AS-External-LSA:由 ASBR 产生,描述 OSPF 自治系统外部路由,比如静态路由、RIP/BGP 引入路由。
在 R1 和 S2 之间截获完整的 OSPF 协商报文,写出 DR 和 BDR 的选举结果,并结合截获报文,简述其 DR 选举的过程。
选举结果:
- DR:优先级最高的路由器;若优先级相同,Router ID 最大者为 DR。
- BDR:除 DR 外,次高者为 BDR。
选举过程:
- 重启 OSPF 后先发送 Hello 报文。
- Hello Packet中携带了本端的 Router ID、Priority、当前认为的 DR/BDR、邻居列表等字段。
- 初始时 DR/BDR 可能为 0.0.0.0,表示尚未选出。
- 路由器收到对方 Hello 后,比较 OSPF Priority;Priority 为 0 的不参与选举。
- 根据优先级和Router ID 先选 BDR,再选 DR。
- 选举完成后,后续 Hello 报文中的 DR/BDR 字段会填写最终结果。
在 R1 和 S1 之间截获完整的 OSPF 报文,保存并上传。写出 DD 报文的结构,写出主从路由器,说明为什么要确认主从关系?并描述 DD 报文的交互过程。
DD 报文主体主要字段:
- Interface MTU:接口 MTU。
- Options:支持的 OSPF 可选能力。
- I:Init,表示第一个 DD 报文,开始协商 DD 主从关系。
- M:More,表示后面还有 DD 报文。
- MS:Master/Slave,表示主从身份,Master 为 1。
- DD Sequence Number:DD 序列号,用于保证 DD 报文有序可靠交换。
- LSA Header:LSA 摘要信息,不携带完整 LSA 内容。
Router ID 大者为 Master,小者为 Slave。
为什么确认主从关系:
为了避免双方同时控制 DD 序列号导致混乱。
确认主从后,Master 负责产生和递增 DD Sequence Number,Slave 只响应 Master 的序列号。
(注意这个序列号和 TCP 有 0 个关系)
DD 交互过程:
- peer 进入 ExStart 状态,双方互发第一个 DD 报文,I=1, M=1, MS=1,都声称自己是 Master。
- 双方比较 Router ID,Router ID 大者成为 Master,小者成为 Slave。
- Slave 用与 Master 的 DD 报文相等 的序列号发出回复。
- peer 进入 ExChange状态。Master 收到 Slave 回复后,将序列号加 1,发送携带 LSA Header 的 DD 报文。
- Slave 继续用与 Master 的 DD 报文相等的序列号发出回复。
- 双方通过 M 位判断是否还有更多 DD 报文。
- 当双方 DD 交换完成后,进入 Loading 状态,根据 DD 中发现的不同,发送 LSR 请求完整 LSA。
画出以 R1 为根的 OSPF 路由计算的最短路径树。
直接以 R1 为根,以 cost 为权值构建最小生成树即可。
难点在作图方面:
- 一个大圆圈表示设备。 填上设备名称和 router id。
- 画出各设备结点构成的树,边使用双向箭头表示。
- 对每条边标记cost值,以及端点的IP地址。
- 容易发现每条边也代表一个网段。垂直于边画一条线,再画出TransNet(长椅状)网段。标记网段的IP。
- 对于在最小生成树上仅与单台设备直连的网段(末梢网络),应作为StubNet(矩形)与设备相连,同样记录cost值。
给大家一个组网的例子,红色线表示最小生成树。


BGP
BGP协议的路由算法是什么?AS之间形成了自环,为何BGP路由未产生环路?
路由算法为Path-Vector算法。
BGP协议本身存在源自于PATH属性的防环规则。
详情见协议分析的11.4. BGP部分的PATH属性介绍。
在 R2 和 S2 之间截获 BGP 所有报文种类,写出 BGP 报文种类名称和报文首部,以及 S2 向 R2 通告的 5.5.5.5 网段路由信息在 BGP 报文中的描述。同时,将相关信息以截图方式保存到试卷。
BGP报文共有五种,从Type1-Type5分别是:
-
OPEN:协商BGP参数
-
UPDATE:最核心的报文,有什么字段信息可以在下图看
-
NOTIFICATION:报告异常情况。 例如手动undo可触发 cease (6)
-
KEEPALIVE:最常见的报文,确认邻居还活着
-
ROUTE-REFRESH:没学过应该不考

如果配置了lp和med,会在Path attributes里出现新的表项。
如下图展示了两个UPDATE报文,第二个就是修改了lp和med信息后出现的新UPDATE报文。

因为此题截获的 R2 和 S2 是EBGP对等体,不传输 lp 信息,所以Path attributes里没有出现该表项。
TCP
中途shutdown
超时重传开始的报文序号?在发生报文超时重传时,RTT 和 RTO 值有何变化?特别是 RTO 值有何特定变化规律?为什么?继续正常报文传输时 RTT 和 RTO 值又有何变化?
超时重传开始的报文序号是链路断开后第一个没有收到 ACK 的 TCP 数据段序号,也就是抓包中第一个标记为 TCP Retransmission 的报文的 Seq。
超时重传时间差规律:
第一次超时后重传,之后重传间隔大致按 指数退避 增长。
原因是链路关闭后 ACK 回不来,发送端认为网络拥塞或路径不可达,于是 TCP 重传定时器超时,并按指数退避增大等待时间,避免继续大量发送加重网络负担。
- RTT:因为重传报文的 ACK 无法判断对应原报文还是重传报文,通常不用于更新 RTT,RTT 估计可能暂停或不可靠。(Karn 算法)
- RTO:每次超时后按指数退避增大。
链路恢复、继续正常传输后:
- RTT:重新根据正常 ACK 样本更新,逐渐恢复到实际网络时延附近。
- RTO:随着 RTT/RTT 偏差重新估计,逐渐下降到较合理值。
设置休眠
给出 TCP 连接建立后,数据传输对应的滑动窗口变化的过程和规律,并解释为什么。
列出零窗口探查报文的序号和报文发送的时间,解释其过程和时间规律。
数据传输开始时,发送窗口由 min(cwnd, rwnd) 决定。初期接收缓存还充足,rwnd 较大,主要受拥塞窗口 cwnd 限制;TCP 处于慢启动,收到 ACK 后 cwnd 增大,所以发送窗口逐渐增大。
接收端休眠后,应用层不读缓存,接收缓存逐渐被占满,通告窗口 rwnd 逐渐减小,发送窗口随之缩小,最后变为 0,发送方停止正常发送数据。
出现 0 窗口后,发送方不能继续发送正常数据,但会发送零窗口探查报文,防止接收方窗口重新打开的通知丢失后双方永久等待。
-
若窗口仍为 0,发送方继续探查,时间间隔通常逐渐增大,近似指数退避。
-
若接收方通告非零窗口,发送方恢复正常传输。
报文发送的时间可以在报文详细信息的最外层看到。
丢包与快重传
请写出前三个重复 ACK 的报文序号。在第三个重复 ACK 报文到达后,发送报文发生什么变化?为什么?
在此期间,ssthresh 和 cwnd 有何变化?RTT 和 RTO 有何变化?为什么?
接收方连续发出的、ACK 号相同的三个 ACK,一直在说自己还在等这个字节开始的数据。
这种情况一般被作为丢包的标志。
第三个重复 ACK 到达后,发送方会立即重传丢失的报文段,不再等待超时定时器到期。
与超时不同,发送方正常收到了ACK,因此网络只是发生了丢包,TCP 触发快速重传,并且 ssthresh和cwnd变为原cwnd的一半,并进入拥塞避免,cwnd 线性增长。
因为没有发生超时,RTO 不会指数退避翻倍。
RTT也基本不变,因为无法判断 ACK 是确认原报文还是重传报文,重传报文的 RTT 不用于更新 RTT 估计。
正常传输
根据数据传输前N个报文填写表格。
(报文序号,源IP,目的IP,左边沿,指针,右边沿,ssthresh,cwnd等等)
注意DATA报文和ACK报文对窗口的影响是不同的。
DATA改变指针,ACK改变左边沿和右边沿。
具体值可以在tcpsndwnddata.txt里面找。
NAT
在相关设备上配置静态路由,使 PCB 能够 ping 通 PCC 。此时 PCC 可以 ping 通 PCB 吗?为什么?

不能。因为 R1 对内网地址进行了 NAT 转换,PCB 访问 PCC 时会在 R1 上产生 NAT 表项,PCC 的Echo Reply报文可以根据该表项转换回 PCB。
但这个NAT是动态的、临时的,当 PCC 主动访问 PCB 时没有相应的 NAT 映射,因此不能 ping 通。
FTP
开启报文捕获,访问 FTP 服务器,并下载一个文件。保存、上传和分析截获的 FTP 协议报文,其所基于的传输层协议是什么?其熟知端口号和用途是什么?所用的命令是什么?写出 FTP 协议工作的过程。
FTP 基于 TCP,因为它需要可靠、有序的文件传输。
TCP 21号端口:控制连接,用于登录、认证、发送命令和接收响应
TCP 20号端口:数据连接,主动模式下服务器用 20 端口建立数据连接传输文件,被动模式下数据连接不一定用 20 端口,而是服务器临时开放一个高端口给Client连接。
常用命令,考试根据报文如实填写即可:
USER 用户名 登录用户名
PASS 密码 登录密码
SYST 查询服务器系统类型
PWD 查询当前目录
TYPE I 设置二进制传输
PASV / PORT 建立数据连接方式
LIST / RETR 列目录 / 下载文件
QUIT 退出
FTP 工作过程(在此主要理解结构,考试根据实际报文情况填写):
- C -> S:TCP SYN,目的端口 21
- S -> C:TCP SYN ACK,源端口 21
- C -> S:TCP ACK,控制连接建立
- S -> C:220,FTP 服务就绪
- C-> S:USER 用户名
- S -> C:331,需要密码
- C -> S:PASS 密码
- S -> C:230,登录成功
TCP SYN/ACK,数据连接建立(主动/被动)
C -> S:RETR 文件名,请求下载文件
S -> C:150,准备打开数据连接并传输文件
文件传完后,数据连接 TCP FIN/ACK 挥手关闭
- S -> C:226 Transfer complete,文件传输完成
- C -> S:QUIT
- S -> C:221 Goodbye
HTTP
在 PCA 上启动报文截获并访问
www.buaa.edu.cn。分析截获的 http 协议报文,其所基于的传输层协议是什么?端口号是什么?指出报文中出现的 http 报文的种类,并写出它们的报文结构。同时,将相关信息以截图方式保存到试卷。
HTTP 基于 TCP,端口号为 80。
请求报文 (Request) 由客户端发送给服务器,如 GET / HTTP/1.1。
响应报文 (Response) 由服务器返回给客户端,如 HTTP/1/1 200 OK。
状态转移
常考的是PAP、OSPF与BGP。
其中前者已提供配置命令,需要当场完成PAP配置、debug信息截图与画状态转移图。
所以会背了也还是要会配! 背下来只是以防万一。
后两者考试时往往将命令书写作为题目之一填写。
倒也简单,分别是
debugging ospf event
terminal debugging
和
debugging bgp event
terminal debugging
配置上传
留一台干净的电脑,比如PCC。
将其IP地址设置为自动获取。
打开PCC的PuTTY,依次将PCC串口与S1,S2,R1,R2,R3,R4的CONSOLE口相连。
每次连接后,ctrl+G或者dis cu,然后按空格进行快速加载,加载完毕后秒切下一台。
全部加载完毕后,直接点击左上角菜单项的copy all to clipboard,
在桌面新建“组号座位号-学号姓名.txt”文本文件,粘贴内容。
为PCC连接校园网,上传至FTP。
结语
祝顺利。
