北航网络实验
本文是本人在北航研究生必修课程——网络实验,考试阶段复习整理的内容,相关的课程视频和配套资料在北航MOOC网站上可以获得。
考试相关(研究生)
题型
- 连线5、配置VLAN5、配IP10、配协议15 (ospf) + 15 (组播、Ipv6、NAT、TCP) +10(静态路由)
- 截获报文(并答题)15
- 解释协议机制画状态转移图 25(解释机制、画状态图)
上传配置
window下
1. 选择可以上网的PC, 逐个将console线与4个设备的console口相连
2. 使用 XShell 每次相连都使用 dis cur 命令获取全部(多次使用空格)配置信息.
3. 在 XShell 的上端 编辑》记事本》全部,获取txt文件,保存16B_学号姓名
Linux上:
使用minicom,全部显示完配置信息,复制到文本文件中,使用gFTP上传到FTP
基础命令
设备说明
1. 清空配置
reset saved-config
reboot
2. 用户视图< > sys 命令 -> 系统视图[ ]
3. 接口相关配置
[S1]inter e1/0/1进入端口
[S1-Ethernet1/0/1] [undo]shutdown # 先shutdown再undo shutdown 称之为重启端口
[S1-Ethernet1/0/1] ip address 192.0.0.2 24 # 子网掩码不要忘记
4. 所有命令之前加 undo 就可以取消这条命令
5. 常用显示
dis cur
dis interface e1/0/1
常用的设备命令
dis cur
dis interface e1/0/1
inter loop 1
Linux系统命令
# 配置ip 网关
ifconfig eth0 190.168.1.2 netmask 255.255.255.0
route add default gw 192.168.1.1
# 查看ip
ifconfig
链路层
MAC地址、生成树协议、端口聚合
交换机基于端口转发,也就是说每个端口隔离一个冲突域
MAC地址表是交换机能否转发数据报的关键,学习过程:交换机 将收到的数据帧的源MAC地址和接收该数据帧的端口 添加到MAC地址表中
[S1]dis mac-address # 显示交换机的MAC地址表
[S1]stp enable|disable # 生成树协议启动|取消
端口聚合命令见参考文件
配置VLAN、跨VLAN通信(基于交换机端口的VLAN划分)
1. 配置VLAN
[S1] vlan 2
[S1-vlan2] port e1/0/1 to e1/0/5
[S1] inter vlan 2
[S1-vlan2-interface] ip address 192.168.10.1 # 做网关 - 三层交换机的原理
2. 配置端口类型(允许多个VLAN通过)
[S1] inter e1/0/23
[S1-Ethernet 1/0/23] port link-type trunk
[S1-Ethernet 1/0/23] port trunk permit vlan 2 3
广域网PPP协议状态转移图、PAP和CHAP认证
[R1-serial1/0] link-protocol ppp # 进入接口启动链路协议
<R1> debugging ppp lcp all # 打开ppp lcp(链路控制协议)的debug开关
<R1> terminal debugging # 显示debug信息
<R1> undo terminal debugging # 当信息足够之后,及时关闭debug信息
[R1]
状态转移图
根据debug信息画,有事件Event、有状态State
链路静止 -> 链路建立 -> 鉴别 -> 网络层协议 -> 链路打开(否则关闭)
PAP和CHAP认证 - 调试命令略有不同
<R1> debugging ppp pap all
<R1> debugging ppp chap all
其余命令可以参考考试文档
注意事项:以上配置完之后,都要对两个直连接口进行重启(shutdown和undo shutdown);然后ping一下对方,看看能不能ping通;然后再调出来debug
网络层
ARP协议
# 在PC上
arp-a # 查看arp
arp-d # 清空ARP缓存
# 交换机上
<S1> reset arp all # 清空ARP缓存
[S1] undo mac-address # 清空Mac地址表
注意区分MAC地址表:(MAC_Address, Interface), 链路层
ARP缓存表(MAC_Address, IP_Address), 网络层
ICMP协议
ICMP报文被封装在IP数据报(作为数据部分)中,但是它仍然是网络层的协议,分为ICMP差错报告报文和ICMP询问报文两种。
基于ICMP的应用:ping
和tracert
# 打开tracert响应
[S1]ip ttl-expires enable
[S1]ip unreachables enable
注意TCP/IP四层模型的封装顺序,数据帧封装Ip数据报,Ip封装TCP
IP协议
路由
数据报文:主机发送(直接交付、间接交付)、路由器转发(直连子网直接转发,否则对比路由表确定下一条)
路由的过程
display ip routing-table
网络层的分片过程
# 设置路由器端口MTU
[R1-interface] mtu 100
# 设置ping数据包的大小
ping -s 300 192.168.5.22
传输层
TCP协议
连接与释放
三次握手 | 四次握手 |
---|---|
A->B(SYN=1, Seq=x) | A->B(FIN=1, Seq=x) |
A<-B(SYN=1, ACK=x+1, Seq=y) | A<-B(Ack=x+1,Seq=y) |
A->B(ACK=y+1, Seq=x+1) | A<-B(FIN=1,Seq=y,Ack=x+1) |
Seq=x+1,Ack=y+1 |
TCP实验Linux操作
# 使用minicom配置交换机和路由器
**TCP拥塞控制(这部分是必考,占一半分数,一定要全面复习)
滑动窗口机制、窗口侦查机制
左边沿、指针、右边沿
接收端休眠、接收端不能接受数据的时候,向发送端发送通告报文,发送端周期性(坚持定时器)地发送窗口探测报文(Keep-Alive报文,携带一个字节数据的报文段),且发送时间成倍增加
拥塞避免
- 慢启动: 每一个Ack,cwnd+1
- 拥塞避免:每一个RTT,cwnd+1
- 拥塞(传输超时)处理:ssthreah=cwnd/2 cwnd=1
超时重传
重点!!!我抽到的考试题目就是这个!!!!!可惜我没复习,55555555555555!!
快重传、快恢复
- 平均往返时间RTT:
- 超时重传时间RTO:
- 快重传:收到三个重复ACK报文,立即重传重复ACK序号的那条data报文
- 快恢复:对拥塞窗口进行修正,在第三个重复ACK到达时,ssthresh=max(cwnd/2, 2*MSS),cwnd=min(cwnd,已发送-接收未确认+重传+3)。此时RTT和RTO无变化,因为RTT是根据ACK报文到达的情况来计算的,因此网络并未真正的拥塞,只是偶尔报文传输出错,不影响RTT的计算,RTT无变化,从而RTO也无变化。
糊涂窗口综合征和Nagle算法
糊涂窗口综合征:接收方通告了小窗口,发送方发送少量的数据,导致传输效率降低。
解决办法:
1. 发送方Nagle算法
发送方在连接建立开始发送数据时,立即按序发送缓存中的数据(必须<=1*MSS);
后续数据的发送由数据是否足以填满发送缓存的一半或一个MSS长度决定。
而不启用Nagle算法时发送方则是有数据就发。
启用Nagle算法的传输过程中,数据长度一般都以MSS长度发送;
而禁用Nagle算法的传输过程中,数据长度一般都以“每次写入套接字的字节数”长度发送。
2. 接收端的推迟确认技术
对收到的报文段进行确认和通告窗口的前提条件是:接收缓存的可用空间至少得到总空间的一半或者达到最大报文长度之后。如果条件不满足,则推迟发送确认和窗口通告。
UDP分析
无连接、不可靠
路由
OSPF协议、邻居状态机
五种报文类型:Hello报文、DD报文、LSR报文、LSU报文、LSAck报文
# 邻居状态机
<R1> debugging ospf event
<R1> terminal debugging
# 断开R的线,再重新连接
<R1> reset ospf all(process)
★★★ OSPF报文交互过程、邻居状态变化
报文交互
邻居状态
Down->Init->ExStart(主从协商)->ExChange(使用DD交换LSDB) -> Loading(发送LSR,LSU,回复LSA) -> Full
主从关系协商
RT1->RT2
RT1发送DD报文,宣告自己是Master(I=1,MS=1),规定初始序号为x;
RT2收到RT1的DD报文,将RT1的邻居状态机改为ExStart,发送DD报文,由于自己的Router-id较大,宣告自己是Master(I=1,MS=1), 规定初始序号为y;
RT1收到RT2 报文,比较自己和RT2的 Router Id,RT2的route id 较大,所以认同RT2为Master,自己为Slave,发送DD报文(I=1,MS=0),宣告自己是Slave,将RT2邻居状态机改为ExChange。
链路状态
4种典型网络模型:Stub net、PPP网络、点到多点网络、全连接网络
指定路由器DR、备份指定路由器BDR
LSA(Link State Advertisement)
- 第一类LSA(Router):在 Update 报文中
- 第二类LSA(Net):DR发出,
[DR]display ospf lsdb network
attach router - 第三类LSA(SumNet):有ABR生成,将区域中的每一条OSPF路由封装成Network Summary LSA发送到相邻区域
- 第四类LSA(SumASB):同样由ABR生成,描述本区域内部到达ASBR的路由(与第三类类似,只是目的地址是ASBR)
- 第五类LSA(ASE):由ASBR生成,描述到自治系统外部路由的信息(目的地址、掩码、花费)
[R1] display ospf lsdb # 显示LSA摘要信息
[R1] display ospf lsdb router # 显示第1类
[R1] display ospf lsdb network # 显示第2类
[R1] display ospf lsdb summary # 显示第3类
[R1] display ospf lsdb asbr # 显示第4类
[R1] display ospf lsdb ase # 显示第5类
★★★ 路由种类与路由选举过程
首先每个Priority>0的OSPF路由器将自己的Router-id赋值到hello报文的DR字段,声称自己是DR;
经过一段时间,所有路由器选举信息交换完毕,每台路由器都有其他路由器的Priority和Router-id,先比较Priority(选择大的),若Priority相等,再比较Router ID(同样选择大的),由于Router ID全局唯一,所以一定能选出DR和BDR。
路由计算
静态路由
# 静态路由
ip route-static 网段 掩码 下一跳 preference 优先值
# 默认路由
ip route-static 0.0.0.0 0.0.0.0 下一条
# 将默认路、直连路由引入OSPF
import-route static cost 100
import-route direct cost 100
# 设置cost值的时候使用
default-route-advertise cost 100
★OSPF配置命令
# 基本命令
[R1] router id 1.1.1.1
[R1] ospf
[R1-ospf] area 0.0.0.0
[R1-ospf-area0.0.0.0] network 网段 反掩码
[R1-ospf-area0.0.0.0] network 网段 反掩码
# 配置cost(R1和S1之间)
[R1] inter g0/1
[R1-g0/1] ospf cost 100
[S1] inter vlan 2
[S1-vlan2-interface] ospf cost 200
NAT地址转换
在出口路由器上配置NAT
# 配置地址池
[R1] nat address-group 1
[R1-address-group-1] address 192.168.5.105 192.168.5.109
# 配置acl
[R1]acl basic 2001
[R1-acl-2001] rule 0 permit source 允许的内部网段 反掩码
[R1-acl-2001] rule 1 deny source any
# 接口绑定
[R1] inter e1/0/1
[R1-e1/0/1] nat outbound 2001 address-group 1
网络管理SNMP
基本的使用
步骤1:双击运行桌面上的snmp1.bat文件,启动网管软件后端服务;
步骤2:双击运行桌面上的snmp2.bat文件,启动前端页面,大概等待2分钟左右;
步骤3:步骤1和步骤2启动完成后,在chrome浏览器点击输入网址窗格下面的书签“snmp网管系统”即可使用该网管软件。
使用过程中的注意事项:
1、配置网管协议选择snmp版本为all,即使用如下命令配置snmp版本:
snmp-agent sys-info version all
snmp sys ver all # 缩写
2、添加网络设备时一定要确保设备名称、设备管理IP、读权限(public)和读写权限(private)填写完整,这样才能获得被管设备信息
报文
SNMP的五种协议单元
Trap
# 接收trap报文的主机是10.0.0.11
[Switch] snmp trap enable
[Switch] snmp target-host trap address udp-domain 10.0.0.11 params securityname public
*IPV6
基本术语
- 局域网段:交换机隔离(每个ipv6节点,组成节点本地)
- 链路:内部子网路由器隔离(链路本地)
- 子网:使用相同的64位ipv6地址(站点本地)
- 网络:多个子网组成
- ipv6地址:8段 * 16 位(4个16进制数)= 128
- 前缀:相当于掩码
- 单播地址(子网号+接口号):
- 全球单播地址:
- 链路本地地址(FE80::/64):使用链路本地地址作为源或目的地址不会被转发到本站点之外的其他站点
- 站点本地地址(FEC0::/64):类似于iPv4私有地址,使用站点本地地址作为源或目的地址不会被转发到本站点之外
- 特殊地址:未指定地址全零 :: 和 环回地址::1
- 组播地址:
- FF01::1 结点本地所有结点地址
- FF02::1 链路本地全部结点地址
启动ipv6
[S1]ipv6
[S1]inter vlan 2
[S1-vlan-interface] ipv6 address 2001::1/64
[S1-vlan-interface] undo ipv6 nd ra halt # 取消 关闭接口的nd协议的ra公告(也就是打开nd ra)注意是在接口上操作的哦
ND协议 邻居发现协议(基于ICMPv6)
报文
- 路由器请求报文(RS):不愿意等待周期性的路由器宣告
- 路由器通告报文(RA):路由器周期性的通告它存在的链路和配置,字段和Options
- 邻居请求报文(NS)
- 邻居通告报文(NA)Flag:R S O
- 重定向报文
★加入组播组
主机通过地址自动配置,获得了多播组地址;
主机发送多播侦听报告报文给本地链路路由器;
路由器根据报文信息向多播转发表中添加表项,以记录多播组成员的身份。
前缀发现
使用RS、RA(了解报文,RA报文的Options)
重复地址检测
使用NS NA
地址解析过程
目的缓存表
show destinationcache
近期访问的目的地址 对应的 下一跳的地址
邻居缓存表
show neighbors interface=5
相当于 ARP 缓存表;邻居IP和物理地址的映射
★★★地址解析过程
A主机查看主机的邻居缓存表,有就发送,没有就创建这个IP的表项,标记Incomplete状态;发送目的地址为待解析地址的组播地址(Target域是待解析的地址)的NS报文;目的主机发送NA报文响应,同时在自己的邻居缓存表中添加表项(Stale状态);A收到NA报文,将邻居缓存表中的Incomplete状态改为Reachable状态。
on-click
off-click
OSPFv3
ospfv3下一跳地址不再使用全局ip,而是使用链路本地地址,这样使得网络拓扑和网络前缀分开传播,路由协议拥有独立于网络协议的特性
Link-LSA: 描述该链路上所连接的ipv6地址前缀及路由器的link-local地址
Intra-Area-Prefix-LSA: 因为Router-LSA 和 Network-LSA不再包含地址信息所以必须引入此种LSA
组网
# 交换机
[S1] ipv6 # 全局使能ipv6
[S1] vlan 3
[S1-vlan3] port e1/0/24
[S1] inter vlan 3
[S1-vlan-interface3] ipv6 address 2003::2/64
# 路由器
[R1] ipv6
[R1] inter g0/1
[R1-interface g0/1] ipv6 address 2003::1/64
# 静态路由
[R1] ipv6 route-static 2001:: 64 2007::1
[R1] display ipv6 routing-table
# ospfv3
[R1] ospfv3 1
[R1-ospfv3-1] router-id 2.2.2.2 # 一定要指定router-id
# 进入每个接口,然后指定area
[R1] inter g0/0
[R1-g0/0] ospfv3 1 area 0
[R1] inter g0/1
[R1-g0/1] ospfv3 1 area 1
[R1] inter loopback 0
[R1-loopback0] ospfv3 1 area 0
[R1] inter loopback 1
[R1-loopback1] ospfv3 1 area 1
# 交换机(进入VLAN接口指定area)
[S1]ospfv3 1
[S1-ospfv3-1] router-id 1.1.1.1
[S1] inter vlan 2
[S1-vlan-interface2] ospfv3 1 area 1
# 查看
display ipv6 routing-table
dis ospfv3 lsdb