Linux数据链路层

1.以太网帧格式

以太网帧包含:6字节的目的地址、6字节的源地址、2字节类型、46~1500字节的数据、4字节的CRC校验码。其中2字节的类型是为了标识数据的类型的,一般分三类:IP数据报(0800)、ARP请求/应答(0806)、RARP请求/应答(8035)。如下图。

2.MAC地址

MAC地址用来识别数据链路层中相连的节点,长度为48位,6字节。一般采用16进制数字加冒号的形式来标识,MAC地址在网卡出厂的时候就已经确定了不能修改。MAC地址和IP地址的区别是,在数据传输时每一跳MAC地址都会改变,但是IP地址不会改变。

3.MTU

MTU就是对数据包大小的限制,这个限制是不同数据链路层对应的物理层产生的限制。因此IP数据包太大就需要进行分包。

4.ARP数据报格式

ARP数据报格式包含:2字节硬件类型、2字节协议类型、1字节硬件地址长度、1字节协议地址长度、2字节操作码(op)、6字节发送端以太网地址、4字节发送端IP地址、6字节目的以太网地址、4字节目的IP地址。

整个ARP数据报封装在以太网帧的数据字段中,前面加上以太网帧头(6字节目的MAC、6字节源MAC、2字节类型0x0806)。

硬件类型指链路层网络类型,1为以太网。协议类型指要转换的地址类型,0x0800为IP地址。操作码为1表示ARP请求,为2表示ARP应答。硬件地址长度为6(以太网地址长度),协议地址长度为4(IP地址长度)。

4.1ARP的具体过程

在一个局域网内通信需要知道目的主机的MAC地址,但在网络通信时通过路由表只能查到下一跳主机的IP地址。那么如何得知对方的MAC地址并进行通信呢?

主机启动或网络配置变更后,ARP缓存为空,不一定知道局域网内其他主机的MAC地址。此时可以通过广播ARP请求报文来获取目的主机的MAC地址。

发送方广播发送ARP请求,局域网内的所有 主机都能收到该报文。每台主机分析报文中的目的IP地址:如果与本机IP匹配,则向发送方单播返回ARP应答报文(因为ARP请求报文中已包含发送方的MAC地址);如果不匹配,则直接丢弃报文。

发送方收到ARP应答后,将目的主机的IP地址与MAC地址的映射关系存入ARP缓存表,之后再向目的主机发送数据。

相关推荐
XIAOHEZIcode16 小时前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫18 小时前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
AlfredZhao3 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐4 天前
Linux内存扩容指南
linux
zylyehuo4 天前
Linux 彻底且安全地删除文件
linux
用户805533698035 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297915 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者6 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo7 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10158 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux