6.10 CIDR无类域间路由
回顾VLSM:
例如划给用户上网的/24,可能有254个地址,但是中间互联的地址,我可能就划个/30的,2^2-2,两个互联的地址就足够了。
注:/24的子网可以继续划分两个/25的子网,/25的子网可以继续划分两个/26的子网
6.10.1 CIDR基本原理
注:在A路由器可能有四条路由表,我们使用CIDR聚合成只有一个/22的路由表,这样B路由器的压力就会小一些。
6.10.2 怎么做路由聚合
注:怎么做路由聚合?我们现在有四条路由表,200.200.192.0/24,200.200.193.0/24, 200.200.194.0/24,200.200.195.0/24,其中/24表示有24位网络位,如上图所示,可以看出最后两位网络位是不一样的,前22个网络位都是一样的,所以我们把前22位做一个划分。 即:单独划分前22个一样的为网络位,后面都是主机位了。
聚合是很简单的,就是找前面相同的网络位,作为新的网络位,后面所有的都作为新的主机位。
练习:
6.10.3 作用
6.11 ICMP协议
ICMP: Internet Control Message Protocol (Internet控制消息协议):
注:我们发送一条消息,返回相应的传递信息,Message就是ICMP的报文
6.11.1 ICMP的重定向
注:了解一下即可,很少用,主机A刚开始经过RTB转发,检查报文后,发现主机A直接给RTA发更方便,所以就进行重定向了!
6.11.2 ICMP的差错检测
ping命令的实质就是发送ICMP的echo消息
注:思科的!!!表示通的,......表示不通,U.U.U.U表示 可能有ACL把路由干掉了
6.11.3 ICMP的数据包格式
注:了解
6.11.4 ICMP的典型应用
(1)ping 以华为为例
ping -a 可以选择ping的源地址(一个路由器有很多接口,我们从哪个接口去ping数据,如果不选择就会使用默认的接口)
ping -c 选择发送包的数量,默认是5个,可以自己定义
华为路由器ping成功返回的结果:可以看出有TTL。有time
(2)Tracert 以华为路由器为例
从一个节点访问一个终点,中间经历了哪些节点。
6.11.5 总结与思考
6.12 传输层协议TCP/UDP
什么是可靠?例如A传个数据给B,这个数据不会被篡改。什么是面向连接?就是在传之前就建立连接,那我们怎么建立连接呢?三次握手!!!
什么是不可靠?只负责把数据扔过去,不管别人收没收到,也不管数据正不正确。
UDP效率更高,TCP更准确。
注:文件传输更多的使用TCP,视频电话等可能更多的采用UDP
6.12.1 TCP
(1)报文格式
注:了解即可,比较重要的是端口号
(2)什么是端口号
我们使用telnet访问具体的端口:
注:一般源端口号 随机分配1024开外的
(3)TCP序列号及确认号
TCP的传送的数据是需要确认的, ACK。例如PC1向PC2传送数据,seq=10,表示传送的是第10块数据, PC2如果收到数据,就向PC1发送ACK=11,seq=1,表示我已经收到编号为10的数据,如果要继续发的话,就发送编号为11的数据。注意PC2的seq=1和PC1的seq没有任何关系,PC1的seq只和PC2的ack有关。
然后PC1继续发送seq=11的数据, PC2如果收到数据,就向PC1发送ACK=12,seq=2,表示我已经收到seq编号为11的数据,如果要继续发的话,就发送seq编号为12的数据。
建立连接需要三次握手,断开连接需要四次挥手。
(4)TCP三次握手
解析:第一次握手,A向B发送一个seq=0的数据,ctl(标志位)为 SYN,表示我向你请求发起连接。(只要有SYN的数据包,就表示这是一个请求)
第二次握手,B收到报文后,发送ack=1,表示我已经收到A发的seq=0的报文,接下来我想要seq=1的报文,也会把标志位置成SYN,表示我也发送一个请求和你建立连接,同时发送标志位位ACK,表示我已经收到A发送的SYN了。
第三次握手,A发送seq=1的报文,ack=1表示确认收到了B发送的seq=0的数据包,最后带有一个ctl=ACK,表示确认B发送的SYN请求。
(5)TCP四次挥手
ctl标志位存在哪里?(想断开连接需要把标志位置成FIN, 即finish)
前面是正常的传输,假如传到seq=101的时候,A想要和B断开连接,标志位ctl=FIN,同时发送标志位ACK(回应上一个SYN请求),然后B收到以后,回应了ctl=ACK,表示我已经收到A关闭连接的通知,我B这边就给关了。然后B再发送一个请求A关闭连接(连接是双向的,B已经关了,A还没关,所以B还得再发个关闭A连接的请求),ctl=FIN,ACK,最后A收到B的请求,回复ctl=ACK,表示我收到了你的请求,我这就把我自己的连接关了。
(6)TCP窗口机制
假如A和B建立连接以后,A一直向B发送报文,B处理不过来就会死机了,所以有一个TCP窗口机制。 如果设定B的窗口为3,就说明只允许A发送三次数据,窗口满了,直到B的cpu把窗口里数据取出,出现空闲窗口,A才能继续发送数据。
6.12.2 UDP
(1)报文格式
6.13 数据封装与转发全过程分析
PC在网页中输入WebSever目的地址,进行访问:
(1)传输层封装 端口号
(2)网络层封装 ip
(3)数据链路层封装 mac地址
注意:目的MAC是封装的路由器R1的F0/0接口的MAC
(4)物理层 比特流传输 数据传到R1
(5)传送到R1后 开始解封装,查看目的地址的ip,再重新封装传给R2
注:以上解封装以太网头部
根据目的ip查看路由表发现 下一跳是R2的F0/0端口,这时候又会进行重新的以太网头部封装:源mac是R1的F1/0端口,目的MAC就是R2的F0/0端口:
(6)物理层 比特流传输 数据传到R2
(7)传送到R2后 开始解封装,查看目的地址的ip,根据路由表,传到WebSever
注:以上解封装以太网头部
根据目的ip查看路由表发现 下一跳是就是WebSever了,重新封装以太网头部,源mac就是R2的F1/0,目的MAC就是WebSever的MAC地址。
注:一般来说以太网封装头部称为2层,ip头部封装称为3层,TCP头部封装称为4层,DATA应用层封装称为7层。2层就是数据链路层.....以此类推
(8)WebSever解开以太网头部
发现目的ip就是发给自己的,那我继续拆掉ip头部:
发现目的端口号是80,一般80都是web服务,所以我们把数据送给web的http的应用:
6.14 设备管理和VRP系统
交换机和路由器是需要通过命令行去配置的,配好一台以后,可以通过刷脚本的方法配置其他的类似的。应用层的设备,负载均衡之类的一个网络里可能就有几台,可以通过web图形界面的方法进行调试。
配置一个网络设备,例如交换机或路由器,会通过Console接口(网络管理口)登录:
注:RJ45口就插在console口上,另一头插在笔记本的串口上
我们会在pc上安装一个软件:SecureCRT;这是网络工程师必备的软件。
VRP系统
注:VRP的最底层还是Linux
如果console口坏了怎么办?还有一个Mini USB接口;