️ 通信协议——以太网通信协议

目录

一、OSI 七层模型

二、TCP/IP 协议簇

三、以太网介绍

以太网帧格式

以太网帧间隙

四、物理层介绍

RJ45 接口说明

PYH 芯片接口介绍

通信接口:RGMII 接口

配置接口:MDIO接口

五、网络层协议介绍

IP 协议

IP 数据报格式

IP 数据报头部内容

IP 首部校验和计算方法

IP 数据报数据部分内容

ARP 协议

ARP 数据格式

ARP 协议工作过程

ARP 请求数据包内容

ARP 应答数据包内容

ARP 数据在以太网中传输格式

ICMP 协议

ICMP 数据格式

ICMP 数据格式

ICMP 报文类型

ICMP 数据在以太网中传输格式

六、传输层协议介绍

UDP 协议

TCP 与 UDP 的区别

UDP 数据格式

UDP 数据在以太网中传输格式


一、OSI 七层模型

OSI(Open System Interconnection)七层模型是一个网络通信协议的标准化框架,它将计算机网络通信划分为七个层次,每一层负责不同的功能,从物理连接到应用程序的处理。这种模型有助于不同系统间的通信,更好地理解和管理网络通信的过程。对于FPGA数据传输来说,主要关注传输层、网络层、数据链路层、物理层,这四个层,所以本文会着重介绍这四个层的通信。

OSI七层模型的功能

  • 物理层:负责在物理媒介上传输原始比特流,定义了连接主机的硬件设备和传输媒介的规范。
  • 数据链路层:提供点对点的数据传输服务,负责将原始比特流转换为数据帧,并检测和纠正传输中出现的错误。
  • 网络层:负责数据包的路由和转发,以及网络中的寻址和拥塞控制。
  • 传输层:为应用程序提供端到端的数据传输服务,负责数据的分段、传输控制、错误恢复和流量控制。
  • 会话层:管理应用程序之间的通信会话,负责建立、维护和终止会话。
  • 表示层:负责数据的格式化、加密和压缩,以确保数据在不同系统之间的交换是有效的和安全的。
  • 应用层:提供用户接口和应用程序之间的通信服务,用户可以访问各种网络应用程序。

二、TCP/IP 协议簇

TCP/IP 协议簇(Transmission Control Protocol / Internet Protocol suite)是一组用于计算机网络通信的协议。它是现代互联网和局域网中广泛使用的基础协议簇,提供了从应用层到物理层的网络通信功能。TCP/IP 协议族包括了很多协议,每个协议负责网络通信的不同方面,下面是主要的协议及其作用,本文重点介绍IP、ARP、UDP、ICMP 通信协议。

  • 应用层:HTTP、FTP、SMTP、DNS 等。
  • 传输层:TCP、UDP。
  • 网络层:IP、ICMP、ARP。
  • 数据链路层:Ethernet、Wi-Fi、PPP。
  • 物理层:Ethernet(物理媒体)、Wi-Fi(无线传输)等。

三、以太网介绍

以太网是指实现将几个电脑连接进行通信,他不是指一种网络,而是一个技术规范。其主要特点为低成本、通信速率高、抗干扰强,以太网按照不同传输速率分类如下:

  • 标准以太网:10Mbit/s
  • 快速以太网:100Mbit/s
  • 千兆以太网:1000Mbit/s
  • 万兆以太网:10Gbit/s

以太网帧格式

以太网链路上的数据包称作以太帧,常见的以太网帧格式有Ethernet Ⅱ、Ethernet802.3等,本文主要介绍Ethernet Ⅱ。以太网帧格式如下图所示:其中,以太网数据段包含其他层的通信协议,即对用户数据进行逐层封装

字段名称

字段长度

说明

前导码

7 Byte

0x55555555555555:固定值 7 个 0x55

界定符

1 Byte

0x05

目的 MAC 地址

6 Byte

接收端物理地址

源 MAC 地址

6 Byte

发送端物理地址

长度/类型

2 Byte

当数值大于 16'h0600 的时候,表示以太网的类型,反之表示以太网的长度

类型举例:

0x0800:网际协议(IP)

0x0806:地址解析协议(ARP)

数据

46~1500 Byte

对用户数据逐层封装之后的数据,不满 46 Byte 剩余部分填充 0

CRC-32 校验

4 Byte

CRC-32 校验

以太网帧间隙

帧间隙(lFG, Interpacket Gap)的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,通信速率越高,帧间隔的时间越短,IFG的最小值是 96 bit time。

  • 10Mbit/最小时间为:96 * 100ns = 9600ns
  • 100Mbit/最小时间为:96 * 1ns = 960ns
  • 1000Mbit/最小时间为:96 * 1ns = 96ns

四、物理层介绍

RJ45 接口说明

十兆网和百兆网引脚说明: 在十兆网和百兆网的 RJ45 只用到了 Pin 1、Pin 2、Pin 3、Pin 6 的引脚,通过差分信号的方式进行传输通信。

引脚编号

引脚名称

功能说明

线序颜色

Pin 1

TX+

发送数据+

橙白

Pin 2

TX-

发送数据-

Pin 3

RX+

接收数据+

绿白

Pin 4

NC

未使用

Pin 5

NC

未使用

蓝白

Pin 6

RX-

发送数据-

绿

Pin 7

NC

未使用

棕白

Pin 8

NC

未使用

千兆网引脚说明: 在千兆网的 RJ45 只用到了所有的引脚,通过差分信号的方式进行传输通信。

引脚编号

引脚名称

功能说明

线序颜色

Pin 1

MDI0+

双向数据Data0+

橙白

Pin 2

MDI0-

双向数据Data0-

Pin 3

MDI1+

双向数据Data1+

绿白

Pin 4

MDI2+

双向数据Data2+

Pin 5

MDI2-

双向数据Data2-

蓝白

Pin 6

MDI1-

双向数据Data1-

绿

Pin 7

MDI3+

双向数据Data3+

棕白

Pin 8

MDI3-

双向数据Data3-

PYH 芯片接口介绍

PYH 芯片与我们设备进行连接,包括两种接口,一个是通信接口, RGMII 接口,主要 W 用来传输以太网数据帧,另一个是配置接口, MDIO 接口,用于配置 PYH 芯片的功能, 以太网PHY芯片是物理层芯片用于信号转换(类似CAN、RS485芯片),连接示意图如下。

通信接口:RGMII 接口

RGMII(Reduced Gigabit Media Independent Interface)接口负责通信设备与 PHY 芯片之间的连接,时常用的千兆网通信接口,采用 4 个数据线进行通信,工作时钟为 125MHz,在上升沿和下降沿都可以进行数据传输,因此,传输速率可达 1000Mbps。常用的接口还有百兆网 MII、RMII,千兆网 GMII 等,本文主要介绍 RGMII,RGMII 接口连接示意图如下。

引脚名称

功能说明

RXC

接收时钟线

  • 125MHz:千兆网通信双边沿采样,采样频率 250MHz
  • 25MHz:百兆网通信
  • 2.5MHz:十兆网通信

RXCTL

控制接收有效

RXD[3:0]

接收数据线

TXC

发送时钟线

  • 125MHz:千兆网通信双边沿采样,采样频率 250MHz
  • 25MHz:百兆网通信
  • 2.5MHz:十兆网通信

TXCTL

控制发送有效

RXD[3:0]

发送数据线

RST_N

复位

RGMII 接口时序

接收数据时序图如下图所示,RX_CLK 为 125MHz 时钟,双边沿采样,在时钟的上升沿采集 RXD 的低 4 位,时钟的下降沿采集 RXD 的高 4 位,这样一个时钟周期可以采集 8 位数据,RX_CTRL 表示接收有效信号与接收错误信号的异或值,在正常传输中,RX_CTRL 一直为高电平

发送数据时序如下图所示,原理与接收数据时序相同

配置接口:MDIO接口

PYH 芯片有一个配置接口,即 MDIO(Management Data Input/Output) 接口,用于以置 PHY 芯片的工作模式以及获取 PHY 芯片的若干状态信息,例如配置通信速率等,MDIO 接口连接示意图如下。

引脚名称

功能说明

MDC

管理数据时钟

MDIO

管理数据

MDIO接口时序

MDIO 接口的读写时序如下图所示,用该接口配置PHY芯片工作模式以及获PHY芯片的若干信息(类似IIC配置)

MDIO 接口传输数据格式

字段名称

字段长度

说明

前导码

32 Bit

32'hFFFFFFFF

帧开始

2 Bit

2'b01

操作码

2 Bit

2'b10:读 PHY 芯片

2'b01:写 PHY 芯片

PHY地址

3 Bit

可以最多支持8个 PHY 地址

寄存器地址

5 Bit

最多有 32 个寄存器地址来配置PHY芯片

TA

2 Bit

2'bz0: 读取 PHY 芯片,最后一位会被 PHY 芯片拉低,相当于应答信号,用于避免读传输的时候发生冲突,留出时间间隔,给MDIO切换数据传输方向,之后读取数据,Z是高阻态。

2'b10:写 PHY 芯片

数据

16 Bit

读写数据

IDLE(1bit)

1 Bit

空闲状态下会被PHY芯片拉为高电平

五、网络层协议介绍

IP 协议

IP(Internet Protocol),即 网际协议,是计算机网络中一种负责数据包传输和寻址的核心协议。它是 TCP/IP 协议簇 中的一个关键协议,主要用于数据在网络中从源设备到目的设备的路由与传输。IP 协议规定了数据传输时基本单元和格式,在网络层工作。

IP 数据报格式

IP 数据报头部内容

字段名称

字段长度

说明

版本

4 Bit

  • 4'b0100(4'd4):IPv4
  • 4'b0110(4'd6):IPv6

首部长度

4 Bit

单位:4 Byte

4'd0101(4'd5):无可选字段,首部长度共 20 Byte

服务类型

8 Bit

一般为 8'd0

总长度

16 Bit

单位:Byte

表示 IP 首部和数据部分总共有多少字节(实际传输基本 1000 Byte 左右)

标识符

16 Bit

用于标识数据包,每发送一次数据包,数值会加一

  • 16'd1:第一次发送
  • 16'd2:第二次发送
  • 16'd3:第三次发送

标志

3 Bit

对数据包进行分片,例如需要传输 10000 Byte 的数据,受到以太网帧格式的限制最大只能传输 1500 Byte 的数据,那么就要对传输的数据进行分片, Bit2:保留位,固定值 0;Bit1:0 表示需要分片,1 表示不需要分片;Bit0:只有在分片的情况下才有含义,0 表示当前数据是最后一个分片,1 表示当前数据不是最后一个分片

  • 3'b000:未分片,单独传输
  • 3'b001:已分片,后续还有更多分片
  • 3'b010:禁止分片,单个数据包传输
  • 3'b011:无意义,通常这种情况不会发生

片偏移

13 Bit

分片的时候才有意义,表示当前的数据包在整个数据包的哪个位置,方便后续解析的时候进行拼接

生存时间

8 Bit

一般是 8'd64 或者 8'd128,防止数据包被无休止的转发,数据包每次经过路由器生存时间就会减一,在路由器中转发的次数等于生存时间的时候,路由器就会丢掉当前的数据包

协议

8 Bit

数据部分中的协议类型,下面列举部分协议对应的编号

  • 8'd00:无,保留
  • 8'd01:ICMP 协议
  • 8'd04:无,未分配
  • 8'd06:TCP 协议
  • 8'd17:UDP 传输

头部校验和

16 Bit

对首部数据进行校验

源IP地址

32 Bit

发送端 IP 地址,例如:0xC0A8017B(192.168.1.123)

目的IP地址

32 Bit

接收端 IP 地址,例如:0xC0A80166(192.168.1.102)

可选字段

32 Bit

可以有可以没有

IP 首部校验和计算方法

  1. 将 16 位检验和字段置为0,然后将IP首部按照 16 位分成多个单元
  2. 对各个单元采用加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位)
  3. 此时仍然可能出现进位的情况,将得到的和再次分成高 16 位和低 16 位进行累加
  4. 最后将得到的和的反码填入校验和字段。

举例如下:

  1. 0x4500 + 0x0032 + 0x0000 + 0x4000 + 0x4011 + 0x0000(计算时校验和置 0)+ 0xc0a8 + 0x017b + 0xc0a8 + 0x0166 = 0x24974
  2. 0x0002 + 0x4974 = 0x4976(低 16 位再与高 16 位的数字相加,也就是低 16 位加上进位)
  3. 0x0000 + 0x4976 = 0x4976(上一步没有进位,所以加上 0x0000)
  4. checkSum = ~0x4976 = 0xb689(按位取反)

IP 数据报数据部分内容

IP 数据报在以太网中传输格式如下图所示。其中, IP 数据包数据部分内容,取决于头部数据中的协议编号,如果是 8'd17 表示数据部分的内容是 UDP 协议的格式,其他TCP、ICMP等协议同理,在 UDP、ICMP 协议的章节会具体介绍 IP 数据报数据部分的内容。

ARP 协议

ARP (Address Resolution Protocol),即 地址解析协议,根据对端设备的IP地址来获取对端设备的MAC地址(物理地址)。

ARP 数据格式

ARP 协议进行请求/应答传输的数据一共有 28 字节,具体数据格式如下:

ARP 协议工作过程

  • 设备 A 创建 ARP 请求,并广播到网络上。
  • 网络中的所有设备都收到该请求,但只有 设备 B 发现自己的 IP 地址与请求中的目标 IP 地址匹配。
  • 设备 B 通过 ARP 响应告诉 设备 A,其 MAC 地址。

ARP 请求数据包内容

假设设备 A 的 MAC 地址00:11:22:33:44:55,设备 A 的 IP 地址192.168.1.1,而 B 的 MAC 地址77:88:99:aa:bb:cc设备 B 的 IP 地址192.168.1.2(设备 A 想通过 ARP 获取设备 B 的 MAC 地址)

字段名称

字段长度

说明

硬件类型

2 Byte

0x0001:Ethernet

协议类型

2 Byte

0x0800:上层协议为 IP 协议

MAC 地址长度

1 Byte

单位 :1 Byte

0x6:MAC 地址长度

IP 地址长度

1 Byte

单位 :1 Byte

0x4:IP 地址长度

操作类型

2 Byte

0x0001:ARP 请求(请求数据包使用)

0x0002:ARP 应答

源 MAC 地址

6 Byte

发送端 MAC 地址

例如:0x778899AABBCC(77:88:99:aa:bb:cc)

源 IP 地址

4 Byte

发送端 IP 地址,例如:0xC0A80101(192.168.1.1)

目的 MAC 地址

6 Byte

接收端 MAC 地址,ARP 请求时为全 0

目的 IP 地址

4 Byte

接收端 IP 地址,例如:0xC0A80102(192.168.1.2)

ARP 应答数据包内容

字段名称

字段长度

说明

硬件类型

2 Byte

0x0001:Ethernet

协议类型

2 Byte

0x0800:上层协议为 IP 协议

MAC 地址长度

1 Byte

单位:1 Byte

0x6:MAC 地址长度

IP 地址长度

1 Byte

单位 :1 Byte

0x4:IP 地址长度

操作类型

2 Byte

0x0001:ARP 请求

0x0002:ARP 应答(应答数据包使用)

源 MAC 地址

6 Byte

发送端 MAC 地址

例如:0x001122334455(00:11:22:33:44:55)

源 IP 地址

4 Byte

发送端 IP 地址,例如:0xC0A80102(192.168.1.2)

目的 MAC 地址

6 Byte

接收端 MAC 地址

例如:0x778899AABBCC(77:88:99:aa:bb:cc)

目的 IP 地址

4 Byte

接收端 IP 地址,例如:0xC0A80101(192.168.1.1)

ARP 数据在以太网中传输格式

ICMP 协议

ICMP (Internet Control Message Protocol),即 互联网控制消息协议,是网络层协议的一部分,主要用于在 IP 网络中传递诊断和控制信息。它不是用于传输应用层数据的协议,而是为主机、路由器等网络设备提供反馈机制,用于报告错误、网络状况等信息,例如 windows 系统下的 ping 命令就是用的 ICMP 协议。

ICMP 数据格式

ICMP 的报文分为查询类报文和差错诊断类报文。查询类报文,通常由请求报文和应答报文组成,用于设备间的信息交互和查询,Windows 下 ping 命令用到的就是查询类报文;差错诊断类报文,用于报告网络错误或异常的报文类型。这些报文帮助设备了解网络通信中可能存在的问题,并提供相应的诊断信息。

ICMP 数据格式

字段名称

字段长度

说明

类型

8 Bit

区分查询报文和差错报文

代码

8 Bit

在报文类型上进一步细分

校验和

16 Bit

与 IP 协议校验和方法相同

标识符

16 Bit

表示进程

序列号

16 Bit

类似身份,每次主机发送一个报文,序列号就会加一

数据部分

18-1472 Byte

发送数据

ICMP 报文类型

类型

代码

解释

种类

0

0

回显应答(ping 应答)

查询报文

8

0

回显请求(ping 请求)

差错报文

3

1

主机不可达

差错报文

3

3

端口不可达

差错报文

5

0

对网络重定向

查询报文

11

0

传输期间生存时间为 0

差错报文

ICMP 数据在以太网中传输格式

ICMP 数据包直接封装在 IP 数据包中,没有使用传输层协议(如 TCP 或 UDP)。其基本结构由 IP 首部ICMP 消息 组成。

六、传输层协议介绍

UDP 协议

UDP(User Datagram Protocol),即用户数据报协议,属于传输层协议,是一种在计算机网络中用于数据传输的协议,用户数据协议,无完整机制确保另一端收到数据(类似串口),是一种无连接(数据包无序),不可靠(无握手、无应答)的通信协议,具有传输效率高,占用资源小的优点。

TCP 与 UDP 的区别

TCP

UDP

面向连接

面向非连接

传输可靠

传输不可靠

传输效率低

传输效率高

占用资源多

占用资源少

浏览器、 QQ 文件传输

QQ 语音、QQ 视频

UDP 数据格式

字段名称

字段长度

说明

源端口号

2 Byte

发送端端口号

目的端口号

2 Byte

接收端端口号

UDP长度

2 Byte

单位:Byte,表示数据段长度

UDP校验和

2 Byte

同IP校验和方法一样,一般情况可以不进行校验数值为0x0000,只保证IP校验即可

数据部分

18-1472 Byte

用户需要传输的数据

UDP 数据在以太网中传输格式

以太帧传输 UDP 数据,其中,以太网数据端包含其他层的通信协议,即对用户数据进行逐层封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值