1、提供的服务
概括来讲是通过一条链路,从一个结点向相邻的另一个结点传输网络层的数据报。细分的话分为:
链路层有这些服务,并不是说每个网络都要提供这些全部功能,比如我的办公网络中使用的介质是光纤,误码率很低,所以就不需要在链路层提供可靠交付,可靠交付让上层协议去保障(如tcp)。而一个无线网络(wifi)中,因为无线电波的衰减问题,误码率很高,所以这些网络需要在链路层提供可靠交付。
2、MAC地址
网卡都有一个唯一标识,称为Mac地址,48位。在出厂时由厂商固化在网卡中(通过软件也可以修改)。
3、链路层的工作方式
链路层分组称为帧,源主机A
发出一个IP分组时,链路层协议会将IP分组封装到数据帧里。在帧的头部包含源MAC地址、目的MAC地址,分别是MAC_A
、MAC_R1
。
下一跳结点R1
接收到会校验数据帧,然后取出IP分组完成网络层功能(如修改RTT,校验和),根据目的IP检索转发表,转发至指定端口。到达指定端口后,再重新封装IP分组到一个新的数据帧(如果分片就是多个帧),此时源地址、目的修改为MAC_R1
、MAC_R2
。
IP分组里只有目的IP信息,结点如何知道下一跳的MAC地址,是ARP协议的解决的问题。
4、ARP协议(地址解析协议)
ARP协议的作用是在一个局域网中,根据IP地址得到MAC地址。在一个局域网中,每个结点(主机、路由器)都会维护一个ARP表。
AB在一个局域网中的通信过程:
当A和B不在一个局域网中时,主机A在封装链路层数据帧时,如何得到B的MAC地址?
答案是A无法得知,也不用知道。因为帧头部中的目的MAC地址是下一跳的MAC地址,而不是整个IP分组终点的MAC地址。
图片中的问题:
- 主机A如何知道B的IP地址?
答案是上层协议调用(最终起点可能是来自用户输入,比如用A访问B上的一个web应用) - A如何知道R左接口IP?
默认网关,分配IP时就会得到 - A如何知道R左接口MAC?
用ARP协议
完整的A向B发IP分组的过程:
- A的网络层协议构造IP数据报,源IP是
IP_A
,目的IP是IP_B
- A的链路层协议构造链路层数据帧,源MAC是
MAC_A
,目的MAC是MAC_R-left
- R收到数据帧,提取IP数据报,交给R的网络层,完成网络层功能(如校验头部、修改RTT)
- R根据转发表,转发至右边的接口
- R创建链路层数据帧,,源IP是
MAC_R-right
,目的IP是MAC_B
- B的链路层收到数据帧,提取IP数据报,交给网络层
ARP协议虽然放在链路层的部分介绍,但是ARP协议通常分类是在网络层的下端(也有些观点认为应该分类在链路层)
-
链路层(二)MAC协议
链路层分组在链路广播链路(共享介质)上以物理信号发送时,两个分组一起发送,两个分组都会坏掉。如何解决这个问题? - 链路层(三)PPP协议