知识体系
详情参考计算机网络章节
https://blog.csdn.net/weixin_44816677/article/details/88817409#_32
计算机网络概述xOSI网际互联
OSI参考模型:开放系统互联参考模型。
上层依赖于下层,下层为上层提供服务。
HUB工作在物理层,只有一个冲突域:同一时刻只能有一个设备发送数据包,其他设备侦听是否空载。
交换机工作在数据链路层,每个端口都有一个冲突域,同属于同一个广播域。
路由器(三层设备,可以看到网络层的地址)只负责在不同的网段转发数据。
PDU(协议数据单元)
数据传送过程:数据经过传输层分段并压上TCP头部字节协议,分段以后的单元然后经过网络层压入IP头部字节协议封装成数据包(报文),再经过数据链路层压入MAC头部字节协议封装成数据帧,最终数据变成1010在物理介质上传输。
收到信号的另外一断开始进行解封装过程,首先在数据链路层还原成帧,每一层依次向上进行直到传送到目的主机。
TCP/IP协议簇:
DOD模型:网络接入层、因特网层、主机到主机层、应用层。
与OSI相比精简许多。
传输控制协议/IRI特网协议 (TCP/IP)是由DOD(国防部)所创建,主要是用来确保数据的完整性及在毁灭性战争中维持通信。是由一组不同功能的协议组合在一起的协议簇。利用一组协议完成OSI所实现的功能。
HTTP是一个超文本传输协议,提供浏览网页服务。 端口号:80
Telnet:远程登录协议,提供远程管理服务。23
FTP:文件传输协议,提供互联网文件资源共享服务。20、21
TFTP:体积比较小的文件传输协议,提供简单的文件传输服务。69(UDP)
SNMP:网络设备管理协议。
SMTP:简单邮件传输协议,提供互联网电子邮件服务。25
POP3:邮局协议,提供互联网电子邮件服务。110
TCP:传输控制协议,属于面向连接的协议。可靠传输,比如打电话,按接听键才通、web浏览器、电子邮件、文件传输程序。
UDP:用户报文协议,属于无连接的网络协议。尽力而为的不可靠传输,比如对讲机自动播放语音、域名系统、视频流、IP语音。
DHCP服务器:在内网架设一台服务器,向网段内部的主机动态的分配IP地址,避免自己设置主机的IP地址。
网关:离开当前网段所需要的关口。
DNS服务器:访问服务器的时候需要目标服务器的IP地址,DNS服务器用来进行动态域名解析,比如把sina.com解析出来新浪的服务器的IP地址。方便用户使用。一般使用的是电信或其他运营商架设的DNS服务器。需要先把域名送到DNS服务器,然后服务器再给你传回来一个IP地址。
主机到主机层
源端口、目的端口、序列号(确保每一个分段以后的数据段传输可靠,对方都收到了)。头部20字节+数据部分
端口号:
相当于个门牌号,1-65535,区分本地的不同服务、应用程序。真实并不存在,软件。
源端口随机分配,目标端口使用知名端口、应用客户端使用的源端口号一般为系统中未使用的且大于1023、目的端口号为服务器端应用服务的进程,如telnet为23。
1023以及之前的是业内协议好的端口号。
cmd下 netstat查看TCP的端口号
TCP三次握手:(简要描述)
两个主机互相不认识,经过三次握手建立起来连接,开始进行数据交换。
主机A发送SYN,其中的代码位里SYN位置为1表示初始位,序列号为100,说明这是一个打招呼的TCP,主机B接收SYN以后,发送SYN,ACK,其中代码位里SYN置1,ACK置1代表这是一个确认报文,序列号为本机B随机产生的一个序列号,确认号为Acknowledgement number填充的是主机A发送过来的序列号加1,这里的确认号并不是必须只能加1,是根据序列号来赋值的,当主机A接收到SYN以后说明主机B已经确认完成了是我本机A发送过去的序列号为100的报文,然后主机A开始建立连接,发送序列号为101,确认号为301代表主机B的序列号加1,代码位里ACK置1。
这种机制就说明两个主机建立的连接时可靠的,不断地进行发送确认发送…
窗口机制
同时处理多句话,避免了TCP单次会话的低效率。
当设备老旧负载不了那么多,会丢弃部分,然后后续的传输就只会传输主机B所能接受的最大负载。
因特网层
负责将分组报文从源端发送到目的端、为网络中的设备提供逻辑地址、负责数据包的寻径和转发。
VLSM(可变长子网掩码)
IP地址 ipv4 32位 点分十进制
十进制与二进制转换
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
128+64=192
编程中是用的除2取余法。
void db(int n)
{
if(n==0)
return ;
else
{
db(n/2);
cout<<n%2;
}
}
类别分为一部分是网络部分一部分是主机部分。
其中的127.0.0.0网络号用来作回环测试,测试本地的TCP/IP协议簇是否正确安装。
单播、组播、广播。
子网划分:
都属于172.16.0.0的主网络号,然后划分成多个子网络号,从而限定广播流量、不会造成地址的浪费。
子网掩码:
图上的虚线是可以移动的:
默认情况下的子网掩码
移位后的子网掩码:移动一位后划分成两个子网
个人认为:第二个子网的主机段应该为172.168.128.1-172.168.255.254
移动两位后的子网掩码:划分成4个子网
主机位全0得到子网号,主机位全1得到广播号。
广播号与子网号之间的就是主机段。
公网、私有地址
公网就是internet网,一般私有地址不能访问公网。
为了防止IPV4地址空间耗尽。
私有地址如下:
思科设备
NVRAM即使掉电以后内容也不会消失,现在一般放置在FLASH中。
闪存就相当于一个硬盘,会拷贝出一份来在RAM中去运行。
调试开始阶段:
控制台适用于刚拿到设备时的调试,还没有开始搭建网络环境。
网络环境搭建好以后一般使用以下调试手段:
CLI:
> :用户模式 enable进入特权模式
# :特权模式 config terminal 进入全局配置模式 exit退到上一级 end或者ctrl+Z直接返回到特权模式
? :加空格看当前状态有什么命令,不加空格直接跟问号是查看当前指令的字母相同的指令有哪些
confi: 当前字符串命令只有一个时可以直接tab键进行命令补全 configure
修改主机名:在全局配置模式下进行
配置密码:在全局模式下进行
特权模式下write 或者 copy running-config start-up-config 把之前调试的配置进行保存,并且掉电不会重启
现在一般都是保存在FLASH里面的config.text里面
接口配置:
以太网口(10M)
串行接口,需要一个时钟信号来同步,在一端配置
路由基础
路由器是去转发数据包的,路由就是规划数据包从一个地方到另一个地方的最优路径。
路由选择原理
路由器如果不给他添加别的路由信息,那么他只认识他家门口的那个网络号,也就是说只知道到与他直连的网络号的路径该怎么走,对于远端的网络就不知道怎么走了。
这也就是路由条目中的C(直连信息代码表示)
如果需要去远端网络进行添加静态路由信息,此时就多了一个信息代码S(静态路由代码表示)比如:到达目的网络192.168.23.0/24的下一跳给192.168.12.2
如果要访问远端的网络,需要配置网关路由器的IP地址,所以PC机把数据包丢给网关路由器,然后路由器接收到数据包以后开始查表,进行数据的转发,如果查不到就把数据包丢弃了,并且向PC机发送目标主机不可到达。
如果要进行远端网络的通信,就可以通过配置静态路由来实现,源IP与目的IP决定了是否是远端通信。
用下一跳的方式比较方便,192.168.1.0代表目标的网段,192.168.12.2代表下一跳的IP
这个下一跳肯定是与路由器相邻的IP;第二种方式就是采用接口的方式表达出口是什么。
有去有回的配置:
如果采用出接口的方式配置,接口是本地路由器的出接口。
如果采用下一跳的方式配置,下一跳是下一个路由器接口的IP地址。
其中,R2知道两个网段应该怎么走,所以不用静态配置,他已经自动学习到了并放在路由表里面了。
判断数据通信成功的条件就是有去有回,如果没有回的就会出现请求超时。
因为PC机到达R2只有一条路径可以走,所以只需要配置一条默认路由就可以了。
换句话说,就是当PC机发送的数据包除了到达R1或者R2路由器以外的任何一个地方统统都把数据包丢给R2,相当于R2就是PC的默认网关。
PC机向任何跨网段发送数据不管三七二十一全部把数据丢给网关,然后由网关路由器决定下一跳给谁。
当A telnet B的时候,telnet是应用层,基于TCP协议来支撑的,需要建立三次握手,A的第七层telnet构建连接的请求,然后经过传输到达第四层加上目的telnet端口号23,然后到达第三层加上IP的头 源1.1 目的2.1,然后到达第二层封装MAC地址(如果发现是跨网段通信了就把数据给网关路由器了,源为A的MAC目的为网关路由器1.254的接口的MAC),然后到达第一层开始比特流传输,然后到达网关路由器一直解封装到第三层,观察目标IP与源IP,发现目的IP不是给我的,然后原封不动封装回去,但是要帮他把数据包送到B去,所以要根据路由表对第二层的源MAC与目的MAC进行修改,同样的过程直到到达主机B,主机B一层一层解封装,到第四层发现telnet端口号,然后将数据包发送给该程序。这只是来的方向,来回都要考虑。
通过某种方式学习到路由信息放到路由表里面。
动态路由选择原理
缺点:占用一定CPU资源,需要内存;是一种对话机制,两台路由器会进行路由信息对话,占用一定程度的带宽;但是都不会造成太大影响。
外部网关协议适用于大型网络之间,日常使用内部网关协议
第一列代表目的网段,第二列代表出接口,第三列代表跳数。
距离矢量协议:初始相邻路由器之间互相交换路由表,从哪个接口学到的就会从哪个接口转发出去数据包,然后继续相邻之间路由表进行交换直至收敛完成
一台路由器采用同种动态路由协议,当目的网段是同一网段时不同路径向A路由器交换信息时,选择度量值最小的,次优的不会出现在路由表里面,当小的度量值不能工作时启动下一个比较小的度量值。当多条路径度量值相同时会同时启用,负载均衡。(度量值不一定最小最好,只是对RIP协议来说是的,因为他是以跳数来决定的)
R代表RIP协议。
一台路由器,当他从两种不同的动态路由选择协议中学习到去往同一个目的地的路由,这时候比较AD值,取信小的装入路由表进行转发,另一个路径只有当优选的路径宕掉的时候才会被选用。
RIP很容易受骗,只是根据跳数来选取。
RIP的漏洞:
当10.4.0.0网段宕掉的时候,会从别的路由表学到已经宕掉的路由信息,会产生环路无穷循环下去,占用带宽,直至耗尽,最后跳数达到无穷大了。
环路避免:
如果路由器个数超过16就没办法用了。
当16跳时就从路由表中抹去。
当一个路由器接收到目标网段的更新时就不会在这个接口发送这个更新了。
此时如果10.4.0.0宕掉了,B就不会再向C发送10.4.0.0的路由信息,同理其他路由器也是这样。就不会C与B互相学习的情况了。
水平分割默认开启。
当10.4.0.0出现故障时,与它直连的路由器会将跳数变为不可达状态,然后让其他路由器来学习,其他路由器就把这个网段删去了,隐藏在RIP的一个数据库当中,有一个计时器,当计时器没有达到某一值之前若10.4.0.0恢复了就再给他一次机会,恢复路由表当中的信息。
当10.4.0.0出现故障时,首先将直连的C的跳数变为不可到达,然后B再向C更新一个跳数为16跳的信息,此时C就知道了B一直在等是否10.4.0.0是否已经恢复了。
当收到一个比较差的跳数的时候,会引入一个怀疑量,在计数器超时之前继续采取旧的路径去走,超时以后就会采取新的路径。
当4.0出现故障时,A与B启动抑制计时器,认为4.0可能出现故障了,在此时间内如果4.0恢复了可以马上启用这条路径。
R2还需要2.0网段的直连网络宣告。
EIGRP路由协议
增强型内部网关路由协议:(思科的私有协议)
首先形成一张邻居表,他们会进行路由信息的同步和传输,更新完路由信息以后会在拓扑表中装载上他们对这个网络的理解,也就是到达某一个目的地所有可能的路由,再根据某种算法,挑选出当中的最有的路径放入路由表。
HELLO分组两个功能:1.用来打招呼同步参数。2.用来保活(知道邻居之间的存活情况)。
注意:路由传过来的方向与数据包转发的方向是相反的。
EIGRP综合性考虑路径:带宽、延迟、可靠性、负载、MTU值
带宽指的是所有出接口的最小带宽。
延迟指的是所有出接口的所有延迟。
后继路由器:
A通过metric较小的值来决定它的下一跳,也就是比如经由B 的这条路径的metric小B就是后继路由器。
可行距离(FD):
A本地到达14.0目标网段的实际metric值
可行后继路由器(FS):
就是后继路由器的备份,如果C满足了一定条件就可以当备份。
通告距离(AD):
本例中就是B去往目的网段14.0的实际metric值,B通告给A,B的metric值是多少。
当然,C也会通告给A,C 的metric值是多少。
可行条件(FC):比如C到达目的地的距离要比A到达目的地的距离要短,避免了环路。
DUAL算法:
C到达1.0网段的拓扑表:
D到达1.0网段的拓扑表:
从E走就不用说了,绕远路
因为C的AD>从B走的FD,所以没有可行后继。
E到达1.0网段的拓扑表:
主类地址:A B C D E
设置varian=2,则后继可行路由器B(因为B的FD<C的2*FD)也同时加入路径当中
OSPF路由协议
开销(metric)就是从目的地网段的所有路由的入接口(也就是数据出接口)的cost累加,
注意带宽是(b/s)
比如74就是开销。
OSPF有三张表格,第一张(HELLO)就是邻居表,第二张(LSDB)是链路状态数据库,里面是一台路由器对这个小区内所有路由器的认知,最后一张表就是路由表。
OSPF网络类型:
除了DR和BDR其他路由器之间两两互不理睬,由他俩负责对内和对外的交互进行泛洪
点对点不会选举
OSPF是接口敏感型协议,是针对接口来选举的 。优先级一般由人工设置
进程号虽然不要求一致,但最好设置为同一个
RIP是主类网络宣告
OSPF需要多加一个通配符掩码
或者是使用另一种方式来宣告
当一个路由器有多个出接口时,可以采用一条命令来宣告,通配符的写法就是把不变的位置置0有变动的位置全部置1,画一条线来区分。
交换基础
VLAN(二层链路)
园区网:
接入层交换机的主要功能(二层-数据链路层):
学习地址(MAC)、二层(帧)转发和过滤决策、环路的避免。
二层交换机工作原理:初始状态MAC地址表为空。
当交换机收到数据帧的时候,首先会从发送的接口学习到源MAC地址放入MAC地址表中,因为数据帧是要转发到目的地的这时候就要去查表看看是否有目标MAC地址,没有就泛洪(数据帧向除了源地址接口以外的所有接口都扔一个拷贝都传输一遍,只有当目的接口匹配时才会向上层进行解封装,并且把该目的接口放到MAC地址表中)。
路由器的每一个接口都是一个独立的广播域,而整台交换机都是一个广播域。
VLAN:就是LAN前面加个V(virtue).
一个VLAN就是一个独立的广播域
所以即使在一个交换机中也不能进行通信。(在交换机中创建VLAN进行不同方式的分配)
同一VLAN在不同交换机进行传输需要借助trunk
不同VLAN之间进行传输需要借助路由
静态VLAN:根据端口配置
动态VLAN:根据电脑的MAC配置,电脑移动但是VLAN不变
干道(trunk)
单臂路由(支持快速以太网口-百兆以上):
缺点:占用带宽,路径转了一圈
配置trunk的情况:
只有当交换机接口需要承载多个VLAN的时候才需要配置
VLAN的透传:
当两个接口的VLAN一致时就可以传输。
(两个接口VLAN一致,可以透传,VLAN2不关心从VLAN1过来的数据帧是从哪个VLAN过来的)
STP 生成树(二层链路)
广播风暴:
交换机是转发广播的,两个交换机就会没完没了的转发广播
根桥就是作为根的交换机
根据某种方式选举SW1作为根桥,然后以SW1作为参考点,每个非根桥选择一个RP(根据到跟桥的花销来选举,根端口朝向根桥的花销),其次,每一个线段选择一个指定端口,最后剩余的非指定端口进行阻塞。
当根路径代价相等时,考虑最低发送者桥的ID(比较的是发送给我BPDU的交换机的桥ID)
根桥不允许阻塞,所以根桥的所有接口都是DP,然后再根据最低根路径的接口在一段上选择一个DP
第一步:比较优先级选出根桥ROOT
第二步:在非根桥上选出根端口RP
第三步:在每一段选出指定端口DP,因为到达根的开销是一样的,所以继续比较该接口的交换机的桥ID
案例2
带宽越大开销越小。
RP根端口上会收到BPDU包,DP指定端口会发送BPDU包。
案例三:
因为开销一致,再比较发送给我BPDU的交换机ID
所有的端口会周期性的监听SW3发送的BPDU包,当其他路线出故障会启用被阻塞的接口
案例四
假设某一个端口是RP,然后计算该端口的开销。算出来实际的RP
因为每一个端口的开销一致,并且发送BPDU的交换机的ID也一致,所以进行比较发送过来BPDU的端口ID
总结
1.先选出根交换机(端口全是DP)
2.选择RP(收)(比较开销、比较发送者的交换机ID、发送者的端口ID)
3.选择DP(发)
Blocking转变为Forwarding:
ACL访问控制列表
入站与出站的流量的控制(放行还是丢弃)
根据语句顺序一一匹配,当匹配到了剩余的语句将不会继续执行,如果全部不匹配则默认丢弃。
掩码一般与IP成对出现,为1表示网络位,0表示主机位
通配符用来匹配特定的位(定义了一个区间地址段)记住0表示严格匹配1表示无所谓即可
匹配192.168.1.1-192.168.1.7这个区间的两种表达方式
ACL不能对本地始发的流量做过滤,只能对穿越路由器流量做过滤。
数字编号的缺陷:
广域网基础
网络地址转换(NAT)
公网:2的32次方个地址,需要购买。
解决方案来防止地址空间耗尽:
DHCP、IPV6(128位)、NAT(私有地址空间)
不允许进入公网:
静态转换:
动态配置:
配置PAT:
清楚NAT转换表项:
广域网概述(WAN)
帧中继Framerelay