一、以太网
以太网并不是一种具体的网络,而是一种技术标准,它既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构、访问控制方式、传输速率等。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网、无线LAN等。
二、以太网的帧格式
以太网的帧格式如下图所示:
- 目的地址和源地址指的是目的MAC地址和源MAC地址。
三、局域网通信的原理
局域网就好比一间课室,在课室里谁都可以发言,而且你的发言所有人都可以听得到。比如在课室里老师发言说:“小明你站起来一下。”这句话一定是被课室里的所有人都听到了的,但只有小明会站起来,其他人即使听到了也不会有任何动作,因为他们知道这条信息不是发给他们的。在局域网内通信,假设局域网有M1到M10十台主机,每台主机此时如果M1主机想发消息给M6主机,数据到了M1主机的数据链路层后首先需要填以太网的报头字段,目的地址填的就是M6主机的MAC地址,源地址填的就是M1主机的MAC地址,类型填对应的上层协议。
M1主机填好报头之后,就将报文在局域网内转发了,这个报文一旦转发到了局域网,局域网内所有主机都会把它获取上来,它们需要判断这个报文是不是发给自己的。除了M6以外的主机发现该报文都不是发给自己的,那么它们就会将该报文丢弃。只有M6主机,获取上来报文之后发现是发送给自己的,它就对报文进行解包然后继续向上交付给上一层。自此就完成了局域网内的通信。
如果局域网内有两台主机比如M1和M5,有可能当M1主机想向局域网发送数据时M5主机也想发送,如果两台主机同时往局域网内发信息,就会出现冲突,这种就属于数据碰撞。所以此时就需要M1主机和M5主机随机等待上一段时间之后再重新发送数据,让两台主机发送的时间分开。因此,局域网也叫做碰撞域。
如果想要减少碰撞,那么局域网内的主机是越少越好,因为这样碰撞的概率就会降低。除此之外,每一台主机每次发送的数据不能过大,比如说其它主机每次发送的都是很短的数据,而M1主机每次发送的数据都很大,这就注定会使M1主机在发这个数据时要花费更多的时间,在这个时间内,其它主机由于数据比较小,所以发送地比较快,M1主机发送的数据就很容易跟别人的数据碰撞上。所以,数据链路层必须对上提要求,让报文大小不能过大,一般不能超过1500字节,这个最大值称为以太网的最大传输单元(MTU),如果IP报文的大小超过了这个值就要进行分片。
四、ARP协议
1.ARP协议的介绍
ARP协议也是数据链路层协议,它叫做地址解析协议,能够将IP地址转换成为MAC地址。需要注意的是ARP协议并不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层之间的协议。ARP协议建立了主机IP地址和MAC地址的映射关系。在网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址。数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则会直接丢弃该数据包。因此在通信前必须获得目的主机的硬件地址。
2.ARP协议的工作流程
- 源主机发出ARP请求,询问IP地址为XXX的主机的MAC地址是多少,并将这个请求广播到本地网段(以太网帧首部的MAC地址填FF:FF:FF:FF:FF:FF表示广播)
- 目的主机接收到广播的ARP请求后,发现其中的IP地址和本机相符,则发送一个ARP应答数据包给源主机,将自己的MAC地址填充在应答数据包中
3.ARP数据报格式
ARP协议的数据报格式如下图所示,其中各字段的含义是:
- 硬件类型指的是数据链路层的网络类型,1为以太网
- 协议类型指的是要转换的地址类型,0x0800为IP地址
- 硬件地址长度对于以太网地址为6字节
- 协议地址长度对于IP地址为4字节
- OP字段为1表示ARP请求,OP字段为2表示ARP应答