以太网协议

以太网(Ethernet)

以太网是一种局域网技术,其规定了访问控制方法、传输控制协议、网络拓扑结构、传输速率等,完成数据链路层和物理层的一些内容,它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection),另外的一些局域网技术有令牌环网,无线LAN等。

以太网协议

TCP/IP四层模型中,以太网协议采用RFC894格式,如下图:
以太网协议_第1张图片

其中目的地址和源地址指的是MAC地址,即设备的物理地址。MAC地址用于标示网卡,每个网卡都具有唯一的MAC 地址
以太网协议_第2张图片

当在同一个局域网中,主机A需要给主机B发送消息时,主机A将以太网桢发出,此时局域网中所有主机均可收到这个桢,主机中的网卡接收到以太网桢后,会将目的MAC地址和自己的MAC地址进行比较,如果不相同就会丢弃,如果相同则会接收,此时则B主机就收到了A的消息。
以太网桢中的类型指的是,其内部数据的协议类型,如果中间是IP数据报则协议类型为0800, 如果是ARP请求或者应答,则为0806,类型占两个字节
其最后面是CRC循环冗余码,用于差错控制,即检验桢的正确性
最后就是以太网桢为了提供足够快的响应速度具有长度限制,其数据部分的最大长度受到MTU控制, 最小长度不能小于46字节,如ARP请求为28位,为了满足最小长度需要填充到46位(PAD)

MTU(最大传输单元)

MTU是根据不同类型的网络给出的最大传输单元的限制,如以太网的MTU为1500字节,16MB/s的令牌环(IBM)的MTU 为17914字节,其作用是为了保证网络有足够快的响应速度,另外MTU 指的是以太网桢数据部分的长度,并非以太网桢的长度。假设需要发送的UDP数据报长度大于MTU减去IP首部长度,此时数据报在IP层就会进行分片。
以太网协议_第3张图片

单播 多播 广播

在以太网协议中,目的地址分为三种单播地址、广播地址、多播地址,其中单播地址如上面A给B主机发送,其接收者为一个,并且其目的地址的最高字节的低位为0,
以太网多播地址48位中的最高字节的低位为1,如 01:00:00:00:00:00 ,只要这一位为1均为多播地址,‘
以太网广播地址可以看作特殊的多播地址其48位全为1 11:11:11:11:11:11,
当网卡收到一个桢后查看桢检验和,如果桢检验和出错则丢弃,然后进行桢过滤,检验其桢是否具有合法的桢类型,其目的地址是否和自己的物理地址相同,或者是否是多播地址,然后根据帧类型进行分用。
另外网卡可以设置为混合模式,可以接受每个收到的桢的一个复制,tcpdump采用这种方法。

参考:《TCP/IP详解卷1:协议》 LawrenceBerkeley

你可能感兴趣的:(Linux网络编程)