计算机网络基础
计算机网络基础
网络概念
集线器
集线器的英文称为“Hub”。集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。
在以太网中,如果某个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个冲突域(collision domain)。如果以太网中各个网段以集线器连接,因为不能避免冲突,所以它们仍然是一个冲突域。也就是连到一个hub上的所有节点处于一个冲突域中。
交换机
交换机的出现隔离了冲突域,属于OSI第二层即数据链路层设备。每台终端可以全双工方式发送数据,而且自己发送数据又不会影响到其它设备,不用再去侦听链路是否有别的设备再发送数据了。每个通信终端独享一条链路和端口。
单播(unicast)
指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。
组播(multicast)
也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。
广播(broadcast)
是一种信息的传播方式,指网络中的某一设备同时向网络中所有的其它设备发送数据,这个数据所能广播到的范围即为**广播域(Broadcast Domain)**。简单点说,广播域就是指网络中所有能接收到同样广播消息的设备的集合。
广播风暴
广播风暴(broadcast storm)故障,即一个数据包或帧被传送到本地网段(由广播域定义)上的每个节点就是广播;网络上的广播帧由于被转发,数量急剧增加而出现正常网络通信的反常现象。广播风暴会占用相当可观的网络带宽,导致正常数据包无法正常运行。当广播数据充斥网络无法处理并占用大量网络带宽,导致正常业务不能运行,这就发生了广播风暴,造成局域网局部或整个网络瘫痪。
虚拟局域网(VLAN)
是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。同一个VLAN中的广播只有VLAN中的 成员才能听到,而不会传输到其他的VLAN中去,从而控制不必要的广播风暴的产生。
一个VLAN就是一个广播域.如果你的核心交换机的所有的端口都在一个VLAN中,属于一个大的广播域。划分VLAN后每个VLAN一个广播域。
路由器
路由器是一种基于网络层的互联设备,是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/ IP网络连接到因特网上。
路由器的功能:
- 隔绝广播,实现跨三层的数据互访
- 路由协议的支持、维护路由表
- 路由发现、路径选择及数据转发
- 流量管理
- 广域网接入、地址转换及特定的安全功能
OSI(开发系统互联参考模型)
特点:
- OSI模型每层都有自己的功能集
- 层与层之间相互独立又相互依靠
- 上层依赖于下层,下层为上层服务
应用层
为应用软件提供接口,使应用程序能够使用网络服务。协议:http(80)、ftp(20/21)、pop3(110)、telnet(23)、dns(53)等
表示层
数据的编解码、数据的加解密、数据的压缩解压缩。如ASCII、JPEG等
会话层
负责建立、管理和终止表示层实体之间的会话连接;在设备或节点直接提供会话控制;在系统之间协调通信过程
传输层
数据成为段。负责将来自上层应用程序的数据进行分段和重组,并将它们组合为同样的数据流形式;提供端到端的数据传输服务。协议:tcp、udp
网络层
数据成为包。定义了逻辑地址;分组寻址,负责将分组数据从源端传输到目的端;路由选择、维护路由表。设备:路由器
数据链路层
数据成为帧。在不可靠的物理链路上,提供可靠的数据传输服务,把帧从一跳(节点)移动到另一跳(节点);组帧、物理编址、流量控制、差错控制、接入控制。协议有:以太网、令牌环网、PPP、HDLC、Frame Relay 等;设备:交换机、网卡 、网桥
物理层
数据成为位。定义接口和媒体的物理特性;定义比特的表示、数据传输速率、信号的传输模式(单工、半双工、全双工);定义网络物理结构(网状、星型、环型、总线型等拓扑结构);负责把逐个的比特从一跳(结点)移动到另一跳(结点)设备:集线器
TCP/IP协议
TCP/IP协议包括以下
传输协议:TCP,UDP
应用协议:HTTP,SMTP,FTP,TELNET,SNMP
路由控制协议:RIP,OSPF,BGP
网际协议:IP,ICMP,ARP
TCP/IP分层模型
应用层->传输层->网络互连层(互联网层)->网络接口层
网络接口层
利用数据链路层进行通信,属于接口层。
网络互连层
使用IP协议,基于IP地址转发分包数据。互联网层与传输层的功能通常由操作系统提供,尤其是路由器,它必须实现通过互联网层转发分组数据包的功能。此外,连接互联网的所有主机和路由器都必须实现IP功能,其他设备(网桥、中继器、集线器)就没必要实现IP或TCP的功能。
IP
IP是跨越网络传送数据包,使整个互联网都能收到数据的协议,使用IP地址作为主机的标识。IP还隐含了数据链路层的功能,通过IP通信的主机之间无论经过什么底层链路都能实现通信。虽然IP也是分组交换协议,但它不具有重发机制,是非可靠性传输协议。
ICMP
IP数据包在发送途中发生异常,需要给发送端发送一个发生异常的通知,有时也用来诊断网络健康状况
ARP
从分组数据包的IP地址中解析出物理地址(MAC)的协议。
传输层
主要功能是让应用程序之间实现通信。计算机内部通常同一时间运行多个程序,必须用端口号识别是哪些程序和哪些程序在通信。有两个具有代表性的协议:TCP和UDP。
TCP(传输控制协议)
面向连接(发送数据前会确认是否通畅)
可靠传输(丢包了等重新连接后会重传数据包)
流控及窗口机制
使用TCP的应用: Web浏览器;电子邮件 ;文件传输程序
UDP(用户数据报协议)
面向无连接(不确认直接发数据)
不可靠传输(丢包了不管直接继续发数据)
尽力而为的传输
使用UDP的应用:域名系统(DNS);视频流;IP语音(VoIP)
应用层
TCP/IP中,会话层、表示层、应用层的功能都集中在应用程序实现,有时由一个单一程序实现,有时由多个程序实现。TCP/IP应用的架构绝大多数属于客户端/服务端模型,提供服务的程序预先部署到主机上,等待接收任何时刻客户可能发送的请求。客户端可以随时发送请求给服务端,有时服务端可能出现异常、超出负载等情况,这时客户端可以在等待片刻后重发一次请求。
WWW
是互联网能够如此普及的一个重要原动力,用户在Web浏览器上借助鼠标键盘就能轻松发送各种请求给远端服务器,显示文字、图片、视频,播放声音等。浏览器和服务端之间通信协议是HTTP(HyperText Transfer Protocol),所传输的数据主要是HTML(HyperText Markup Language)。HTTP属于OSI应用层协议,HTML属于表示层协议。
电子邮件就是不管距离多远的人,只要连在互联网,就能在网上相互发送邮件,用到的协议角坐SMTP(Simple Mail Transfer Protocol)。最初只能发送文本格式,后来由MIME协议扩展后,可以发送声音、图像等各种信息。MIME也是表示层协议。
FTP
文件传输是指将计算机本地的文件传输到其他计算机上,使用的协议是FTP(File Transfer Protocol),传输过程中可以选择用二进制方式还是文本方式。在FTP中传输文件时会建立两个TCP连接,分别是传输请求时要用的控制连接和世纪传输数据时所用的数据连接。
TELNET和SHH
远程登陆是指登录到远程计算机,使得那台计算机的程序得以运行的一种功能,通常使用TELNET和SHH两种协议。
SNMP
在TCP/IP进行网络管理时,采用SNMP(Simple Network Management Protocol)协议,使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫管理器(Manager)。SNMP就是Agent与Manager用到的协议。
TCP/IP通信
包装过程:
应用层data.payload(数据)->传输层UDP.segment(数据段)->网络层IP.packet(数据包)->数据链路层MAC.frame(数据帧)
IP子网划分
路由
路由介绍
- 跨越从源主机到目标主机的一个互联网络来转发数据包的过程
路由器的工作原理
- 主机1.1要发送数据包给主机4.1,因为IP地址不在同一网段 ,主机会将数据包发送给本网段的网关路由器A
- 路由器A接收到数据包,查看数据包IP首部中的目标IP地址 ,再查找自己的路由表 。数据包的目标IP地址是4.1,属于4.0网段,路由器A在路由表中查到4.0网段转发的接口是S0接口 。于是,路由器A将数据包从S0接口转发出去
- 网络中的毎个路由器都是按这样的步骤去转发数据,直到到达了路由器B,用同样的转发方法,从E0口转发出去,4.1主机接收到这个数据包
路由表
路由表指存储在路由器中的一种数据库 其包含着指向特定网络地址的路径与出接口
路由表的形成
- 直连网段:配置IP地址→端口处于UP状态→形成直连路由
- 非直连网段:对于非直连的网段,需要静态路由或动态路由 ,将网段添加到路由表 中
工程三招
1 | Router(config)# no ip domain lookup//关闭域名解析(防止敲错命令查询) |
1 | Router(config)# line console 0 |
1 | Router(config-line)#logging synchronous//log当前显示信息同步 |
1 | Router(config-line)#no exec-timeout//关闭会话超时,防止一段时间不操作自动退出 |
静态路由
- 由管理员手工配置的,是单向的,缺乏灵活性
- 数据包如果要到达非直连网络 需要在路由表中填加条目,静态路由需要手动填加路由条目
静态路由配置
1 | Router(config)# ip router 目的子网 子网掩码 下一跳的IP |
默认路由
- 当路由器在路由表中找不到目标网络 的路由条目时,路由器把请求转发到默认路由接口
- 默认路由可以匹配所有网段 ,但是其优先级最低
- 当目标地址既匹配静态路由又匹配默认路由时,优选静态路由条目对应端口进行转发。当静态路由失效时,才匹配默认路由,根据默认路由进行转发
默认路由配置
1 | Router(config)# ip route 0.0.0.0 0.0.0.0 |
0.0.0.0是下一跳IP,代表任何网络
动态路由
指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。
动态路由不需要自己手工写路由,路由器之间能够自己相互学习
特点:
- 减少了管理任务
- 占用了网络带宽
RIP协议
RIP(Routing Information Protocol)距离矢量协议
RIPv1
有类路由协议 不支持变长子网掩码(VLSM)
更新方式为广播 不支持认证
每个更新包最大支持25条路由条目
路由表查询方式主类网段
不支持不连续子网
RIPv2
无类路由协议 支持边长子网掩码(VLSM)
路由更新方式为多播,目的地址为224.0.0.9
支持明文及密文认证(思科私有)
路由表查询机制是由小类–>大类(按位查询,最长匹配、精确匹配,先检查32位掩码的)
支持不连续子网
动态路由配置(RIP)
1.启动RIP
1 | Router(config)# router rip |
2.RIP版本号
1 | Router(config)# version 2 |
3.关闭自动汇总
1 | Router(config)# no auto-summary |
4.宣告主网络号
1 | Router(config)# network 想通信的网段号 |
5.退出
1 | Router(config)# exit |
OSPF协议
OSPF(Open Shortest Path First) 开放式最短路径优先协议
OSPFv2
- OSPF是一种无类路由协议,支持VLSM可变长子网掩码。支持IPV4和IPV6.
- 组播地址:224.0.0.5 224.0.0.6。
- OSPF度量:从源到目的所有出接口的度量值,和接口带宽反比(10^8/带宽)。
- 收敛速度极快,但大型网络配置很复杂。
- IP封装,协议号89
OSPF区域
骨干区域(区域0):骨干区域必须连接所有的非骨干区域,而且骨干区域不可分割,有且只有一个,一般情况下,骨干区域内没有终端用户。
非骨干区域(非0区域):非骨干区域一般根据实际情况而划分,必须连接到骨干区域(不规则区域也需通过tunnel或virtual-link连接到骨干区域)。一般情况下,费骨干区域主要连接终端用户和资源。
报文类型
OSPF的5种数据报文
1.Hello报文:周期性发送,用来发现和维持OSPF邻居关系。
2.DD报文:描述本地LSDB(Link State Database链路状态数据)的摘要信息,用于两台设备进行数据库同步。
3.LSR报文:用于向对方请求所需的LSA。
4.LSU报文:用于向对方发送其所需要的LSA。
5.LSAck报文:用来对收到的LSA进行确认。
邻居状态机
Down:
开启了OSPF但是没有收到任何的OSPF报文,只会发送Hello报文(周期性10s)
Attempt:
此状态只在NBMA网络上存在**(NBMA后面会提一下)**,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为(30s)HelloInterval。如果RouterDeadInterval(死亡)间隔(120s)内未收到邻居的Hello报文,则转为Down状态(相当于死亡,转为死亡状态,初始状态就是死亡状态(没有使用就是死亡)) (简单理解:手工配置了邻居,去找这个邻居,但是邻居还没有恢复你报文) 这种状态很难遇到,作为了解即可。
Init:
接受到了邻居发送的HELLO报文,但是报文中的邻居信息没有存在我。 (最开始A喊:有人吗。B听到了知道A的存在,但是A不知道B的存在。)
2-Way:
邻居状态的最高状态 接受到了邻居的HELLO报文,同时邻居的HELLO报文中存在我。 在DROther(代表了既不是DR、也不是ODR)之间最高只能是2-Way状态 (DR:指定路由器,负责收集分发LSA信息。虚拟出来的路由器,依附在实体路由器的接口上) (BDR:备份路由器,作为DR的备份,虚拟)(DR与ODR都是IP的时候讲的)
ExStart:
形成邻接状态的第一步 开始交互DD报文,选举主从关系(就是选举DR,BDR) 报文不携带LSA头部
Exchange:
主从关系选举完成 还是一样交互DD报文,此时DD报文携带LSA信息。交互完后根据情况进入Loading状态或Full状态。 (此时已经交换目录,然后要不要交换书籍看自己)
Loading:
发现自己的LSDB不存在对方的部分LSA信息,所以发送LSR报文进行请求,接收到LSR的路由器,将回复LSU报文,当发出LSAck报文后进入Full状态
Full:邻接状态 作为OSPF路由器之间关系的最高状态,代表了LSDB已经同步。
OSPF配置
1 | R1(config)router ospf xxx(进程ID) |
OSPF的建立过程
OSPF的建立过程可以简单分为以下3个过程
建立邻居关系
双方路由器初始为down状态,连接之后进入init状态,开始互相交换hello数据包,通过hello报文得到路由器基本信息之后,进入two-way状态,开始建立邻居关系。邻居关系建立之后进入exstart状态
建立各自的拓扑表
进入exstart状态后确立主从关系,互相交换LSA摘要信息之后变为exchange状态
建立邻接关系
正在同步lsdb(链路状态数据库),但还未同步完成,两台设备的关系是loading完成lsdb同步,进入full状态,成立邻接关系。
OSPF配置过程
EIGRP协议
距离矢量和链路状态两种路由协议混合
配置命令
1 | R1(config)#router eigrp xxx(系统号)配置相同系统号要一样 |
配置EIGRP手工汇总
1 | R3(config)#interface fastetherent 0/0 |
ACL
访问控制列表(Access Control List)是路由器和交换机接口的指令列表,用来控制端口进出的数据包
分类
199和13001999:标准IP ACL(基于源IP地址过滤)ps:只能控制源IP是否允许通过路由器访问 不能根据目的IP控制
100199和20002699:拓展IP ACL(基于源、目的IP地址过滤;源、目的TCP/UDP端口;协议类型)可以控制允许源IP通过路由器访问某个网站但不能访问另一些控制列表里设定的网站
AppleTalk:600~699
IPX:800~899
3P原则
基于每种协议设置一个ACL(per protocol)
基于每个方向设置一个ACL(per direction)
基于每个接口设置一个ACL(per interface)
ACL工作原理
入站ACL:对到来的分组进行处理后在路由到主站接口(也就是数据包传输到路由器的接口时让不让进就完了)
出站ACL:将分组路由到出站接口,然后根据ACL对其进行处理(就是数据包进路由器处理完要发出的时候在出接口处让不让出就完事了)
ACL要么作用于入接口要么作用于出接口
ACL顺序:从上到下、每次一条语句(每次都是从第一条开始判断)
ACL配置
1-99:标准ACL
100-199:扩展ACL
ACl配置过程中一定要用反掩码!!!
标准访问控制列表的格式
1 | access-list access-list-number permit/deny [sourceaddress][wildcard-mask] |
eg:
1 | access-list 10 deny 192.168.1.1 0.0.0.255 |
将来自192.168.1.0/24的所有计算机数据包进行过滤丢弃
标准访问列表配置实例
1 | R1(config)#access-list 10 deny 192.168.2.0 0.0.0.255 |
上面配置的含义是阻止来自网段192.168.2.0的机器从int fa0/0.1端口出去,访问列表在配置好之后,要把它在端口上应用,否则配置了还是无效的
删除已建立的标准ACL
1 | R1(config)#no access-list +access-list number |
对标准的ACL来说,不能删除单个acl语句,只能删除整个ACL
拓展访问控制列表的格式
1 | access-list access-list-number permit/deny protocol +源地址+反码 +目标地址+反码+operan(It小于,gt大于,eq等于,neq不等于.)+端口号 |
eg:
1 | access-list 101 deny tcp any host 192.168.1.1 eq www |
将所有主机访问192.168.1.1这个地址网页服务(WWW)TCP连接的数据包丢弃。
拓展访问列表配置实例
1 | R2(config)#access-list 110 deny tcp any host 192.168.1.12 eq www |
上面配置的含义是拒绝访问192.168.1.12的www和ftp服务
删除已建立的扩展标准ACL
和标准的一样,不能单条删除,只能删除整个ACL
1 | R2(config)#no access-list +access-list number |
命令访问控制列表的格式
1 | ip access-list {standard/extended} access-list-name(可有字母,数字组合的字符串) |
eg:ip access-list standard softer
建立一个名为softer的标准访问控制列表
命名访问控制列表使用方法
1 | router(config)#ip access-list standard +自定义名 |
默认情况下第一条为10,第二条为20.如果不指定序列号,则新添加的ACL被添加到列表的末尾
1 | router(config-std-nac1)#deny any |
对于命名ACL来说,可以向之前的ACL中插入ACL,删除也可以删除单条ACL,
如:
1 | router(config)#ip access-list standard benet |
使用show access-lists可查看配置的acl信息
NAT(网络地址转换)
通过将内部网络的私有IP地址翻译成全球唯一的公网IP地址,使内部网络可以连接到互联网等外部网络上。
NAT的优缺点
优点:节省公有合法IP地址、处理地址重叠、增强灵活性、安全性
缺点:延迟增大、配置和维护的复杂性、不支持某些应用但可以通过静态NAT映射来避免
NAT三种实现方式
1、静态转换
IP地址一对一 内部网络设备统一使用一个公网IP与外网交流
静态NAT配置
全局模式下:
1 | ip nat inside source static 192.168.1.1(允许的某个内部地址) 61.0.0.2(公网IP) |
inside source指的是内部的源地址
在内外接口上启用NAT:
1 | 出口NAT: |
端口映射:
1 | ip nat inside source static tcp 192.168.1.1 80 61.0.0.1 80 |
2、动态转换
IP地址随机对应,无确定值,所有想要访问公网的内网IP都会被随机转化为指定IP池内的随机公网IP
仅当内网访问公网的设备数少于地址池中的IP数时适用
动态NAT配置
配置步骤:
全局模式下:
1、配置ACL,用于限定用作地址转换的内网地址范围
1 | access-list 1 permit 192.168.1.0 0.0.0.255(此处用反掩码哦!!!) |
2、配置公网所给予的地址池
1 | ip nat pool dizhichi 61.10.0.1 61.10.0.10 netmask 255.255.255.240 |
这里定义的的是公网IP池范围61.10.0.1-61.10.0.10 地址池名字为 dizhichi
3、设置ACL和地址池的映射关系,进行匹配地址转换
1 | ip nat inside source list 1 pool dizhichi |
4、设置内外接口
1 | ip nat inside //入接口 |
3、端口多路复用(PAT)
通过改变外出数据包的源IP地址和源端口进行端口转发,内网中的所有主机可以共享一个合法公网IP
PAT配置
全局模式下:
1 | ip nat inside source list 1 interface f0/1 overload |
此处使用的ACL列表为上面的
三种NAT的区别
静态转换的对应关系一对一且不变,并且没有节约公网IP,只是隐藏了主机的真实地址
动态转换虽然在一定情况下节约了公网IP,但当内部网络同时访问公网的主机数大于合法地址池中的IP数量是就不适用了
端口多路复用可以使用所有内部网络主机共享一个合法公网IP,从而最大限度地节约了IP地址资源
查看NAT转换条目
特权模式下:
1 | show ip nat translation //显示当前NAT转换表项 |
清除NAT转换条目
特权模式下:
1 | clear ip nat translation //清除NAT转换表项中的所有条目(静态NAT条目木不会被清理) |
NAT一些要注意的问题
ACL阻止转发后的流量
进行地址转换的ACL不全
overload参数漏掉
不对称路由 //指从主机A到B走过的路与从B到A不一样 即不对称
动态地址池IP地址范围配置错误
动态地址池与静态转换地址重叠
inside和outside接口配置错误