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缓存表,之后再向目的主机发送数据。

相关推荐
M78佐菲4 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
Brilliantwxx4 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
不怕犯错,就怕不做4 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
weixin_416667965 小时前
【无标题】
运维·服务器·网络
予昊6 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
一池秋_6 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
惜离殇6 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
上海云盾-小余8 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
戴西软件8 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
芯盾时代8 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全