一、数据链路层面
数据链路层包括了LLC子层(逻辑链路控制)和MAC子层(媒体接入控制子层)。
针对不同的物理链路定义不同的封装。
- 局域网封装:Ethernet 2(TCP/IP) , IEEE802.3(OSI)
- 广域网封装:PPP、HDLC、FR(帧中继)、 ATM(异步传输)
二、HDLC协议
HDLC(High-Level Data Link Control)即为高级数据链路控制协议,思科的串行链路默认为HDLC,分为工业标准的HDLC和思科私有的HDLC ,两者互不相通,思科私有的HDLC中加入了一些控制字符,识别上层协议,以及三层的传输方式。
在接口视图下定义HDLC封装,格式:link-protocol HDLC
HDLC抓包:
HDLC结构比较简单,其中不需要IP地址,因为双方都是通过点对点传输。其次protocol字段描述的是上层使用的协议,例如IP协议。
三、PPP协议
PPP(Point-to-Point Protocol)即为点到点协议,华为串行链路默认封装为PPP,顾名思义,PPP链路需要建立一 条端到端的会话链路。
PPP会话建立一般分为 LCP、PPP认证、NCP三个过程。
(1)LCP
LCP即为链路控制协议,通过发送LCP数据进行物理链路和封装的确认。
(2)PPP认证
PPP认证用于增加PPP会话的安全性,有PAP、CHAP两种认证协议。
主认证方:创建用户、选择PPP协议
主认证方:接口调用PAP或CHAP认证
被认证方:提供用户密码
PAP:密码认证协议,是一种一次性的简单的明文认证,安全性较差。
CHAP :挑战握手认证协议,通过三次握手的方式进行安全的MD5认证 ,在认证过程中需要发送挑战信息(类似 HMAC 密钥化哈希)。
CHAP认证过程:
1.主认证方会生成一段随机值(挑战值)给被认证方。
2.被认证方接收后,将原密码和随机值结合进行md5等哈希函数计算出一个哈希值,将用户名和哈希值发送给主认证方。
3.主认证方接收后,通过用户名对比,查找处对应密码,将对应密码和自己发出去的随机值也进行md5运算,得出与被认证方提供的哈希值一样则代表认证成功(挑战成功)。
(3)NCP
NCP即为网络控制协议,通过发送NCP 针对上层协议进行封装。常见的是IPCP 协商,在NCP协商过程中,会自动将自己本端IP地址以路由方式发送给对方,当PPP会话建立之后,会产生到达对方接口IP地址的32位主机路由。
四、GRE
GRE(Generic Routing Encapsulation)即为通用路由封装,标准的三层隧道技术,也是一种点对点的隧道技术。
示例:
R1、R2上:创建隧道,选择GRE协议,设置源ip地址和目标ip地址(接口地址),以及配置其隧道的ip地址。
此时再通过100.1.1.1 ping 100.1.1.2 进行数据抓包:
其中GRE用于连接两个ipv4的数据包,上层ipv4内的协议描述为gre。
五、MGRE
MGRE(Multipoint GRE)是一种基于GRE技术的升级版隧道协议,全称为多点GRE。它主要用于构建点到多点的虚拟网络,其中用到了NHRP协议。
NHRP:下一跳可达协议,所有的MGRE接口将自己的MGRE接口IP地址和对应隧道物理接口地址信息发送给NHS进行注册,NHS 上存在所有接入MGRE的接口映射关系。其他MGRE接口之间彼此通信时向NHS进行请求,形成隧道的目标地址。
示例:R1作为hub端,R2、R3作为spoke端。(R2和R3通过R1互连)
R1(NHS)上:
R2、R3上:
R1查看映射关系: