CRC(Cyclic Redundancy Cheek)循环冗余检验是目前在数据链路层广泛使用的检错技术
Mac帧形式
目前FCS多采用CRC
CRC原理
在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2R),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*2R 除以生成多项式G(x)得到的余数就是校验码。
校验码是由模二运算得到的
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111
ARP数据报形式
第一次ARP请求是以太网目的地址为0xFFFFFFFFFFFF为广播路由所在以太网上所以主机都应答,Mac层根据第三个字段帧类型判断将数据交个上层的具体协议其中0x0800代表IP协议0x0806代表ARP协议0x0835代表RARP协议。其实后面的28字节才是真正ARP协议内容,前14个字节为Mac帧的首部。ARP协议的个字段代表的含义顾名思义其中OP代表是ARP请求还是ARP应答其中1代表ARP请求2代表ARP应答
Linux中用ping指令来测试网络的连通行
比如测试主机是否能连接到www.baidu.com
ping -c1 www.baidu.com
其中-c1选项是执行一次不然主机不停的执行ping指令
执行这个脚本检测当前主机所连接的路由器上连接的其他主机并且获得其Mac地址
#/bin/bash
i=1
count=0
while [ $i -le 254 ]
do
if [$count -gt 20 ];then
count=0
sleep 2
fi
ping -c1 "192.168.58.$i" &
let i++
let count++
done
执行玩这个脚本后使用arp -a指令显示当前路由缓存的各个主机的Mac地址