链路(Link):从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,构成数据链路
数据链路层以帧为单位传输和处理数据
封装成帧
指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
帧头与帧尾包含控制信息,其中有帧定界的标志用于区分一个个帧
为提升传输效率,帧的数据部分尽可能大
为控制差错等因素,规定最大传送单元(MTU,Maximum Transfer Unit)以约束帧的数据部分大小上限
其中:
以太网帧——帧头14字节,帧尾4字节
PPP帧——帧头5字节,帧尾3字节
透明传输
数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样
若帧的数据部分存在与帧标志重复的排列,那么会在发送方被转义,并在接收方链路层复原:
面向字节的物理链路——使用字节(字符)填充实现透明传输(重复部分前添加转义符)
面向比特的物理链路——使用比特填充实现透明传输(重复部分前补0等)
差错检测
链路层的帧格式中,都有差错检验校验和的位置,用于判断数据是否出错
常见的差错检验算法:
奇偶校验(一般不采用此法)
循环冗余校验(CRC,生成多项式校验)
由于可靠性一般由上层来保证,所以链路层在发现帧传输差错后,只需要丢弃即可
链路层也要保证可靠性的原因:有线传输通常不用,无线传输由于出错率相对更高,若不及时在链路层检测出差错,向上层传输数据时将放大差错,再纠错将造成较大资源浪费
点对点协议PPP
Point to Point Protocol。用于两端之间的链路通信,常见于广域网两个路由间的专用链路,用户端到ISP(电信宽带等),后者为基于以太网的PPP协议,即PPPoE(Point-to-Point Protocol Over Ethernet)
PPP的构成:
①对各种协议报的封装方法(帧)
②链路控制协议LCP。用于建立、配置与测试数据链路的连接
③一套网络控制协议NCPs。每个协议用于支持不同的网络层协议
PPP帧实现透明传输(见上部分内容)
媒体接入控制MAC
Medium Access Control。控制多个发送方与接收方占用共享传输媒体(与MAC地址不是一个概念)
静态划分信道
预先分配好信道,常见于无线网络
TDMA:时分多址。划分时间形成周期(时隙)轮流使用信道
FDMA:频分多址。信道的有效频率被划分为不同频段使用
CDMA:码分多址。通过不同的编码方式同时通过整个频段传输
动态接入控制
分为受控接入与随机接入,前者已被淘汰,只讨论随机MAC协议
CSMA/CD
容易在有线局域网中实现
MA:Multiple Access多点接入。多端在一条总线上,竞争使用总线
CS:Carrier Sense载波监听。发送前监听总线,总线忙则不发,否则发
CD:Collision Detection碰撞检测。边发送边监听总线,检测到冲突则立即停止发送,退避(等待)后再发送
先听后说,边听边说;一旦冲突,立刻停说;等待时机,重新再说
截断二进制指数退避算法:
争用期:开始发送到检测出碰撞的最长时间,即帧在总线上一来一回的时间(以太网规定最小帧为64字节即512比特,总线长度<2500m)
当重传16次仍不成功时,表面同时发送帧的主机太多,则丢弃该帧并向上层报告
CSMA/CA
适用于802.11无线局域网,且802.11还使用停等协议,需要收到确认帧ACK。CSMA/CD由于对无线硬件要求高,且难以碰撞检测,意义不大,因此不适用于无线局域网
CA:Collision Avoidance碰撞避免
协议规定站点需要在检测信道空闲后等待一段指定时间才能发送帧,帧间间隔取决于帧类型。以下为常见帧间间隔:
SIFS——最短帧间间隔。ACK帧、CTS帧使用SIFS
DIFS——比SIFS长得多。常见于数据帧和管理帧
退避算法与CSMA/CD不同,在以下情景采用退避算法:
①在发送数据帧之前检测到信道处于忙状态时
②在每一次重传一个数据帧时
③在每一次成功发送后要连续发送下一个帧时(避免一个站点长时间占用信道)
通过交换RTS帧与CTS帧进行信道预约
MAC地址
也称为硬件/物理地址(但不属于物理层)。以太网的MAC子层所使用的地址
MAC地址是对网络接口的唯一标识,而不一定是设备的唯一标识(路由器/交换机有多个MAC地址)
标准表示法:00-0c-cf-93-8c-92(前三字节确定硬件厂家,后三字节由厂家随机分配)
与IP地址对比:
IP地址是用于网络分层的——类似联系方式。子网内网络号一致,路由聚集,减少路由表,完成网络到网络的交付
MAC地址是用于一个平面的——类似身份证号。网络接口(网卡)在生产时不知道被用于哪个网络,因此通过MAC地址唯一标识,用于在一个网络内部进行区分,完成节点到节点的交付
数据包转发过程中源IP与目标IP保持不变(网络层),MAC地址逐个链路/网络改变(链路层)
ARP
地址解析协议,用于通过其它端的IP地址获取其MAC地址
每个节点有一个ARP表,包含IP与MAC地址的映射<IP addr; MAC addr; TTL>,TTL为映射失效时间(动态失效或静态永久)
若通过IP查表未找到记录,则:
①发送ARP请求广播帧,包含源IP与MAC地址,目标IP(目标MAC地址为ff-ff-ff-ff-ff-ff,因此所有主机都会收到)
②目标IP对应的主机收到请求后,记录源主机的IP与MAC地址到ARP表中,并返回单播MAC帧
ARP适用于LAN(局域网),不能跨网段查询MAC地址
交换机
类似路由器,都属于存储转发设备,但处于数据链路层(检查帧头部),效率更高,端口采用以太网协议。有交换表<MAC addr; interface; TTL>
对帧进行存储/(选择性)转发,向某些网段转发时使用CSMA/CD进行接入控制
透明:有MAC地址,无IP地址,节点不关心交换机的存在
交换机无需配置,能够自学习建立交换表:
①登记——收到帧后登记源MAC地址与对应接口号
②明确转发——通过查询交换表转发帧(单播、多播、广播)
③盲目转发——泛洪。查表失败时向除源接口外的所有接口转发
④明确丢弃——交换机知道不应该转发该帧时丢弃
交换机使用生成树协议(STP,Spanning Tree Protocol)通过增加冗余链路提高可靠性,避免网络环路带来的问题
VLAN
Virtual Local Area Network,一种将局域网内的设备进行逻辑分组的技术
插入vlan标记(vid,取值范围1-4094)后的帧为802.1Q帧,由交换机处理,客户端无法处理
pvid:接口的vlan id,华为的命名方式
打标签:当端口设置pvid后,收到普通以太网MAC帧时,会插入vlan标记使其变为802.1Q帧,简称“打标签”
去标签:当端口转发(发送)802.1Q帧时,可能会删除vlan标记,使其变为普通帧,简称“去标签”
交换机端口类型
Access
用于连接客户端(用户计算机)
只能属于一个vlan
接收:一般只接收不同帧,并给其打标签(vid为自身接口的pvid)
转发/发送:802.1Q帧中的vid等于自身的pvid,则去标签并转发,否则丢弃
Trunk
用于交换机间的连接
可以属于多个vlan
接收:对于已打标签的帧,直接接收;对于未打标签的帧,接收并给其打标签(vid为自身接口的pvid)
转发/发送:802.1Q帧的vid=自身pvid时,去标签后转发,否则直接转发
Hybrid
可用于交换机间的连接,也可用于连接客户端,还可用于连接路由器
可以属于多个vlan
接收:与Trunk接口相同。对于已打标签的帧,直接接收;对于未打标签的帧,接收并给其打标签(vid为自身接口的pvid)
转发/发送:查询去标签列表(用户设置),若查到则去标签后转发,否则直接转发