【计算机网络】数据链路层重点协议

简介: 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播

1. 认识以太网

以太网是一种局域网的技术规范,而不是一种具体的网络,以太网既包含了数据链路层的内容,也包含了一些物理层的内容,如:规定网络拓扑结构,访问控制方式,传输速率等

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

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

1.1 以太网帧格式

image.png


源地址和目的地址为网卡的硬件地址(MAC地址),长度为48位,网卡出场时就确定了

帧协议类型字段有三种,为IP,ARP,RARP

帧尾是CRC校验码


2. 认识MTU

MTU规定了以太网最大的传输数据长度,超过了这个长度就会分片(实际在网络层就会分片),比如网购了一个桌子,桌子整张太大了,快递就分开包装,如:桌子腿,桌子面,固定桌子的材料等,快递到货后,我们在对其进行组装成一个完整的桌子


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

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

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

不同的数据链路层标准的MTU是不同的

2.1 MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要分片


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

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

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

到达对端后,再将这些小包按顺序进行重组,拼装到一起返回给传输层

一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据

2.2 MTU对UDP协议的影响

数据包分片后,如果多个分片的数据报有任意一个丢包,整个数据报就没有用了(UDP只管发送,不管接收),接收端根据多个分片还原的时候就会重组失败,只能丢弃,这意味着,如果UDP数据报在网络层被分片,整个数据被丢弃的概率大大增加了


2.3 MTU对TCP协议的影响

TCP数据报也不能无限大,也受限于MTU,TCP单个数据报的最大长度称为MSS(双方约定最大传输端大小)

TCP建立连接的时候,通信双方会进行MSS协商,双方在发送的SYN的时候在TCP头部写入自己能支持的MSS值

双方知道对方的MSS值后,选择min(MSS,MTU)值作为最终的MSS

如果真实发送的数据超过MSS,就会分片,如果任意一个分片丢包,整个数据报就没用了,但是TCP协议有超时重传机制会重新发生,所以丢包的影响不大


3. ARP协议

ARP协议不单纯是数据链路层的协议,它是介于数据链路层和网络层之间的协议 ,ARP协议建立了主机IP地址与MAC地址的映射关系,主机和路由器中都维护了一张ARP缓存表(基于ARP协议,可以通过IP地址找到对应的MAC地址)


3.1 ARP协议的作用

发送数据到同网段主机时,目的IP和目的端口肯定都知道,但是可能不知道目的主机的MAC,这时候基于ARP缓存表通过目的主机IP找到对应目的主机MAC(找不到就喊话)

发送数据到不同网段主机时,先往网关设备发,也要基于ARP协议通过网关IP找到网关MAC

网关设备封装完数据报,根据路由功能,找到下一跳设备的IP,此时基于网关设备的ARP缓存表,通过IP找到下一跳设备得MAC

3.2 ARP协议的工作流程

image.png


源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播

目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址


相关文章
|
16天前
|
缓存 网络协议 安全
【网络攻防战】DNS协议的致命弱点:如何利用它们发动悄无声息的网络攻击?
【8月更文挑战第26天】DNS(域名系统)是互联网的关键组件,用于将域名转换为IP地址。然而,DNS协议存在安全漏洞,包括缺乏身份验证机制、缓存中毒风险及放大攻击的可能性。通过具体案例,如DNS缓存中毒和DNS放大攻击,攻击者能够误导用户访问恶意站点或对目标服务器实施DDoS攻击。为了防范这些威胁,可以采用DNSSEC实现数字签名验证、利用加密的DNS服务(如DoH或DoT)、限制DNS服务器响应以及及时更新DNS软件等措施。理解并应对DNS的安全挑战对于确保网络环境的安全至关重要。
49 2
|
8天前
|
缓存 网络协议 网络性能优化
C语言 网络编程(二)TCP 协议
TCP(传输控制协议)是一种面向连接、可靠的传输层协议,通过校验和、序列号、确认应答等机制确保数据完整性和可靠性。通信双方需先建立连接,再进行通信,采用三次握手建立连接,四次挥手断开连接。TCP支持任意字节长度的数据传输,具备超时重传、流量控制及拥塞控制机制。三次握手用于同步序列号和确认双方通信能力,四次挥手则确保双方均能完成连接关闭操作,保证数据传输的可靠性。
|
8天前
|
网络协议 视频直播 C语言
C语言 网络编程(三)UDP 协议
UDP(用户数据报协议)是一种无需建立连接的通信协议,适用于高效率的数据传输,但不保证数据的可靠性。其特点是无连接、尽力交付且面向报文,具备较高的实时性。UDP广泛应用于视频会议、实时多媒体通信、直播及DNS查询等场景,并被许多即时通讯软件和服务(如MSN/QQ/Skype、流媒体、VoIP等)采用进行实时数据传输。UDP报文由首部和数据部分组成,首部包含源端口、目的端口、长度和校验和字段。相比TCP,UDP具有更高的传输效率和更低的资源消耗。
|
11天前
|
监控 安全 网络安全
深入理解SNMP:网络管理的关键协议
【8月更文挑战第31天】
37 1
|
5天前
|
网络协议
网络协议概览:HTTP、UDP、TCP与IP
理解这些基本的网络协议对于任何网络专业人员都是至关重要的,它们不仅是网络通信的基础,也是构建更复杂网络服务和应用的基石。网络技术的不断发展可能会带来新的协议和标准,但这些基本协议的核心概念和原理将继续是理解和创新网络技术的关键。
14 0
|
11天前
|
存储 运维 监控
|
11天前
|
消息中间件 Kafka Java
Spring 框架与 Kafka 联姻,竟引发软件世界的革命风暴!事件驱动架构震撼登场!
【8月更文挑战第31天】《Spring 框架与 Kafka 集成:实现事件驱动架构》介绍如何利用 Spring 框架的强大功能与 Kafka 分布式流平台结合,构建灵活且可扩展的事件驱动系统。通过添加 Spring Kafka 依赖并配置 Kafka 连接信息,可以轻松实现消息的生产和消费。文中详细展示了如何设置 `KafkaTemplate`、`ProducerFactory` 和 `ConsumerFactory`,并通过示例代码说明了生产者发送消息及消费者接收消息的具体实现。这一组合为构建高效可靠的分布式应用程序提供了有力支持。
38 0
|
18天前
|
网络协议
|
18天前
|
安全 5G 数据安全/隐私保护
|
18天前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)