cen's blog cen's blog
首页
  • 编程文章

    • markdown使用
  • 学习笔记

    • C++学习
    • C++数据结构
    • MySQL
    • Linux
    • 网络编程
算法
  • Git
  • ProtoBuf
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

cen

十年饮冰,难凉热血
首页
  • 编程文章

    • markdown使用
  • 学习笔记

    • C++学习
    • C++数据结构
    • MySQL
    • Linux
    • 网络编程
算法
  • Git
  • ProtoBuf
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • 网络基础
  • 套接字和UDP
  • 套接字和TCP
  • 网络协议
  • HTTP协议
  • UDP协议
  • TCP协议
  • IP协议
  • 数据链路层
    • MAC 帧格式
    • 载荷分离和交付上层
    • 局域网发送原理
    • MUT
    • ARP 协议
      • 格式
      • 工作流程
  • DNS、ICMP、NAT
  • 网络
cen
2025-09-18
目录

数据链路层

网络层 IP 提供的是跨网络发送数据的能力,传输层 TCP 是为数据发送提供可靠性保证的,而链路层解决的则是两台相连主机之间的通信问题。

# MAC 帧格式

  • 源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址,全球具有唯一性),长度是 48 位(6 个字节),一般用 16 进制数字加上冒号的形式来表示,例如:08:00:27:03:fb:19
  • 帧协议类型字段有三种值,分别对应 IP 协议、ARP 协议和 RARP 协议。
  • 帧末尾是 CRC 校验码。

# 载荷分离和交付上层

  • 载荷分离:因为是定长的,直接提取帧头和帧尾后,剩下的就是有效载荷了
  • 交付上层:根据帧头的类型字段,将有效载荷交付给对应的上层协议

# 局域网发送原理

在局域网中,任意时刻只能有一个主机发消息,否则的话,数据会发生碰撞,称为无效数据。一个局域网本质就是一个碰撞域,“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
每一个正在发送数据的主机,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
数据链路层中的交换机可以识别局部性的碰撞,对碰撞数据不做发送,用来划分碰撞域。

# MUT

MTU 相当于发快递时对包裹尺寸的限制.。这个限制是不同的数据链路对应的物理层, 产生的限制。以太网帧中的数据长度规定最小 46 字节,最大 1500 字节。由于数据链路层 MTU 的限制, 对于较大的 IP 数据包网络层要进行分包和组装。

# ARP 协议

在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址。数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃,因此在通讯前必须获得目的主机的硬件地址。
ARP 协议工作在数据链路层,A 建立主机 IP 地址 和 MAC 地址 的映射关系。

# 格式

  • 目的 MAC 地址初始并不知道,初值为全 F
  • 硬件类型指链路层网络类型,1 为以太网;
  • 协议类型指要转换的地址类型,0x0800 为 IP 地址;
  • 硬件地址长度对于以太网地址为 6 字节;
  • 协议地址长度对于和 IP 地址为 4 字节;
  • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答

# 工作流程

IP1 主机获取 IP3 主机的 MAC 地址:

上次更新: 2025/11/11, 22:03:54
IP协议
DNS、ICMP、NAT

← IP协议 DNS、ICMP、NAT→

最近更新
01
动态规划
11-08
02
ProtoBuf
09-28
03
Git
09-28
更多文章>
Theme by Vdoing | Copyright © 2024-2025 京ICP备2020044002号-3 京公网安备11010502056119号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式