数据链路层

功能:相邻节点之间无差错的传输数据帧。

封装成帧,透明传输,差错检测。

复制代码
1. 数据链路层已经拿到了网络层的数据(<MTU)。
2. 经过网络层的路由选择之后也知道该去往那个相邻的节点。
如果清楚相邻节点的MAC地址就通过以太网协议转发,如果不清楚相邻节点的MAC地址,就通过ARP协议获取MAC地址,然后再通过以太网转发。

以太网协议

协议格式

目的地址:相邻设备的MAC

源地址:自己设备的MAC

类型:记录上层的协议类型

数据:(IP协议头+传输层报头+应用层数据)<= MTU.

ARP协议

ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网

络层之间的协议;ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;

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

因此在通讯前必须获得目的主机的硬件地址;
协议格式

以太网目的地址:请求方发FF:FF:FF:FF:FF:FF表示广播地址

以太网源地址:发送ARP请求的MAC地址

帧类型:表示后面的数据类型,ARP请求和ARP应答此字段为:0x0806

硬件类型:链路层的网络类型

协议类型:要转换的地址类型,IPv4地址进行映射,此值为0x0800

硬件地址长度:MAC长度6

协议地址长度:IP地址长度4

op: 1 ARP请求;2 ARP应答;3 RARP请求;4 RARP应答。

ARP 缓存表

  1. 每台机器都有一个arp缓存表,记录着相邻设备的IP和MAC地址的对应关系,
  2. 老化时间为20min,20min后更新。

工作方式

复制代码
1. 先检查自己的ARP缓存表,如果有目的主机的表项,则直接对IP数据包进行封装成帧,并转发.
2. 如果在自己主机的ARP表中找不到对应的IP,就发一个ARP请求报文,然后以广播发方式发送,此ARP请求报文中的目的MAC地址为全0,当子网中有可以匹配的IP主机时,就给发送方回复一个应用ARP报文,并带上自己的MAC地址。
3. 请求方收到目的MAC后将数据封装成帧后利用以太网协议发送。
相关推荐
Java后端的Ai之路21 小时前
【AutoDL算力平台】-MobaXterm 连接 AutoDL 并上传文件资源(图文 + 实操)
服务器·网络·mobaxterm·autodl算力平台
阿巴~阿巴~21 小时前
NAT技术:互联网连接的隐形桥梁
服务器·网络·网络协议·架构·智能路由器·nat·正反向代理
DevOps-IT1 天前
HTTP状态码(常见 HTTP Status Code 查询)
运维·服务器·网络·网络协议·http
普马萨特1 天前
移动网络信号指标与单位整理(2G/3G/4G/5G Android vs IoT)
android·网络·物联网
阿巴~阿巴~1 天前
打通局域网“最后一公里”:ARP协议原理、流程与安全解析
服务器·网络·网络协议·tcp/ip·tcp·ipv4·arp
阿巴~阿巴~1 天前
从不可靠到100%可靠:TCP与网络设计的工程智慧全景解析
运维·服务器·网络·网络协议·tcp/ip·智能路由器
持续升级打怪中1 天前
WebSocket:从“写信”到“打电话”的实时通信革命
网络·websocket·网络协议
learning-striving1 天前
eNSP中OSPF协议多区域的配置实验
网络·智能路由器·ensp·通信
三两肉1 天前
深入理解 HTTPS RSA 握手:从原理到流程的完整解析
网络协议·http·https·rsa·tls四次握手
食咗未1 天前
Linux iptables工具的使用
linux·运维·服务器·驱动开发·网络协议·信息与通信