《计算机网络实验》复习笔记
注意事项
- 进去先给R*的vlan 1:
undo ip a
链路层实验
查看路由表
dis ip ro
VLAN配置
- trunk配置
port link-type trunk
port trunk permit VLAN 2 3
trunk端口同时属于两个VLAN,从该端口通过的报文要打上标记,标记该报文所属的VLAN,对端交换机收到该报文时根据tag标记决定在哪个VLAN广播该报文。
和trunk类型端口相对的是access类型。
- pvid配置
undo port link-type
port link-type hybrid
port hybrid pvid vlan 1
port hybrid vlan 2 tagged
port hybrid vlan 3 untagged
tagged一定可以转发,untagged不能,如果不让设置成tagged的话就把pvid改了,但是注意pvid只能有一个。
PPP协议
LCP
就是基础的PPP协议,不知道为啥多起了这个名字。
link protocol ppp
shutdown
undo shutdown
debugging ppp all
terminal debugging
PAP
在参考文档里有,略
配完了需要重启端口
调试:
debugging ppp pap all
terminal debugging
CHAP
在参考文档里有,略
配完了需要重启端口
调试:
debugging ppp chap all
terminal debugging
IPCP
这个应该跟LCP一样的
静态路由
ip route-static 到哪 子网掩码 下一跳
- 默认路由
ip route-static 0.0.0.0 0.0.0.0 下一跳
OSPFv2
应该主要是做别的协议的时候顺便用OSPF配一下,所以只要知道基本的OSPF配法就够了。
router id 1.1.1.1
ospf
area 0
network 1.1.1.0 0.0.0.255
看路由表的时候还是用IP路由表。
BGP4
- 查看路由表
dis bgp ro
-
启动协议:参考文档
-
强制下一跳为本身接口:参考文档
-
调试BGP
debug bgp event
terminal debugging
reset bgp all
- 查看BGP邻居
dis bgp peer
- MED属性:进入某个AS的入口指标,优先选择MED较小的入口路径,默认值为0
default med 10
- Local-preference属性:离开当前AS的出口指标,优先选择Local-preference较大的出口路径,默认值为100
default local-preference 10
- 路由策略:参考文档
IPv6
- 启动IPv6协议
ipv6
ipv6 a 2001::1/64
undo ipv6 nd ra halt
ICMPv6
- 查看组播组
netsh
netsh> interface
netsh interface> ipv6
netsh interface ipv6> show join
- Multicast Listener Report
- 主机主动发给组播组的报文
- 用来宣告自己加入的组播组
- 用hop-by-hop选项是要提醒路由器深入检查扩展报头字段值
- 跳数限制为1是因为要让MLR报文限制在链路本地上
- PadN是用来满足数据对齐要求的
- Prefix Discovery
- 主机获取地址前缀的机制
- 包括主机发送的Router Solicitation和路由器回应的Router Advertisement
- RS报文跳数用255是为了防止其他路由器转发,确保只有本地链路的路由器回应
- Duplicate Address Detection
- 检测网络中的重复地址
- 包括Neighbor Solicitation报文
IPv6组网
- 查看路由表
dis ipv6 ro
- 静态路由
ipv6 route-static 2001:: 64 2007::1
- IPv6的
::1
就是本地回路地址
IPv6地址解析
- 显示邻居:参考文档
- on-link(同一链路)和off-link(不同链路)的区别:on-link直接请求目标地址的MAC,off-link请求下一跳的MAC
- Neighbor Advertisement报文里面的flags
- router表示发送者是不是路由器
- solicited表示是请求还是响应
- override表示能不能覆盖已有邻居缓存
OSPFv3
- 和OSPFv2的区别
- OSPFv2用于IPv4,OSPFv3不与具体网络协议相关联
- 路由器不再使用IP地址作为路由器ID,使用专门配置的路由器ID
- 报文字段中不再包含网络地址相关内容,网络地址相关内容在链路状态通告报文(LSA)载荷中
- 下一跳不使用全局IP地址,而是链路本地地址
- 增加链路LSA(Link-LSA)和域内前缀LSA(Intra-Area-Prefix-LSA)
- 启动OSPFv3协议
ospfv3 1
router-id 2.2.2.2 //注意这里多加了个横线,OSPFv2没有
inter g0/0
ospfv3 1 area 0 //注意这里OSPFv3是在接口上配置的,而OSPFv2是在网络上配置的
如果有一个接口不在OSPFv3区域内,需要在设置router-id之后额外引入直连路由:
import-route direct
- 建立邻接关系并同步LSDB的流程
- R1启动OSPFv3后发送Hello报文
- S1收到R1的Hello报文后发送Hello报文回应,将R1状态设置为Init
- R1收到S1的Hello报文后将S1状态设置为ExStart,再次发送Hello报文并将Active Neighbor设置为S1的router-id
- S1收到R1的Hello报文后将R1状态设置为ExStart,发送DD报文协商主从关系
- R1收到S1的DD报文后对比router-id,设置自己为DR并发送DD报文协商主从关系
- S1收到R1的DD报文后承认R1为主路由器,发送DD报文并附带LSA信息,进入Exchange状态
- R1收到S1的DD报文后回复DD报文并附带LSA信息
- R1将S1的状态设置为Loading,发送LSR报文请求LSA直到LSDB完全同步进入Full状态
- S1将R1的状态设置为Loading,发送LSR报文请求LSA直到LSDB完全同步进入Full状态
- R1和S1收到LSU报文后,回复LSAck报文
- 查看LSDB信息
dis ospfv3 lsdb
- 设置接口OSPF cost值
ospfv3 cost 100 //在相连的两个设备的两个端口上都设置,小的优先走
可以用tracert
检查。
BGP4+
- 配置:额外设置
router-id
,另外address-family ipv6
后面没有unicast
组播
- 组播地址:前4位为1110,也就是224.0.0.0~239.255.255.255;组播MAC地址的高24bit为01-00-5E,第25位为0,低23位为IPv4组播地址的低23位
IGMP
- 启动组播支持
multicast routing-enable
multicast routing //如果上面那个不行就用这个
- 在路由器接口上启动IGMP协议(组播数据接收者连接的端口)
igmp enable
- 查看IGMP在接口上的相关信息
dis igmp interface
PIM-DM
- 启动PIM-DM组播路由协议:在每个设备的每个interface上启动
pim dm
- 查看组播路由表
dis pim ro
- 查看组播邻居表
dis pim neighbor
- 禁用pim state-refresh功能:参考文档
- Assert机制:同一个网段内如果有多个组播路由器,要用Assert机制选定唯一的组播数据转发者。两个路由器同时收到对方转发来的组播报文时,会向所有PIM路由器以组播方式发出Assert报文。通过对参数进行比较,两个路由中的获胜者会成为组播报文在本网段中的转发者。
PIM-SM
- 启动PIM-SM组播路由协议:在每个设备的每个interface上启动
pim sm
- 配置被选BSR(自举路由器):在面朝组播源的接口配置,参考文档
- 查看RP(汇聚点)
dis pim rp-info
- 设置RPT到SPT切换:参考文档
- debug PIM加入/剪枝
debugging pim join-prune
terminal debugging
- Register和Register-stop报文对:Register报文由组播源发出,Register-stop报文由RP路由器回应,隔一段时间再次发送Register报文
- PIM-SM协议工作机制:接受方定时向DR(发送/接收方直连的那个路由器)发送通告,DR将通告转发到RP中,从而维护RP共享树;DR也会定时向RP通告源树路径,从而维护RP源树;RP收到DR的组播报文后,通过共享树向组播组报告,实现组播功能。
- 和PIM-DM的区别:PIM-DM采用扩散机制构建SPT树,PIM-SM采用主动订阅机制构建SPT树,更节省带宽。
- RPT树向SPT树切换:接受者侧DR向组播源S逐跳发送(S,G)加入报文,到达源侧DR,沿途经过的路由器都在转发表中生成了(S,G)表项,建立了SPT分支;接受者侧DR向RP逐跳发送RP剪枝报文,RP收到后沿源方向继续发送剪枝报文。
MPLS VPN
- 启动MPLS协议:MPLS和MPLS LDP都是在相应接口上启用的
mpls lsr-id 1.1.1.1
mpls ldp
lsp-trigger all
mpls enable
mpls ldp enable
- 查看FTN映射表
dis mpls lsp
- 调试MPLS报文转发
debugging mpls packet
debugging mpls lsm all
terminal debugging
- 调试LDP
debugging mpls ldp all
terminal debugging
-
VPN配置:在PE和LSR上配置完MPLS之后,要先在CE上配置普普通通的BGP,之后再配VPN
- PE-CE间的配置(在PE上配)
ip vpn-instance buaa route-distinguisher 10:1 vpn-target 10:1 both //然后在接口上配置 ip binding vpn-instance buaa ip a 100.0.0.1 24 //其实PE-CE之间也要配BGP,不过和后面PE-PE一起比较好 bgp 10 ip vpn-instance buaa peer 100.0.0.2 as-number 65534 address-family ipv4 unicast peer 100.0.0.2 enable
- PE-PE间的配置(不一样的BGP)
bgp 10 //续前面的PE-CE间BGP配置,不然会被覆盖 peer 3.3.3.3 as-number 10 peer 3.3.3.3 connect-interface lo1 address-family ipv4 unicast peer 3.3.3.3 enable address-family vpnv4 peer 3.3.3.3 enable
-
查看VPN配置信息
dis ip vpn-instance
- 测试CE和PE之间连通性
ping -vpn-instance buaa 100.0.0.2
- 查看PE和CE之间的BGP对等体
dis bgp peer ipv4 vpn-instance buaa
- 查看PE和PE之间的BGP对等体
dis bgp peer vpnv4
TCP
滑动窗口
- 发送窗口上限值=min[cwnd,rwnd]
- 窗口合拢:窗口左边沿向右边沿靠近
- 窗口张开:窗口右边沿向右移动,接收方程序释放了TCP缓存
- 窗口收缩:窗口右边沿向左移动,正常情况下不会发生
Nagle算法
- 解决糊涂窗口综合征:接收方通告窗口太小,如果直接按这个小窗口发会降低传输效率
- Nagle算法:发送端一起发,取决于缓存数据是否填满1MSS或者缓存一半;接收端推迟确认,接收缓存可用空间达到1MSS或者可用空间一半再确认
慢启动和拥塞避免
- 先慢启动再拥塞避免
- 慢启动:慢慢增大cwnd,收到一个ACK就增加1MSS,cwnd<ssthresh时使用
- 拥塞避免:发送方每收到cwnd个非重复的ACK报文,cwnd就加1,cwnd>ssthresh时使用
网络拥塞的处理
- 没有按时收到确认报文或者收到重复的确认报文,认为发生了拥塞
- 发现拥塞时设置ssthresh=max(cwnd/2,2MSS)和cwnd=1
超时与重传
- 新的重传时间=2×旧的重传时间
窗口探查技术
- 若接收方缓存满,则发送0窗口通告;发送方停止发送报文,等待新的窗口通告;用定时器按时探查窗口,报文数据段长度为1
快重传和快恢复
- 快重传:连续收到3个重复ACK报文就立即重传,不管定时器
- 快恢复
- 收到3个重复ACK后,设置ssthresh=max(cwnd/2,2MSS)和cwnd=min(cwnd,已发送-未确认+重传数+3)
- 按拥塞避免继续发送报文
- 如果收到新的ACK,就把cwnd缩到ssthresh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫