网络扫盲
802.1Q_VLAN简介
一、VLAN
**LAN(即局域网)**是最常见且应用最为广泛的一种网络,它是指在1~5公里范围内两台以上的计算机设备(如服务器、工作站)通过线缆(如同轴线缆、双绞线、光缆等)连接起来实现的资源共享的计算机网络。
**MAN(即城域网)**是指在同一城市范围内所建立的计算机网络,其范围可覆盖到六十公里。
**WAN(即广域网)**是指连接不同地区局域网或城域网的计算机网络,其覆盖范围广,可覆盖几千公里,能连接多个地区、城市和国家,甚至横跨几个洲实现远距离通信。
无线局域网WLAN(Wireless Local Area Network)是一种无线计算机网络,使用无线信道代替有线传输介质连接两个或多个设备形成一个局域网LAN(Local Area Network)。
虚拟局域网技术VLAN(Virtual LAN)是指在交换局域网的基础上,采用软件处理构建的可跨越不同网段、不同网络的端到端的逻辑网络。
一个VLAN组成一个逻辑子网,即一个逻辑广播域;它可以是一个交换机的部分端口,也可以是覆盖多个网络设备,允许处于不同地理位置的网络用户加入到一个逻辑子网中。
(引入VLAN、分割子网就是缩小广播域的手段)
1、VLAN的作用
所谓广播帧就是在二层环境中设备为找到目的ip设备的MAC地址发出的广播帧在广播域中广播,这样会导致广播帧占用网络带宽,降低设备性能。
可以使用三层设备路由器隔离,广播帧属于二层并不会跨越三层,所以为了解决广播风暴,可以使用三层设备隔离广播域,减小广播域范围。比如以路由器上的网络接口(LAN Interface)为单位分割广播域,由于路由器是三层设备,对数据的转发容易形成瓶颈,路由器网络接口有限,所以一般我们使用VLAN来隔离广播域。
二层交换机使用VLAN(虚拟局域网)隔离广播,用来减小广播域范围。这样的话,不同VLAN之间是无法进行通信的,假设PCA发送一个广播帧,只会在VLAN1之间传播并不会传播到VLAN2,这样既限制了广播域的范围,又保证了VLAN2的安全性。
2、VLAN的优点
- 不受物理链路的限制,有效控制广播域范围;
- 增强局域网的安全性;
- 灵活构建虚拟工作组,简化网络管理;
缺点:网络构成复杂化
3、VLAN的分类
静态VLAN:
基于端口的VLAN:
一个交换机下一个或者几个端口属于一个VLAN,即某些交换机端口的集合,这个端口下面的用户也就属于该 VLAN。
这种划分方法的优先就是配置比较方便,只要在交换机上将相应的端口加入相应的 VLAN 即可,缺点是对于用户来说如果更改了交换机的端口也就更换了VLAN ID。
动态VLAN:
基于MAC地址的VLAN:
在划分VLAN的时候根据设备的MAC地址进行划分,设备根据自己网卡的MAC地址唯一确定VLAN,当设备移动时,VLAN能够自动识别,而无需重新配置,非常方便。
这种划分方法的优点是对于用户来说不受地理位置的约束,缺点网络规模大时,配置划分管理繁琐。
基于协议的VLAN:
运行不同的协议划分到相同的VLAN中。
种划分方法优点依旧是不受物理位置的影响,缺点是PC真正可以运行的协议并没有很多,有划分vlan数量上的限制。
基于策略的VLAN
诸如此的分类方法还有很多,主要根据OSI参照模型哪一层的信息决定端口所属的VLAN。
二、交换式局域网
交换式局域网所有站点都连接到一个交换式集线器或局域网交换机上。交换式集线器或局域网交换机具有交换功能,它们的特点是:所有端口平时都不连通,当工作站需要通信时,交换式集线器或局域网交换机能同时连通许多端口,使每一对端口都能像独占通信媒体那样无冲突的传输数据,通信完成后断开连接。由于消除了公共的通信媒体,每个站点独自使用一条链路,不存在冲突问题,可以提高用户的平均数据传输速率,即容量得以扩大。
交换机的作用:
- 连接多个以太网物理段,隔离冲突域,但是不可以隔离广播域;
- 对以太网帧进行高速而透明的交换转发;
- 自行学习和维护MAC地址信息;
- 扩展LAN的距离,增加LAN数据传输容量;
总得来说交换机的作用是寻址和转发,这边需要注意的是寻址和转发都是MAC地址,而路由器寻址寻的是IP地址,而交换机是MAC地址。(现在很多交换机都是三层交换机了,所以交换机并不一定工作在二层。)
当需要转发数据帧时,交换机会查看MAC地址表,根据数据帧的目的MAC转发到指定的端口,不会转发到其它端口,这样每一台主机都只会收到跟自己有关的数据,不会相互影响;假如数据帧的目的MAC地址不在交换机MAC地址表里时,交换机会把数据帧转发到除接收端口外的其它所有端口,此时交换机就是HUB,不能起到隔离冲突域的作用。所以,交换机之所以能够隔离冲突域,是因为交换机有地址学习(生成MAC地址表)的能力,并且按照MAC地址表转发数据。
HUB(集线器)的工作方式:无论收到什么,一概泛洪,每个端口上的终端都要判断是不是自己的数据包,当系统正在泛洪的时候,某台终端要发送数据包,但系统没有资源来处理,这叫冲突,一个HUB就是一个冲突域,所有端口共享HUB的最大带宽。
ARP协议
三、802.1Q协议
802.1Q协议为标识带有VLAN成员信息的以太网帧建立了一种标准方法。标准定义了VLAN交换机操作,从而允许在桥接局域网结构中实现定义、运行以及管理VLAN拓扑结构等操作。主要用来解决如何将大型网络划分为多个小网络,这样广播和组播流量就不会占据更多的带宽。此外还提供更高的网络段间安全性。
1、802.1Q工作原理
交换机根据VLAN标签来区分不同的VLAN的以太网帧,一个标准的以太网帧进入交换机前不带VLAN标签,进入交换机端口的时候便打上了VLAN标签,最终在对应发送端口判断是否需要进行VLAN标签剥离(根据unTag-VLAN-Map参数判定)。VLAN关键参数:PVID、VLAN-Map、unTag-VLAN-Map
在标准的以太网帧的源地址SA和类型Type之间打上的4字节的Tag标签,此tag标签中含有VLAN ID,VLAN ID的范围为4096,去掉一个默认的VLAN1和VLAN4096作为保留VLAN,实际可用的VLANID个数为4094个。
TPID:标签协议标识,表明802.1Q帧时为0x8100;
Priority:用于指明VLAN帧的优先级,当交换机发生流量阻塞时,优先发送值较高的帧;
CFI:0表示是规范格式;1表示非规范格式,在现在以太网环境中,总是有CFI=0;
IP包的最大长度为1500,以太网帧的最大长度需要算上帧头18bytes(不包括Preamble和SFD字段),所以是1518;而以太网最小有效值是64bytes, VLAN帧是在标准以太网的基础上又增加了4bytes,所以其长度范围是68~1522bytes。 超过1522bytes的以太网帧,一般通称为超常帧。
2、VLAN端口的模式
Access(访问链接):一个物理端口只属于一个VLAN,且该端口仅转发该VLAN的数据帧;Access模式常用于交换机直接连接用户设备等其他无法识别VLAN帧的终端设备,也就是交换机直接接 PC使用 access 链路。
Trunk(汇聚链接):一个物理端口同时属于多个VLAN,允许转发多个不同VLAN数据帧;Trunk模式常用于交换机与交换机互联的情况,同时可处理多个VLAN的数据帧。汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。(汇聚链路上流通着多个VLAN的数据,自然负载较重。因此,在设定汇聚链接时,有一个前提就是必须支持100Mbps以上的传输速度。)
3、802.1Q_VLAN处理流程
入端口流程
1、当一个数据报文到达交换机的某个端口时,交换机端口会查看该报文中有没有802.1Q标签,若没有,交换机根据该端口所属的VLAN ID,给该数据包添加一个tag ID的标签头并进入交换机内部处理阶段;若报文中携带了802.1Q标签,则进行下一步判断。
2、交换机判断是否允许该报文通过该端口,但是不同模式的端口有着不同的判断方法。针对Access口而言,是对收到的报文中所携带的VLAN ID信息和该端口的PVID是否相等进行判断;针对Trunk口而言,是根据Vlan-allowed表项进行判断。若允许,报文进入交换机内部处理阶段;若不允许,则直接丢弃。
出端口流程
1、根据VLAN-Map参数判定当前交换机是否能对该VALN数据进行处理,若不能,直接丢弃;
2、若交换机能对该VLAN数据进行处理,则根据unTag-VLAN-Map参数判定时候需要去除Tag标记。
查询和转发
当数据报文进入交换机内部,交换机根据目的MAC地址查询MAC地址表,找到目的地址的出端口,并在满足VLAN-allow-list(定义交换机中哪些VLAN内的主机可以相互通信,哪些VLAN内的主机不可以通信)的情况下进行转发。
当引入VLAN后,交换机自动学习和维护MAC地址的过程方式:
- SVL(Shared vlan learning) :一个地址表项对所有的VLAN都通用,在这种方式下MAC 地址在整张表中是唯一的,一个MAC 地址在地址表中只能有一条记录,一个MAC只能被学习到一个端口上。
- IVL(Independent vlan learning ):在这种方式下MAC地址表在逻辑上可以被看成根据VLAN信息分成了很多张表,一个MAC 地址可被学习到不同VLAN对应的地址表上。
802.1Q_VLAN处理流程图
4、VLAN间路由
使用路由器进行VLAN间路由
使用三层交换机进行VLAN间路由(VLAN内通信)
[交换机工作原理详解(附原理图) - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/122241071#:~:text=交换机工作原理详解(附原理图) 1 连接多个以太网物理段,隔离冲突域,2 对以太网帧进行高速而透明的交换转发 3 自行学习和维护MAC地址信息)
ARP协议
ARP:地址解析协议,是已知IP地址来获取物理地址(MAC)的一个TCP/IP协议,标准:RFC826
在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播。如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。
一、ARP缓存表
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存表。这个高速缓存存放了最近IP地址到MAC硬件地址之间的映射记录。在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应的信息,则通过发送ARP request报文来获得它。学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。
动态ARP表:动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。
静态ARP表:静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。直到重新启动计算机为止。
ARP地址表更新条件:
- 主机收到目的IP是自己的ARP request报文;
- 当某台PC更换新的网卡并在新的网卡上配置上原来的IP地址时,会产生一个无应答广播,当其他电脑收到这个arp 广播时会和ARP缓存做对比,并更新ARP缓存,如果ARP中没有这个IP的记录则直接忽视这个广播包;
- 当计算机接收到ARP应答数据包的时,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。
二、ARP代理
当局域网内部主机发起跨网段的ARP请求时,出口路由器/网关设备将自身MAC地址回复给该请求,这个过程称为代理ARP。(eg:1.没有路由功能的主机;2.有路由功能,目的地指向本地出口)
代理ARP一般被像路由器这样的设备使用,用来代替处于另一个网段的主机回答本网段主机的ARP请求。
三、ARP缺陷
ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。如果攻击者定时向目标主机发送该报文,且时间间隔比ARP缓存的更新时间隔小的话,目标主机就会一直维持着一张含有错误信息的ARP缓存表。
预防措施:
- 把网络安全信任关系建立在IP+MAC基础上;
- 设置静态的MAC–>IP对应表;
- 使用静态的ARP表,停止使用ARP;
- 定期用响应的IP包中获得一个RARP请求,检查ARP响应的真实性;
- 对报文进行加密处理;
DHCP协议/技术
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
一、DHCP过程
所有的IP网路设定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求,而客户端则会使用从服务器分配下来的IP环境资料。
1、DISCOVER(广播)
当 DHCP客户端第一次登录网络的时,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP discover 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为 255.255.255.255 ,然后再附上 DHCP discover 的信息,含有自身MAC地址,向网络进行广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播,除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 DHCP服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。
2、OFFER(广播/单播)
当 DHCP服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER封包。源IP地址为DHCP服务器的IP地址,目标地址为255.255.255.255。同时,DHCP服务器为此客户端保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。
3、 REQUEST(广播)
如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer (通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。同时,客户端还会向网络发送一个 ARP封包,以执行冲突检测,查询网络上面有没有其它机器使用该 IP 地址; 如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息。
4、ACK(广播/单播)
当 DHCP服务器接收到客户端的 DHCP request 之后,会向客户端发出一个DHCP ACK 响应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。
早期的DHCP协议只适用于DHCP客户端和服务器处于同一个子网内的情况,不可以跨网段工作。
客户端重新登陆
以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户端使用时,则DHCP服务器给DHCP客户端回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
更新租约
当客户端在租期过去50%会向提供IP的服务端发送REQUESR,若服务端回复则提供新的租期和TCP/IP参数,若未回复则客户端继续使用当前IP剩下的50%租期,在过去租期的87.5%再次与服务端请求,如果还不成功,就放弃IP,重新申请。
二、DHCP relay
局域网内的DHCP客户端可以通过DHCP Relay Agent与其他子网的DHCP服务器通信,最终取得合法的ip地址。这样,多个网络上的DHCP客户端可以使用同一个DHCP服务器,既节省了成本,又便于进行集中管理。
如果本地网络没有DHCP server,则与本地网络相连的具有DHCP relay功能的网络设备收到该广播报文后,将进行适当处理并转发给指定的其它网络上的DHCP server。DHCP server根据DHCP client提供的信息进行相应的配置,并通过DHCP relay将配置信息发送给DHCP client,完成对DHCP client的动态配置。
组网时需要把DHCP中继的接口网段与DHCP服务器的地址池网段配置为一致,否则可能会导致DHCP客户端申请的地址不在网关的网段内,致使DHCP客户端无法进行通信。同时,DHCP服务器上需要配置好路由,以保证DHCP中继与DHCP服务。
三、DHCP Snooping
DHCP服务的二层监听功能。利用该功能可以从接收到的DHCP-ACK或DHCP-REQUEST报文中提取并记录IP地址、MAC地址信息、vlan以及物理端口号。
DHCP客户端与DHCP服务器在同一网段内,二者通过DHCP Snooping通信,以保证DHCP客户端从合法的DHCP服务器获取IP地址。组网时需要注意的是,DHCP Snooping设备所有端口默认为非信任端口,需要配置连接服务器的端口为信任端口,否则会导致DHCP服务器的应答报文无法传递给DHCP客户端。
NAT
NAT (Network Address Translation), 即网络地址转换,允许私有网络多台PC共享同一个可全局路由的IPV4地址,按照地址转换的类型分为:SNAT、DNAT、STATIC三种。
NAT通常部署在一个组织的网络出口位置,通过将内部IP地址替换未出口的IP地址提供公网可达性和上层协议的链接能力。就是组织内部私有地址,访问公网地址,NAT把私有地址替换为公网地址访问公网。
一、STATIC(静态NAT)
一个内部主机唯一占用一个公网IP,一对一模型,此种转换方式下,转换上层协议就是不必要的,因为一个公网IP就能唯一对应一个内部主机。这种方式对节约公网IP没有太大意义,主要是为了实现一些特殊的组网需求。比如用户希望隐藏内部主机的真实IP,或者实现两个IP地址重叠网络的通信。
根据配置规则,如果从外面发起的访问,转换目的IP,如果从内网发起的访问,转换源IP,就是一条规则能匹配两次
二、SNAT
企业内部的主机A想访问互联网上的主机C,首先将请求数据包(源:ipA,目标:ipC)发送到NAT/防火墙所在主机B,B收到后将数据包源地址改为本机公网网卡的ip(源:ipB,目标:ipC),然后经互联网发送给C;C收到后将回应包(源:ipC,目标:ipB)转发给C的路由器,经互联网将回应包转发给B,B收到回应包后修改其目的地址,即回应包改为(源:ipC,目标:ipA)然后将数据包转发给A。
在这个过程中,修改了请求报文的源地址,叫做SNAT(source NAT POSTROUTING),用于局域网访问互联网。
三、DNAT
互联网主机C想访问企业内部的web服务器A,但A的地址是私有地址,无法直接访问。此时,C可以访问NAT/防火墙的公网地址,C的请求数据包(源:ipC,目标:ipB)到达防火墙B后,在B的prerouting上将请求数据包的目标地址进行修改,并将数据包(源:ipC,目标:ipA)发送给A。A收到后进行回复发送响应包(源:ipA,目的ipC)到防火墙,防火墙收到后对数据包源地址进行修改,并将响应包(源:ipB,目标:ipC)给C。利用这种机制可以将企业内部的服务发布到互联网。
在这个过程中,修改了请求报文的目标地址,叫做DNAT(destination NAT POSTROUTING),用于互联网访问局域网。
四、ALG(应该层网关)
应用层网关(Application Layer Gate),也叫应用层防火墙,其功能是识别应用层负载中协议所协商的信息并修改为所需要的协商信息,它在NAT中的应用是为了解决子连接穿越防火墙的问题。
在NAT的实际应用过程中,它仅对IP层报文头部的IP地址和端口进行识别和转换,对于负载应用层协议协商过程中所携带的地址信息和端口则无法识别和转换,所以为了解决负载中的协商信息识别,ALG主要完成了对应用层报文的处理,NAT利用ALG技术保证应用层能正确通信。
PPPoE
一、PPP协议
用户网络设备与ISP(Internet Service Provider)互联网服务提供商进行通信时,所使用的数据链路层协议通常就是点对点协议PPP(Point-to-Point Protocol)
PPP(Point-to-Point Protocol)和PPPoE(Point-to-Point Protocol over Ethernet)是两种不同的协议。
PPP 是一种用于在两个点之间进行通信的协议,常用于 dial-up 网络和 VPN 连接。PPP 协议提供了多种功能,包括身份验证、数据压缩和加密等,但是它不提供路由功能。
PPPoE 则是一种在以太网上运行管理PPP 的协议。它使用了以太网帧来封装 PPP 数据包,并使用一种特殊的服务器/客户端模型来管理 PPP 连接。PPPoE 常用于 ADSL、光纤宽带等拨号上网方式,也可以用于小区宽带网络中。
因此,PPPoE 可以看作是在以太网上运行 PPP 的一种方式,而 PPP 则是一种通用的协议,不仅可以在以太网上运行,也可以在其他类型的网络上运行。
PPP为点对点连接上传输多种协议的数据包提供了一种标准的方法,是为两个对等结点之间的IP传输提供一种封装协议,除了IP以外,PPP还可以封装其它协议。
1、PPP协议的组成
PPP协议主要由一下三部分构成:
- 提供一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是信息部分,长度受最大传送单元MTU(1500)的限制。PPP支持面向字节的异步链路(无奇偶校验的8比特数据)和面向比特的同步链路;(把多种协议封装成帧的方法);
- 链路控制协议LCP(Link Control Protocol):用于建立、配置以及测试数据链路的连接;
- 多种网络控制协议NCPs (Network Control Protocol):其中的每一个协议支持不同的网络层协议,用于建立、配置网络层协议,进行参数协商;
- 认证协议:最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。
2、PPP协议帧构成
- Flag字段为帧定界标志,用来标识PPP帧的开始与结束,长度为1字节,取值固定为
0x7E
; - Address字段为地址字段,用来标识接收方的地址,长度为1字节,由于点到点链路的接收方是唯一的,故此字段取值固定为
0xFF
,表示只有对端才能接受到数据; - Control字段为控制字段,长度为1字节,取值固定为
0x03
,表示无序号信息; - Protocol字段为协议字段,用来标识PPP帧封装的协议数据类型,长度为2字节。此字段使PPP得以封装不同的协议,即Data部分不同;
字段值 | 协议 |
---|---|
0x0021 | IP(Internet Protocol) |
0x0029 | Appletalk |
0x8021 | IPCP(Internet Protocol Control Protocol) |
0xC021 | LCP(Link Control Protocol) |
0xC023 | PAP(Password Authentication Protocol) |
0xC025 | LQR(Link Quality Report) |
0xC223 | CHAP(Challenge Handshake Authentication Protocol) |
- Data字段为信息字段,该字段长度不固定,最大长度等于MRU(Maximum Receive Unit)值,默认为1500字节。此字段存放承载的协议数据,包括LCP、NCP等。
- FCS(Frame Checksum)字段为帧校验和字段,用来检测PPP帧的完整性(CRC计算),长度为2字节。
Data字段的信息填充:字节填充法、0比特填充法。
3、PPP协议工作流程
在建立、保持和终止PPP链路的过程中,PPP链路需要经过5个阶段。
-
链路静止状态(Dead):链路一定开始并结束于这个阶段。当一个外部事件(例如载波侦听或网络管理员设定)指出物理层已经准备就绪时,PPP将进入链路建立阶段。在这个阶段,LCP自动机器将处于初始状态,向链路建立阶段的转换给LCP自动机器一个UP事件信号。
-
链路建立阶段(Establish):LCP用于交换配置信息包(Configure packets),建立连接。一旦一个配置成功信息包(Configure-Ackpacket)被发送且被接收,就完成了交换,进入了LCP开启状态。所有的配置选项都假定使用默认值,除非被配置交换所改变。有一点要注意:只有不依赖于特别的网络层协议的配置选项才被LCP配置。在网络层协议阶段,个别的网络层协议的配置由个别的网络控制协议(NCP)来处理。在这个阶段接收的任何非LCP packets必须被silently discarded(静静的丢弃)。收到LCP Configure-Request(LCP配置要求)能使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。
-
认证阶段(Authenticate):在一些链路上,在允许网络层协议packets交换之前,链路的一端可能需要peer去认证它。认证是不需要强制执行的。如果一次执行希望peer根据某一特定的认证协议来认证,那么它必须在链路建立阶段要求使用那个认证协议。应该尽可能在链路建立后立即进行认证。链路质量检查可以同时发生。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。
-
网络层协议阶段(Network):一旦PPP完成了前面的阶段,每一个网络层协议(例如IP,IPX,或AppleTalk)必须被适当的网络控制协议(NCP)分别设定。比如,NCP可以给新接入的PC机分配一个临时的IP地址,这样PC机就成为Internet上一个主机了。每个NCP可以随时被打开和关闭。当一个NCP处于Opened状态时,PPP将携带相应的网络层协议packets。当相应的NCP不处于Opened状态时,任何接收到的被支持的网络层协议packets都将被静静的丢弃。
-
链路终止阶段(Terminate):PPP可以在任意时间终止链路。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满、或者管理员关闭链路。LCP用交换Terminate(终止)packets的方法终止链路。当链路正被关闭时,PPP通知网络层协议,以便他们可以采取正确的行动。交换Terminate(终止)packets之后,执行应该通知物理层断开,以便强制链路终止,尤其当认证失败时。Terminate-Request(终止-要求)的发送者,在收到Terminate-Ack(终止-允许)后,或者在重启计数器期满后,应该断开连接。收到Terminate-Request的一方,应该等待peer去切断,在发出Terminate-Request后,至少也要经过一个Restarttime(重启时间),才允许断开。PPP应该前进到链路死亡阶段。在该阶段收到的任何非LCPpackets,必须被静静的丢弃。
二、PPPoE
1、背景
这里的PPP,就是指的PPP协议数据帧,而o就是over的意思,E就是Ethernet的意思,因此,PPPoE形象的说就是**“在以太网上的PPP协议”**。
- 在以太网链路上,以太网技术虽然具有简单易用,成本低等特点,但是以太网广播网络的属性,使得其通信双方无法相互验证对方的身份,因而通信是不安全的。
- 在PPP链路上,由于PPP协议自带认证功能,因此可以完美的解决上述问题。但是,PPP链路又无法实现多用户上网的需求。
- 为了解决这个矛盾问题,解决用户上网行为管理和收费的问题,提出了将PPP数据帧封装在以太网数据帧里边从而在以太网网络中传输的技术——PPPoE技术。
2、PPPoE协议
PPPoE在数据链路层依旧是采用以太网格式的数据帧进行封装,但是在以太网封装完毕后,会进行PPPoE的数据头封装,PPPoE包括PPPoE头和PPPoE数据段两个部分,而PPPoE数据段部分中又包含了PPP帧和正常的数据。
特别注意:这里的PPP帧并不是一个完整的PPP帧,它只包含了PPP帧的Protocol字段和正常的数据。其他的字段(如FLAG、FCS等)在PPPoE建立过程中并不需要。
报文字段 | 说明 |
---|---|
Ver域 | 4bits,PPPoE版本号,值为0x01。 |
Type域 | 4bits,PPPoE类型,值为0x01。 |
Code域 | 8bits,PPPoE报文类型。Code域为0x00,表示会话数据;Code域为0x09,表示PADI报文;Code域为0x07,表示PADO或PADT报文;Code域为0x19,表示PADR报文;Code域为0x65,表示PADS报文。 |
Session_ID域 | 16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xffff为将来的使用保留,不允许使用。 |
Length域 | 16bits,定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。 |
3、PPPoE工作流程
PPPoE协议采用Client/Server模式,普通用户一般为Client,而运营商为Server。
PPPoE的建立分为Discover阶段和PPP Session阶段:
- **Discover阶段:**主要是选择PPPoE服务器,并确定所要建立的会话标识符Session ID。
- **PPP Session阶段:**即执行标准的PPP过程,包括LCP协商、PAP/CHAP认证、NCP协商等阶段。
Discover阶段
指设备为用户分配接入的Session ID,用来标识一条用户与设备之间的PPPoE虚拟链路。
- 当Client要运行PPPoE时,首先以广播的形式发送一个PADI(PPPoE Active Discovery Initiation)报文,该报文中含有Client端要请求的服务信息
- PPPoE服务器在收到该报文后,会以单播的方式发送一个PADO(PPPoE Active Discovery Offer)报文,对Client端的PADI报文进行回应。
- PPPoE Client端在收到这个报文后,会向PPPoE Server发送PADR(PPPoE Active Discovery Request)报文。在这个报文中,PPPoE Client会创建并携带一个PPPoE Session。
- PPPoE Server还会向客户端发送PADS(PPPoE Active Discovery Session-confirmation)报文,表示收到了该Session ID。
- 发送**PADT(PPPOE Active Discovery Terminate)**报文,终止连接。
PPP Session阶段
标准的PPP过程。
4、PPPoE和DHCP之间的区别
DHCP协议是为网络中的设备(即计算机,智能手机和千兆以太网交换机等)分配唯一IP地址的一种方法,以方便流量的传输。PPPoE是一种基于凭据访问(即用户名和密码)封装网络流量的方法。在用户实际连接到互联网之前,需要正确配置PPPoE,但是DHCP不需要配置,安装即可使用。因此,使用DHCP协议连接到ISP可以消除因配置引起的问题。就像网络上的计算机一样,您不需要预先配置计算机。您只需将所有内容自动保留,并将配置留给ISP服务器即可。
PPPoE与DHCP之间的差异如下:
1、DHCP协议不需要身份验证,并且在打开网络时,IP地址不会为您所知。您要做的就是等待DHCP服务器从所有Internet IP地址中为您随机分配一个IP地址。但是,PPPOE协议需要先进行身份验证,只有当您的帐户密码正确时,才会为您分配有效的IP地址。
2、由于PPPoE协议使大量的主机组成一个网络单元并控制每个主机的费用对其计费,因此它可以被广泛用于企业网,校园网等。且目前流行的ADSL宽带接入方式已经采用了PPPoE协议。对于DHCP协议,通常用于将IP地址动态分配给公司的LAN或Internet。