计算机网络-数据链路层:以太网协议、ARP协议、MAC、MTU

简介: 【2月更文挑战第2天】

一、以太网协议

1. 认识以太网

       (1)以太网不是一种具体的网络,而是一种技术标准。其中既包含了数据链路层的内容,也包含了一些物理层的内容。比如:规定了网络拓扑结构、访问控制方式,传输速率等。

       (2)以太网中的网线必须使用双绞线,传输速率有10M、100M,1000M等。

       (3)以太网是当前应用最为广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等。

2. 协议格式

image.png

48位对端MAC地址,48位源端MAC地址,16位上层协议,数据,32位数据帧尾。

48位对端&源端MAC地址:

       描述了相邻的两个指定物理硬件设备。

16位上层协议类型:

       描述的是以太网帧中数据所使用的协议,用于数据分用时协议选择。

32位数据帧尾:

       包含了校验和(CRC校验码)。

二、 MAC地址

1. 认识MAC地址

MAC地址:物理硬件地址

(1)MAC地址是每一块网卡在出厂时设定的地址,固定且不可修改(早期)。(虚拟机中的MAC地址不是真实的MAC地址,可能会产生冲突)

(2)MAC地址用来识别数据链路层中相邻的节点。

(3)MAC地址长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示。

2. 对比MAC地址与IP地址

IP地址:描述的是路途总体的起点和终点。

MAC地址:描述的是路途上的每一个区间的起点和终点。

三、ARP协议

1. 认识ARP协议

       ARP协议是介于数据链路层和网络层之间的一个协议,作用就是通过IP地址获取指定设备的MAC地址。

2.  ARP协议的作用

ARP协议建立了主机IP地址和MAC地址的映射关系:

(1)在网络通讯时,源端主机的应用程序知道对端主机的IP地址和端口号,但是不知道对端主机的硬件地址。

(2)数据包是先被网卡接收到,再去处理上层协议,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。

(3)所以在通讯前,必须先获得目的主机的硬件地址。

3. ARP协议的工作流程

(1)广播ARP请求,将目的端MAC地址设置为全1(广播地址),其中包含了自己的IP地址和MAC地址,以及指定设备的IP地址。

(2)收到ARP请求的主机,会验证目标IP地址与自己是否一致:一致,则组织ARP响应,填充自己的MAC地址进行回复;不一致,则丢弃。

(3)主机获取到指定主机的MAC地址后,会在arp缓存表中临时存储起来(默认保存30分钟)。

4. ARP欺骗攻击

       在局域网中有个恶意主机,不断的给局域网每个主机大量的进行发送ARP响应,覆盖主机上的ARP映射表,告诉主机自己是网关,然后给网关发送ARP响应,告诉自己是主机。

解决方法:设置防火墙,添加局域网的MAC白名单等方式。

四、MTU

1. 认识MTU

MTU:链路层限制的最大传输单元,以太网默认是1500字节。

(1)以太网帧中的数据长度规定,最小为46字节,最大为1500字节。若ARP数据包的长度不足46字节,需要在后面补填充位。

(2)最大值1500字节称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU

(3)若一个数据包从以太网路由到拨号链路上,数据包长度大于了拨号链路的MTU,则需要对数据包进行分片。

(4)不同的数据链路层标准的MTU不同。

2. MTU对IP协议的影响(了解)

由于数据链路层MTU的限制,对较大的IP数据包需要进行分包:

(1)将较大的IP包分成多个小包,并给每个小包打上标签。

(2)每个小包IP协议头的16位标识(id)都是相同的。

(3)每个小包的IP协议头的3位标志字段中,第2位置0,标识允许分片,第3位来表示结束标记(当前是最后一个小包,则置1,否则置0)。

(4)到达对端时,再将这些小包按序重组,拼接到一起后再交付给传输层。

(5)一旦这些小包中任意一个包丢失,接收端就会重组失效,但是IP层不会负责进行数据重传。

3. MTU对TCP协议的影响

回顾一下TCP协议:

(1)TCP的一个数据报不能无限大,也是受限于MTU。TCP的单个数据报的最大信息长度,称为MSS。

(2)TCP在建立连接的过程中,通信双方就会协商MSS。

(3)最理想的情况下,MSS的值正好是IP不会被分片处理的最大长度(这个长度,仍然是受限于数据链路层的MTU)。

(4)双方在发送SYN的时候会在TCP头部写入自己所能支持的MSS值。

(5)双方得知对方的MSS值后,会选择较小的值作为最终的MSS。

TCP通信时,程序员通常不用过多考虑:

       因为MSS就是根据MTU计数得到的。tcp在传输层发送数据时,就是从缓冲区中取出不大于MSS大小的数据进行封装报头,然后进行传输。(在网络层不会出现数据分片)

       MSS = MTU - 最小IP报头大小 - 最小TCP报头大小

4. MTU对UDP协议的影响

回顾一下UDP协议:

(1)一旦UDP携带的数据超过1472字节(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。

(2)这多个IP数据报一旦有任意一个丢失,都会引起接收端网络层重组失败。也就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就会大大增加。

       UDP通信时,不存在MSS协商过程,只要数据报整体大小小于64k就可以进行传输,但是在网络层会因为大于MTU而导致数据分片,分片后的数据到达对端主机后就需要进行分片重组,而一旦有一个分片有问题,整个数据报文就会被丢弃。

       所以程序员需要最好在应用层就考虑到更多的要素,如果数据过大,就要最好在应用层分包,分包大小需要考虑MTU,尽可能的减少分片可能。

相关文章
|
1天前
|
存储 监控 网络协议
【计算机网络】第三章 数据链路层(虚拟机与局域网)
【计算机网络】第三章 数据链路层(虚拟机与局域网)
|
1天前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
|
1天前
【计算机网络】第三章 数据链路层(可靠传输)
【计算机网络】第三章 数据链路层(可靠传输)
|
1天前
【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)
【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)
|
10天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
10天前
|
存储 网络协议 安全
15.网络协议-Radius协议
15.网络协议-Radius协议
|
1月前
|
网络协议 数据格式
|
2月前
|
存储 缓存 网络协议
计算机网络:思科实验【2-MAC地址、IP地址、ARP协议及总线型以太网的特性】
计算机网络:思科实验【2-MAC地址、IP地址、ARP协议及总线型以太网的特性】
|
6月前
|
域名解析 存储 移动开发
TCP socket && UDP && TCP协议 && IP协议 && 以太网等
TCP socket && UDP && TCP协议 && IP协议 && 以太网等
37 0
|
8月前
|
数据安全/隐私保护
以太网 (数据链路层协议)
以太网 (数据链路层协议)
90 0