第一篇:常见接口协议学习笔记总结
SPI通信
SPI简介:(高速,全双工,4线同步串行总线)
SCK:主机输出的用来同步数据传输的串行时钟;MOSI:主机输出从机输入;MISO主机输入从机输出;NSS:由主机输出的片选使能低电平有效 SPI例程相关配置如下:
注意事项:(与配置UART 类似)1.配置SPI x时应确保对应相应路的SPI 2.配置相关GPIO和使能其时钟时要对应正确的管脚类型 3.特别注意配置各路SPI时,确定其对应的替代函数映射形式
硬件连接示意图:
SPI通信是由主设备时钟信号来确定主/从设备间的通信。一旦检测到主设备的时钟信号,在SCK(只由主机控制)的控制下,两个串行移位寄存器进行数据交换。
注意:当一个系统下挂有多个SPI从机设备时,可以有GPIO口对使能端NSS进行控制,当只有一个从机时可以将使能端NSS直接接地拉低。
SPI寄存器数据传输图示
SPI各个设备传输数据的过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。对于小于16位的数据在发送之前必须左对齐,如果接收的数据小于16位则采用软件将无效的数据位屏蔽。特别注意:主机的时钟极性和相位以从机为基准,要搞清楚数据传输是在上升沿输出还是在下降沿接收数据等等,都要进行一一对应。
I2C通信
I2C简介:一个双向的两线连续总线,一条数据线(SDA)和一条时钟线(SCL)。I2C总线有三种数据传输速度:标准模式100Kbps,快速模式400Kbps和高速模式可达3.4Mbps。
I2C总线结构主要用于连接整体电路,一种双向控制总线,即多个芯片(设备)可连接同一总线结构下,每个设备都可以作为实时数据传输的控制源,简化了总线结构。外设连接示意图:
在不发送任何数据的时候数据线和时钟线都为高电平。
所以I2C通信在硬件设计,需要在数据线和时钟线上分别加上两个上拉电阻。其次,I2C控制硬件进行数据传输时,硬件状态的改变需要一定的时间。
I2C例程配置如下:
注意事项:(与配置SPI,UART 类似)
1.配置I2C x时应确保对应相应路的I2C(例程为I2C3)2.配置相关GPIO和使能其时钟时要对应正确的管脚类型 3.特别注意在主函数中,开始时要对相关的时钟进行使能 数据通信时序简介:
1.主机发送开始信号,将SDA拉低,此时SCL处于高电平状态。2.从机检测到开始信号,准备接收数据。
3.主机先拉低SCL将数据一位一位放在SDA上,然后再将SCL拉高(释放)。
4.从机检测到SCL的变化,会在SCL高电平期间(主机不会太长时间去等待从机接受)将下一个SDA数据放进自己的寄存器中待处理。
5.主机会在设定好的时间后将SCL拉低并放进下一个SDA,然后再拉高SCL,从机会在SCL高电平期间读取SDA数据。
6.如此往复,完成8位数据(1Byte)传输,此时SCL处于低电平,SDA处于高电平。
总线死锁现象分析与解决方法
I2C总线写操作过程中,主机在产生启动信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为低电平,在这个时候,从机输出应答信号,将SDA信号拉为低电平。如果这个时候主机异常复位,SCL就会被释放为高电平。此时,如果从机没有复位,就会继续I2C的应答,将SDA一直拉为低电平,直到SCL变为低电平,才会结束应答信号。而对于主机来说,复位后检测SCL和SDA信号,如果发现SDA信号为低电平,则会认为I2C总线被占用,会一直等待SCL和SDA信号变为高电平。这样,主机等待从机释放SDA信号,而同时从机又在等待主机将SCL信号拉低以释放应答信号,两者相互等待,I2C总线进人一种死锁状态。同样,当I2C进行读操作时,从机应答后输出数据,如果在这个时刻主机异常复位而此时从机输出的数据位正好为0,也会导致I2C总线进入死锁状态。解决方案通常有如下几种:
(1)将从机的电源设计为可控,当发生总线死锁时将从机复位
(2)可以在从机的程序中加入监测功能,如果总线长时间被拉低则释放对总线的控制(3)在主机中增加I2C总线恢复程序。每次主机复位后,如果检测到SDA被拉低,则控制SCL产生<=9个时钟脉冲(针对8位数据的情况),每发送一个时钟脉冲就检测SDA是否被释放,如果SDA已经被释放就再模拟产生一个停止信号,这样从机就可以完成被挂起的读写操作,从死锁状态中恢复过来。这种方法有一定的局限性,因为大部分主机的I2C模块由内置的硬件电路来实现,软件并不能够直接控制SCL信号模拟产生需要时钟脉冲。笔记:
时钟SCL只能由主机控制,数据SDA主机从机都可控制。I2C主机通过地址选择要与自己通信的从机; I2C起始信号:SCL = 1, SDA产生一个下降沿; I2C结束信号:SCL = 1,SDA产生一个上升沿;
在数据传输阶段:SCL = 1的时候SDA数据线不能变化,如果SDA发生变化那意味着结束;
SCL = 1;SDA = 1;为空闲状态;
总线上各器件的SCL、SDA为线与关系,某一个器件的引脚输出低,则为低。通信过程中要注意应答信号,在第9个时钟时,SDA=0(ack响应),SDA=1(nak不响应)。
第二篇:Java学习笔记三_接口
静态(static)字段或方法:
在全局唯一,能够被其他共享;
类写好后,在函数运行的时候不需要实例化,就已经分配好类存空间;
Java代码编译成.Class代码jit机器代码执行
类加载器ClassLoader
普通的类写好后如果没有字段static则不能直接调用该类中的属性或方法,必须先实例化;相反加了static后就可以不需要实例化,就可以访问属性和方法;
有个缺点数据变得不安全;
publc class Test {
public int a=10;
{
a=11;
System.out.println(“OK~!”);
}//初始化块在构造函数之前执行
Public void Test(){
System.out.println(a);
}
}
final:
final 定义的类不能被继承;
final定义的方法不能被覆盖;
final定义的变量/属性是一个常数;
内部类:
要想访问内部类的时候,内部类也必须实例化;如下:
classAChild 是classA内部类,则实例化的格式:
classA classA=new classA();
classA.ClassAChildclassAChild=new classA().newclassAChild();
内部类优先使用该方法的参数,其次是内部类外部的参数;内部类中private参数也能被外部类访问;
要想在不同的包之间访问别的包中的内部类,就讲该内部类定义成public 类型(否则是default)
局部内部类:
方法中的类(只能在该方法中使用该类);
匿名内部类(优点:只在这个地方用一次,不需要重新定义一个类):
IA a = new IA(){
@override
Public void funcA(){
……………………
};
A.funcA();
}
//期中IA为一个接口
abstract 抽象类不能实例化,必须先从一个父类派生出来;
也可以用匿名内部类的方式实现;
弄清楚存在哪些异常,进行捕获,用多个catch多重catch的顺序要记得不能随便颠倒,否则会出问题,异常 子类放在前面,最后放的是父类Exception
try catch 多重嵌套:
第三篇:VRRP协议-学习笔记(小文档网整理)
1:VRRP协议的作用?
当主用设备出现故障时,转由备用设备(连接主机的下一跳网关路由器)承载流量,实现网络的可靠性。
2:IP地址拥有者(IP Owner)始终是备份组中的master设备。3:主备备份中的虚拟路由器包括一个master设备和若干backup设备,优先级最高的为master,当第一个出现故障,后面的backup设备按照优先级顺序代替master设备。
4:VRRP的负载分担方式是指建立两个或者更多的VRRP备份组,不同的数据流量选择不同的master进行转发,从而实现流量的负载分担(一个网络中虽然可以选择master设备,但是它在整个网络中只能有一个)5:VRRP备份组平滑倒换的作用?
确保在master设备主备倒换期间以及主备倒换完成后数据平滑期间,VRRP备份组状态稳定,避免用户报文丢失。
5:VRRP的安全功能
1:在一个安全的网络中,认为受到的VRRP报文都是正确的,不需要设置任何认证字。2:有可能受到威胁的网络中,VRRP提供了认证方式,A:简单认证:
长度范围是1到8的认证字
B:MD5认证方式:
明文长度1到8,密文长度是24或32; 6:
7:VRRP6
是VRRP for IPV6的简称
也是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制保证当主机 的下一跳设备出现故障时,及时将业务切换到其它设备,从而保持通讯的连续性和可靠 性。
8:在现网中通常同一网段内的所有主机都设置同一网关作为下一跳的缺省路由,主机发其
他网段的报文将通过缺省路由发往网关,再由网关向外转发,从而实现主机与外部网络的通信。当网关发生故障时,本网段内所有以此网关作为缺省路由的主机与外部网络的通信都将中断。(采用部署VRRP备份组方案可解决以上问题)
9:VRRP 备份组采用主备备份的方式,在主用设备出现故障的时候,启用备用设备来承担
网络数据的转发,提高网络系统的可靠性。10:配置基于IPV4的VRRP备份组基本功能之前的准备工作
A:配置接口的链路层协议参数和IP地址,使接口的链路层协议状态为up;B:明确备份组ID,备份组的虚拟IP地址; C:VRRP备份组中各路由器的优先级;
11:创建VRRP备份组
A:system-view B:interface interface-type(接口类型)interface-number(接口号):进入接口试
图
C:vrrp vrid virtual-router-id virtual-ip virtual-address,创建备份组并给备
份组配置虚拟IP 地址。
对于负载分担方式VRRP备份组,需要重复执行该步骤,至少需要在接口上配置两个或者更多的备份组,各备份组之间以备份组号virtual-router-id区分
12:配置接口在不同备份组中的优先级
A: system-view B:interface interface-type interface-number 进入接口试图
C:vrrp vrid virtual-router-id priority priority-value 配置路由器在备份组中的优先级
13:检查配置结果
Display vrrp 14:mVRRP的作用
mVRRP主要用于解决多个VRRP备份组同时存在时,出现大量的VRRP报告报文占用过多的网络带宽,以及网络中双归属时的链路主备问题。
管理VRRP备份组可以绑定其他的业务VRRP备份组,并根据绑定关系,决定相关业务VRRP备份组的状态。15:创建mVRRP的准备工作
mVRRP备份组的ID和虚拟IP地址 16:创建mVRRP备份
A:system-view
B: interface interface-type interface-number
C: admin-vrrp vrid virtual-router-id [ignore-if-dowm]
配置该vrrp为mVRRP备份组
17:配置业务VRRP备份组与mVRRP备份组的绑定
A:system-view
B: interface interface-type interface-number [.subinterface-number]
进入运行业务
VRRP备份组所在的接口视图。
C:执行命令 vrrp vrid virtual-router-id1 track admin-vrrp interface interface-type
interface-number vrid virtual-router-id2
将业务vrrp备份组与mvrrp备份组绑定。
18:检查mVRRP的配置结果
第四:
第四篇:java学习笔记总结
java 学习笔记总结
1.Java是什么呢?
Java不仅是一门语言,而且是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。
2.JDK 和 JRE 是什么?
JDK:全称是 Java Development Kit,这是我们编写java程序的开发人员需要的。我们首先要下载和安装JDK,然后设置环境变量,具体操作可以加我扣:七零五叁零六久久久
JRE:全称是 Java Runtime Environment,它包含虚拟机但不包含编译器,这是运行java程序的用户需要的环境
3.来个Hello World看看吧?
照例先创建一个类HelloWorld.java,源代码如下: /** * @author 老孙
*/ public class HelloWorld {
public static void main(String[] args){
System.out.println(“Hello World”);
} } Java类名一般是以大写字母开头的名词,多个单词的话每个单词首字母都应该大写。Java源代码以.java作为扩展名,而且文件名必须和文件里的公共类同名。
4.怎么用命令行运行java程序?
比如上面我们编写了一个类叫做HelloWorld.java,首先打开一个终端;
然后进入到HelloWorld.java类所在的目录; 输入命令 javac HelloWorld.java。javac是一个java编译器,注意该命令需要的是文件名,也就是要带着.java后缀。 输入命令 java HelloWorld。java启动Java虚拟机,该命令只需要类名,不需要带着.java或者.class等后缀。
5.Java代码怎么加注释?
// 单行注释 和 /*{……}*/ 长篇注释,这两种方式很多语言都一样,没什么特别强调的。
另外还有一种注释可以方便的生成java doc文档,以/** 开头,以*/结束。
6.Java的几种基本数据类型是?
4种整型:byte(1字节),short(2字节),int(4字节),long(4字节)。(PS:Java没有无符号整型) 2种浮点型:float(4字节),double(8字节) 字符类型:char 布尔类型:boolean
在Java种每个类型占用几个字节是固定的,与运行java的机器无关,这点与C#不同,这也是Java具有可移植性的关键点。
浮点类型一般double比float常用,而且浮点型存在四舍五入的情况,如果用在对精确度要求高的商业场景,就得使用java.math.BigDecimal类型了。我们写个demo看看:
/** * @author 老孙
*/ public class DemoDouble { public static void main(String[] args){
double d1=0.05;
double d2=0.01;
double result=d1+d2;
System.out.println(result);//结果:0.***005
BigDecimal bd1=new BigDecimal(“0.05”);
BigDecimal bd2=new BigDecimal(Double.valueOf(“0.01”));
double result2=bd1.add(bd2).doubleValue();
System.out.println(result2);//结果:0.06
} }
7.Java怎么定义常量?
使用关键字final定义常量,之前C#用的是const关键字,这一点不同要注意一下。命名规则上,常量一般使用大写字母,中间用下划线分隔。例如: private static final Integer MAX_SIZE=100;
8.String字符串怎么截取子串?
Substring(beginIndex,endIndex):返回子字符串,从beginIndex到endIndex-1。String s=“你好,今天是202_年1月5日,圣诞快乐!” String date = s.substring(6,17);System.out.println(date);// 输出:202_年1月5日
注意:该方法的返回结果不包含最后一个位置的字符。如果有问题就问我:七零五叁零六久久久 9.Java字符串怎么拼接?
①最简单的拼接方式就是使用+符号。
②String.join(char,str1,str2….strN):静态方法拼接字符串,用字符char分隔,将字符串进行拼接。//拼接
String s2=String.join(“、”,“JAVA核心技术”,“JAVA编程思想”,“SpringBoot”);System.out.println(s2);//输出:JAVA核心技术、JAVA编程思想、SpringBoot
③当有大量字符串拼接操作的时候使用StringBuilder,这跟C#基本相同。
10.怎么判断两个Java字符串是否相等?
equals方法判断两个字符串内容是否相等。而==判断两个字符串是否指向内存中同一位置。//比较
String s3=“abc”;String s4=“abc”;String s5=new String(“abc”);String s6=new String(“abc”);System.out.println(s3==s4);//true System.out.println(s3.equals(s4));//true System.out.println(s5==s6);//false System.out.println(s5.equals(s6));//true 这个demo中s3==s4返回true,因为在Java中字符串是不可修改的,编译器有一些优化机制让字符串共享,所以s3和s4实际上指向了内存中同一位置 11.Java数组有哪些常用操作?
①foreach循环数组
//foreach循环数组 int[] arr={1,3,5,7,9};for(int item:arr){ System.out.println(item);} ②打印数组元素
Arrays.toString(a):返回字符串,数组元素包含在方括号中,以逗号分隔。Arrays.deepToString(arr):用来打印多维数组。//打印数组
System.out.println(Arrays.toString(arr));//输出 [1, 3, 5, 7, 9] int[][] arrM={{1,2,3},{11,12,13},{21,22,23}};System.out.println(Arrays.deepToString(arrM));//[[1, 2, 3], [11, 12, 13], [21, 22, 23]] ③拷贝数组元素
静态方法Arrays.copyOf(originalArray,length):第一个参数是要拷贝的源数组,第二个元素是新数组的长度,如果第二个大于原数组长度,则自动填充默认值。//拷贝数组元素
int[] arr2=Arrays.copyOf(arr,arr.length);System.out.println(Arrays.toString(arr2));//输出 [1, 3, 5, 7, 9] int[] arr3=Arrays.copyOf(arr,arr.length/2);System.out.println(Arrays.toString(arr3));//输出 [1, 3] int[] arr4=Arrays.copyOf(arr,arr.length*2);System.out.println(Arrays.toString(arr4));//输出 [1, 3, 5, 7, 9, 0, 0, 0, 0, 0] ④排序
静态方法Arrays.sort()方法采用优化后的快速排序算法对数组元素进行排序。//排序
int[] arr6={12,4,53,78,21,943,3};Arrays.sort(arr6);System.out.println(Arrays.toString(arr6));//输出 [3, 4, 12, 21, 53, 78, 943]
⑤查找
静态方法Arrays.binarySearch(arr, valueToFind):二分查找,第一个参数是要查找的数组,第二个参数是要查找的目标元素。该方法有个前提是数组必须是有序的。//查找
int index=Arrays.binarySearch(arr6,12);//输出 2 System.out.println(index);
⑥填充数组元素
静态方法Arrays.fill(arr,item):将数组arr每个元素都填充为item.//填充数组元素
String[] arr7=new String[5];Arrays.fill(arr7,“*”);System.out.println(Arrays.toString(arr7));//[*, *, *, *, *]
⑦比较数组
注意要使用Arrays.equals(arr1,arr2)比较数组,如果两个数组元素全部相同,则返回true。//比较数组元素
String[] arr8={“*”,“*”,“*”,“*”,“*”,};System.out.println(arr7.equals(arr8));//false System.out.println(Arrays.equals(arr7,arr8));//true
12.日期对象LocalDate ①获取当前日期时间 //当前日期
LocalDate today=LocalDate.now();
System.out.println(today);//202_-12-26
//当前时间
LocalTime currentTime=LocalTime.now();
System.out.println(currentTime);//12:23:09.054
//当前日期时间
LocalDateTime dateTime=LocalDateTime.now();
System.out.println(dateTime);//202_-12-26T12:23:09.054
②构造某个指定日期
//构造指定日期
LocalDate newYear=LocalDate.of(202_,1,1);System.out.println(newYear);//202_-01-01
③解析日期字符串,如果不合法会抛出异常。
//解析日期字符串
LocalDate date1=LocalDate.parse(“202_-12-31”);System.out.println(date1);//202_-12-31//LocalDate.parse(“202_-11-31”);//抛出异常
④获取若干天后的某个日期 //15天后
LocalDate date15=today.plusDays(15);System.out.println(date15);//202_-01-10
⑤获取年份、月份、日期
//获取年、月、日
System.out.println(date15.getYear());//202_ System.out.println(date15.getMonth());//JANUARY System.out.println(date15.getMonthValue());//1 System.out.println(date15.getDayOfMonth());//10 System.out.println(date15.getDayOfWeek());//WEDNESDAY System.out.println(date15.getDayOfYear());//10 注意:使用Date对象的getYear()方法,不能获取当前的年份
System.out.println(new Date().getYear());//117,不是我们想要的结果202_ 我们看一下该方法的源码,计算的是当前年份和1900年的差值
public int getYear(){ return normalize().getYear()-1900;}
大家在学习的过程中遇到任何的问题都可以咨询我(QQ:705306999,奔跑de蜗牛)
也可以加入到我们的免费学习交流群: 579016988(职坐标java编程交流群2)玩微信的朋友也可以加老孙的个人微信公众号:微信右上角点击加号--添加朋友--公众号--搜索:我是老孙(如下图),也会不定期发送技术文章,娱乐八卦,吃喝玩乐,房产头条,心灵鸡汤等信息!
加图片说明文字
注意:添加时请注明微博
移除点击此处添如果大家想看老孙的直播学习,可以加入咱们的免费公开课进行学习!腾讯课程地址:https://ke.qq.com/course/92963#tuin=2a0a2177
有的人会这样说:“我只是在业余时间打盹而已,业余时间干吗把自己弄得那么紧张?”
爱因斯坦就曾提出:“人的差异在于业余时间。”
一位在哈佛任教的朋友说,只要知道一个青年怎样度过他的业余时间,就能预言出这个青年的前程怎样。记得点赞和转发哦!
片说明文字
移除点击此处添加图
第五篇:网络学习笔记总结
1需要掌握重点:
网络的定义:网络就是将两台或两台以上的计算机以一定方式连接起来,起到共享文件,程序数据的作用
网络分类
1)按范围分:lan,wan,man 2)按拓扑结构分:总线型,环形,星型,树形
3)按传输介质分:双绞线,同轴电缆,光纤,无线网络
局域网中常用设备:交换机,路由器
十进制和二进制的转换
十进制(逢十进一):范围0-9 二进制(逢二进一):范围0-1 转换方式(二进制转十进制:凑数法,在计算机中1为真,0为假,只取真值相加结果就为十进制,十进制转二进制也同样如此,详见案例)
111011这个二进制转十进制
64 32 16 8 4 2 1 0
0 1 1 0 1 1 结果:32+16+8+2+1=59
13这个十进制转二进制 16 8 4 2 1 0 1 1 0 1 结果:1101
2需要掌握重点: Osi七层模型
物理层:bit流的传输
数据链路层:提供介质得到访问的链路的管理 网络层:寻址和路由选择
传输层:建立主机端到端的连接 会话层:建立维护和管理会话
表示层:处理数据的加密和数据格式 应用层:提供程序间的通信
tcp/ip四层模型
层
封装协议
网络接口层: ppp,hdlc,fr 网络层:
ip 传输层:
tcp/udp 应用层
http/telnet/ftp/dns等
3需要掌握重点 数据通信基础:
1数据组成:字母和数字,如:图片,视频,文字等 2数据通信:
1)数据交换的过程
2)传输介质来进行数据传输 3)传输介质:网线,无线,光钎
网线做法:
A 白绿,绿,白橙,蓝,白蓝,橙,白棕,棕
B 白橙,橙,白绿,蓝,白蓝,绿,白棕,棕
(两端都一致,在现实生活中98%都用这种,用于连接不同层的设备)
网线(最高传输距离为100m)分为: 全反线:配置路由器和交换机 直通线:不同层设备的连接 交叉线:相同层设备的连接
光钎:单模和多模
特点:传输带宽高,距离远,抗干扰能力强
3数据通信系统的组成 1)发送方 2)接收方 3)传输介质 4)预定--协议 5)数据包-报文
4数据流方向
1)单工,只接收数据,不发送(电视机,显示器)2)半双工,在发送的时候不能接收数据(对讲机)3)全双工,可以同时发送和接收数据
(手机)
4需要掌握重点
综合布线系统(六大子系统)水平子系统 工作区子系统 管理子系统 垂直子系统 建筑群子系统 设备间子系统
5需要掌握重点
冲突域:在以太网中,当多个节点同时传输数据时,从多个设备发出的帧将会碰撞,在物理介质上相遇,彼此数据都将会被破坏,这样的共享介质网段就叫冲突域 交换机隔离冲突域(交换机每一个端口就代表一个冲突域)
广播域:广播帧传输的网络范围,一般是由路由器来设定边界的,(因为路由器不转发广播)路由器隔离广播域(路由器的每一个端口代表一个广播域)
交换机原理(工作在数据链路层):根据源mac地址学习,目标mac地址转发,基于硬件转发 三种转发方式
1)对已知单播帧,只对应端口转发 2)对未知单播帧,进行广播 3)对广播帧进行广播
交换机分类:二层交换机,三层交换机,vlan型交换机
思科设备的命令行管理模式 用户模式> 特权模式#
en
全局配置模式(config)conf t 接口模式(config)# int 接口类型、模块号
如f0/1
Exit返回上一级 End 返回特权模式 Ctrl+z 返回特权模式
6需要掌握重点
Ip地址:主机唯一标识,是世界上唯一的,跟mac地址一样,mac是物理地址,ip地址是逻辑地址,主要是保障主机间能正常通信,方便记忆
Ip地址分为ipv4(现在主流用的,几乎接触的100%都是这类地址)和ipv6
Ipv4地址分为两部分来表示 网络位--大厦名称 主机位---门牌号
Ipv4表示方法:点分十进制,共4个字节(32个bit),每一个字节为一个单位,中间用“.”l来区分开
如:192.168.1.24/24
Ip地址分类:abc类最常用,d用于组播,e用于保留科研 类型
范围
二进制网络位
二进制主机位
可用主机数 A
0-127
2的24次方-2 B
128-191
2的16次方-2 C
192-223
2的8次方-2 D
224-239 E
240-255
子网掩码:用来区分主机位和网络位的7需要掌握重点 网络层协议
功能:1)处理来自传输层得的分组发送请求 2)输出输入数据报文 3)处理icmp报文
Arp协议:(地址解析协议):负责将对应的ip地址解析成mac地址 Arp功能就是通过目标主机查询其mac地址
Icmp协议:错误侦测与回馈机制,用来发送和控制消息 典型应用ping Ping语法
ping 空格
[选项]
8需要掌握重点
路由器工作原理:寻址和转发
路由协议:直连路由,静态路由,动态路由
静态路由的优缺点 优点:
1)对硬件资源占用不高 2)不占用带宽 3)增加网络安全 缺点:
1)配置工作量大并且容易出错 2)适应拓扑变化能力较差
静态路由配置语法: ip route 目的ip网络号
子网掩码
直连路由的出口地址 默认路由配置语法: ip route 0.0.0.0 0.0.0.0 直连路由的出口地址
演示案例: 实验拓扑图:
配置命令:
实验步骤:首先必须要配置好预配置,也就是把环境搭建好的情况下才可能完成此实验,搭建环境包括,配置每个接口的ip地址,确保每个直连路由是ok的 en conf t host R1 inter f0/0 ip add 13.1.1.1 255.255.255.0 no shut inter s1/1 ip add 12.1.1.1 255.255.255.0 no shut inter lo 0 ip add 1.1.1.1 255.255.255.0 end
en conf t host R2 inter s1/0 ip add 12.1.1.2 255.255.255.0 no shut inter s1/1 ip add 23.1.1.2 255.255.255.0 no shut inter lo 0 ip add 2.2.2.2 255.255.255.0 end
en conf t host R3 inter f0/0
ip add 13.1.1.3 255.255.255.0 no shut inter s1/0 ip add 23.1.1.3 255.255.255.0 no shut inter lo 0 ip add 3.3.3.3 255.255.255.0 end
//配置好预配置之后,静态路由的配置
R1的静态路由配置
ip route 2.2.2.0 255.255.255.0 12.1.1.2 ip route 3.3.3.0 255.255.255.0 13.1.1.3 ip route 23.1.1.0 255.255.255.0 13.1.1.3
R2的静态路由配置
ip route 1.1.1.0 255.255.255.0 12.1.1.1 ip route 3.3.3.0 255.255.255.0 23.1.1.0 ip route 13.1.1.0 255.255.255.0 12.1.1.1
R3的静态路由配置
ip route 1.1.1.0 255.255.255.0 13.1.1.1 ip route 2.2.2.0 255.255.255.0 23.1.1.2 ip route 12.1.1.0 255.255.255.0 13.1.1.1
//删除静态路由 删除R1的静态路由
no ip route 2.2.2.0 255.255.255.0 12.1.1.2 no ip route 3.3.3.0 255.255.255.0 13.1.1.3 no ip route 23.1.1.0 255.255.255.0 13.1.1.3
删除R2的静态路由
no ip route 1.1.1.0 255.255.255.0 12.1.1.1 no ip route 3.3.3.0 255.255.255.0 23.1.1.0 no ip route 13.1.1.0 255.255.255.0 12.1.1.1
删除R3的静态路由
no ip route 1.1.1.0 255.255.255.0 13.1.1.1 no ip route 2.2.2.0 255.255.255.0 23.1.1.2 no ip route 12.1.1.0 255.255.255.0 13.1.1.1
//默认路由的配置 默认路由
R1: ip route 0.0.0.0 0.0.0.0 12.1.1.2 R2: ip route 0.0.0.0 0.0.0.0 23.1.1.3 R3: ip route 0.0.0.0 0.0.0.0 13.1.1.1