点对点信道的数据链路层的协议数据单元——帧。

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。

点对点信道的数据链路层在进行通信时的主要步骤:假设结点A要向结点B发送数据

  1. 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。

  2. 结点A把封装好的帧发送给结点B的数据链路层。

  3. 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层,否则丢弃这个帧。

    三个基本问题:

    1.封装成帧:帧长等于数据部分的长度加上帧首部和尾部的长度,而首部和尾部的一个重要作用是进行帧定界(确定帧的界限),此外,首部和尾部还包括许多必要控制信息。

    2.透明传输:由于帧的开始和结束的标记是使用专门指明的控制字符。不管从键盘上传输什么字符都可以放在这样的帧中传输过去。如果所传字符为ASCII,就是不透明传输,须加转义字符ESC(1B),

    用字节填充法解决透明传输的问题。

    3.差错检测:为了进行差错而添加的冗余码称为帧检测序列FCS.

在局域网中,硬件地址又称为物理地址或MAC地址。

wKioL1c1lNOzBeCqAABPEkaK7mk204.png

wKioL1c1ldmhr3oLAAEHmm_SC_U291.png

主机发送一个ARP请求获得目的主机的硬件地址

wKioL1c1lo3BWNbEAAKyFpJbtlA644.png

ARP报文:

wKiom1c1lhSCvL9KAAICRb2iw3E834.png

硬件类型1表示以太网,除此之外还有令牌环网

协议类型:要转换的地址类型,为0x0800为IP地址,硬件类型长度6个字节,用一个字节描述。

协议地址长度4个字节:IPv4:4个字节;

IPv6:16个字节。

op:1表示请求,2表示应答。

注:Linux下MAC得知是虚拟的。

wKiom1c1l5fDgwjZAAEA4BBNSKQ722.png

eg:

wKiom1c1oHXCHC5pAAFWCJtFRq0153.png

使用如下脚本语言获取局域网MAC地址与IP地址映射关系

#!/bin/bash                                                                     
i=1
while [ $i -lt 255 ]
do
    ping -c 1 192.168.136.$i
    let i++
done

wKioL1c1o9PD2wPsAAAcogzA6j4885.png

wKiom1c1ozuhoqxcAAA4_9KJ29A272.png