1.串行链路协议
![]()

如图串口:
![]()

串口使用Serial线连接,数据包的二层头通常用HDLC和PPP协议封装,而不是以太网协议;
![]()
2.HDLC协议
1)High-Level Data Link Control,高级数据链路控制;

2)抓包分析
串口的二层协议和以太网不同,不需要封装源mac和目标mac,因此在串行链路中也不会有ARP;
二层的协议名为:Cisco HDLC,因为目前使用的HDLC标准大多是思科改良的,所以名称中带思科;
HDLC头中只封装了3个字段:
Address ->地址类型,0x0f表示单播;
Control
Protocol ->上层协议类型,也就是三层协议的类型,0x0800表示IP协议;

3)配置HDLC
华为设备默认的串口协议是PPP
如果想使用HDLC协议需要用命令修改为HDLC协议:(只有串口能改,以太网接口改不了)
sys
int s2/0/0/0
link-protocol hdlc
![]()

4)地址借用
也就是多个物理口使用同一个ip地址;
好处:
节省ip地址;
方便修改;(例如多个口共用同一地址时,如果要修改,只需要修改一次即可)
如图:
RTA的串口S1/0/0借用回环口Loopback0的ip地址:
S1/0/0借用回环口地址后无法ping通RTB:
因为地址10.1.1.1/32是属于回环口的,在RTA的路由表中记录的直连路由到RTB也就是10.1.1.0/24网段的出接口为回环口Loopback0
导致从RTA无法发包给RTB,但RTA能收到从RTB发过来的包,导致ping不通;
为了能ping通,需要给RTA配置一条静态路由,并指定出接口为S1/0/0;
3.PPP协议
PPP是串口的另外一种二层协议;
是华为设备串口的默认协议;
1)PPP和HDLC对比
名称
|
认证
|
错误检测
|
错误恢复
|
支持同步或异步链路
|
HDLC
|
×
|
√
|
×
|
×
|
PPP
|
√
|
√
|
√
|
√
|
2)抓包分析

抓包可以看到:
PPP头和HDLC一样,只封装了3个字段 ,不需要源mac和目标mac;

3)PPP组件
以太网分为两个子层:LLC层(负责网络层)、MAC层(负责物理层)
PPP也分为两个子层:LCP、NCP

PPP开启后,可以在相关接口下看到提示信息:

NCP表示网络层控制协议,显示IPCP开启,是因为网络层用的是IP协议,也就是IP控制协议
如果串口只配置了PPP协议,没有配置IP地址,IPCP的状态就是 closed;
4)PPP认证模式
PPP有两种认证模式:PAP和CHAP
模式
|
备注
|
PAP
|
Password authentication protocol 密码认证协议 ,以明文方式直接放送密码,二次握手机制,发送方为被认证方
缺点:以明文的形式发送密码不安全
因为发送方为被任正非所以可以无限次的尝试(暴力破解)
只在链路建立的阶段认证,一旦成功建立后将不在认证
|
CHAP
|
Challenge Handshake Authentication Protocol 挑战/质询握手认证议,以MD5来隐藏密码,三层握手机制,由认证方发起认证,有效避免了暴力破解,在链路建立后具有再次认证检测机制,目前使用的广泛
|
1】PAP
有两个角色:认证方、非认证方
如图,RTB是被认证方,需要向认证方RTA发送认证信息
明文的用户名、密码;抓包可以看到,不安全
认证由被认证方RTB发起,因此可以无限次尝试,可以暴力破解密码;
RTA收到认证信息后,确认用户名和密码是否正确,然后给RTB发送允许连接或拒绝连接;
链路建立成功后,将不再需要认证;

抓包看到的PAP认证信息:

2】CHAP
推荐使用的PPP认证方式;
认证信息使用MD5加密,更安全;
三次握手:
认证方发起认证;被认证方发送认证信息;认证方确认是否认证通过;
可以避免暴力破解;

抓包可以看到:
认证信息被加密

3】PPP认证配置:
命令
|
备注
|
AAA
local-user huawei password 123.com
local-user huawei service-type PPP
|
配置PPP,设置用户名密码和服务类型(认证方)
|
PPP authentication-mode PAP/CHAP
|
配置认证模式(认证方)
|
PPP pap local-user huawei password cipher 123.com
|
配置PAP认证(被认证方)
|
PPP chap user huawei
PPP chap password cipher 123.com
|
配置CHAP认证(被认证方)
|
注意:
在配置了PPP之后,需要在刷新接口使配置生效;
也就是在串口下执行命令:
shut down
undo shut down
示例一:
![]()
![]()

示例二:
![]()
![]()