系列文章目录
什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
Internet网络的网络层——IP协议之IP数据报的结构
IP分片
IP编址与有类IP地址
IP子网划分与子网掩码
CIDR与路由聚合
DHCP协议
网络地址转换(NAT)
ICMP(互联网控制报文协议)
IPv6简介
路由算法之链路状态路由算法
路由算法之距离向量路由算法
路由算法之层次路由
数据链路层概述
数据链路层——差错编码
多路访问控制(MAC)协议——随机访问MAC协议
ARP协议
以太网
交换机
虚拟局域网(VLAN)
- 系列文章目录
- PPP设计需求[RFC 1557]
- PPP数据帧
- 字节填充(Byte Stuffing)
- PPP数据控制协议
PPP协议是面向点对点链路的协议。
点对点链路比广播链路要容易很多,因为只有一个发送端,一个接收端和一条链路。
- 不存在第三方共享链路的问题,因此无需介质访问控制(Media Access Control),因此通常来说无需明确的MAC寻址
- 比如拨号链路,ISDN链路
常见的点对点数据链路控制协议:HDLC: High Level Data Link Control、PPP (Point-to-Point Protocol)
PPP设计需求[RFC 1557]
- 组帧:作为链路层的一个协议,需要将网络层数据报封装到数据链路层帧中。
- 可以同时承载任何网络层协议分组(不仅IP数据报)
- 可以向上层实现分用(多路分解)
- 比特透明传输:数据域必须支持承载任何比特模式
- 差错检测
- 连接活性(connection liveness)检测:检测、并 向网络层通知链路失效
- 网络层地址协商:端结点可以学习/配置彼此网 络地址
PPP无需支持的功能:
- 无需差错纠正/恢复
- 无需流量控制
- 不存在乱序交付
- 无需支持多点链路
差错恢复、流量控制等由高层协议处理。
PPP数据帧
- 标志(Flag): 定界符(delimiter)。通过检测这个标志字节的出现就能知道这个数据帧的开始或者结束
- 地址(Address): 无效(仅仅是一个选项)
- 控制(Control): 无效;未来可能的多种控制域
- 协议(Protocol): 上层协议 (eg, PPP-LCP, IP, IPCP, etc)
- 信息(info): 上层协议分组数据
- 校验(check): CRC校验,用于差错检测
PPP协议双方可以协商省略地址字段和控制字段。所以一个PPP数据帧协商后最多可以节省5个字节的长度:一字节的地址字段、一字节的控制字段、一字节的协议字段、两字节的校验字段。
字节填充(Byte Stuffing)
要实现“数据透明传输”,就要在构造数据帧的时候对封装的数据进行处理。
-
如果发送端发现数据中有<01111110>或<01111101>,就在它的前面添加额外的字节 <01111101> (“填充(stuffs)”)
-
在发送端填充以后,接收端在正常情况下就不会出现歧义了
- 如果在数据里面有单个字节<01111101>,则表示一个填充字节
- 如果有连续两个字节<01111101>则丢弃第1个,第2个作为数据接收
- 如果是单个字节<01111110>则表示标志字节
比如:
PPP数据控制协议
在交换网络层数据之前,PPP数据链路两端必须先完成PPP链路的建立,因此两端必须:
- 配置PPP链路
- 双方协商最大帧长、身份认证等等
- 学习/配置网络层信息。主要包括地址信息
PPP链路的生命周期大概如下所示: