目录
前言
在前面,我们已经讲了在TCP/IP模式下的几个层次:应用层------程序员自定义协议、传输层------常用的TCP协议、UDP协议、网络层------IP协议,那么本篇我们就来了解一下在数据链路层的以太网协议。
什么是以太网?
- 以太网不是一种具体的网络,而是一种技术标准;既包括了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
- 以太网中的网线必须使用双绞线;传输速率有10M,100.100M等;
- 以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网、无线LAN等。
以太网帧格式
6位源地址和目的地址
源地址和目的地址记录了该数据帧要从哪里发送到哪里 ,记录了发送方和接收方的地址,需要注意的是,这里的地址不是IP地址,而是指网卡的硬件地址(MAC地址)。
什么是MAC地址?
MAC 地址,全称为 Media Access Control 地址,是分配给网络接口控制器(NIC)的唯一标识符,用于在物理网络段中进行通信。它是网络通讯的基础组成部分,尤其是在局域网(LAN)技术中,包括 Ethernet 和 Wi-Fi。MAC 地址由 48 位或 64 位组成,通常以六组两位十六位进制数表示 ,例如
00:1A:2B:3C:4D:5E
。这种格式使得 MAC 地址既容易阅读又便于处理。MAC地址在网卡出厂时就确定了,不能修改,MAC地址通常是唯一的(虚拟机中饭的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)。
我们可以打开cmd输入ipconfig -all进行查看:
MAC地址是用6个字节表示的,比4个字节的IP地址能够分配的数量多上6w多倍,现在的MAC地址其实是能够满足人类的需求,那为什么还要有IP地址?
这是在网络最开始的时候,IP地址和mac地址是由两个团队在同一个时间段各自独立的提出来的,虽然这两个都能用来表示地址,但是使用场景不同,IP地址是在网络层的,MAC地址是在数据链路层使用的 ,且一个设备具有唯一的MAC地址,一般不能修改。
IP地址用来表示在网络上两个设备之间的起始地和目的地,而MAC则表示在从发送方到接收方路径上每两个节点之间的起始地和目的地。
假设我现在在广东汕头,想要去西安。那么我们就先得做好路径规划,从汕头------>广州------>长沙------>西安。路径规划就是网络层做的事,源IP地址是汕头,目的IP地址是西安。那么如果我们现在要出发从汕头到广州,,此时在以太网数据帧(数据链路层)中,源IP地址是汕头,目的IP地址是西安,但源MAC是汕头,目的MAC地址是广州。从广州到长沙,源IP和目的IP依旧是汕头和西安,但源MAC是广州,目的MAC是长沙;而从长沙到西安,源MAC地址是长沙,目的MAC地址是西安。 我们可以观察到,源IP地址和目的IP地址从始至终都是不变的,但源MAC地址和目的MAC地址则是根据两个相邻节点不断变化的。
MAC地址和IP地址的区别
- IP地址是由服务商分配的,MAC地址是网卡的物理地址;
- IP地址空调在局域网内随意更改,但MAC地址一般不能更改;
- IP地址是32位(4个字节),而MAC地址是48位(6个字节);
- IP地址应用于网络层,MAC地址应用于数据链路层。
- IP地址描述的是路径总体的起点和终点;而MAC地址描述的是路途上每两个节点的起点和终点。
2位类型
2位类型字段用来描述载荷中存储的是什么类型的数据。可以用来区分不同的以太网帧类型,如以太网帧、IP数据报(0800)、ARP请求(0806)和应答、RARP请求和应答(8035)等
ARP协议
ARP(全称Adress Resolution Protocol,地址解析协议),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
IP协议路由转发的过程中都是拿着IP地址来进行查路由表的,从而来得到"网络接口",具体来说就是要传输给哪个MAC地址的设备。这个过程就涉及到了IP地址转换成MAC地址,就需要用到ARP协议来建立IP地址和MAC地址的映射关系。
ARP协议的作用
ARP协议建立了主机IP地址和MAC地址的映射关系。
- 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
- 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
- 因此在通讯前必须获得目的主机的硬件地址。
ARP协议的工作流程
数据长度
在以太网帧格式中,能够容纳的IP数据包的字节数最大为1500字节(相当于1.5kb),在数据链路层中能容纳最大载荷长度 又叫做MTU (最大传输单元)。MTU的大小跟硬件设备直接相关,不同的硬件设备,对应到了不同的数据链路层协议,也就对应不同的MTU。
MTU会对上层协议作出限制,IP数据包的分包和组包更多的是为了应对MTU的限制。当一个IP数据报达到了1500以上,就会自动拆包。
MTU对IP协议的影响
由于数据链路层MTU的上层协议的限制,因此,对于较大的IP数据包需要进行拆包。
- 将较大的IP数据包分成多个小包,并给每个小包打上标签;
- 每个小包IP协议头的16位标识(id)都是相同的;
- 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第三位用来表示结束标记(当前是否是最后一个小包,是的话设置为1,否则为0);
- 到达对端时再将这些小包进行顺序重组,拼装到一起返回给传输层;
- 一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据。
CRC校验和
校验和用来校验数据在网络的传输过程中是否出现了错误。以太网协议校验和是在帧尾。不同于其他协议。
以上就是有关数据链路层中以太网协议的相关知识点咯~
若有不足,欢迎指正~