UDP的FPGA实现(上) | 操作基础与理论分析

时间:2024-04-04 21:54:54

本系列分为上中下三层,分别是:

(上):操作基础与IP、端口、MAC初步介绍(本篇)

(中):udp,IP、MAC帧结构

(下):UDP工程分析

一、操作知识

“本地连接”只出现于Win7和XP中,在Win8和win10系统,被更名为“以太网”。(.....大声重复.....)

在比较老的教程中,程序在win7或XP的环境下运行,需要查看MAC地址,所以就需要DOS命令中查看MAC地址,通过“ipconfig -all”指令,需要本地连接下的MAC号,本人除了这一步和教程不一样之外步步相同,结果显然失败了。是因为“本地连接”只出现在win7和xp系统中,本地连接*2并不是“本地连接”,没想到在这个点上疑惑了这么久。

正确的操作步骤是在dos窗口中输入“ipconfig -all”,找到“以太网适配器 以太网”,找到其对应的物理地址,如下图所示:

UDP的FPGA实现(上) | 操作基础与理论分析

在DOS命令窗口绑定开发板的IP地址和MAC地址:

开发板的IP地址为:192.168.0.2(4字节)

开发板的MAC地址为:00-0a-35-01-fe-c0(6字节) 

在DOS命令窗口绑定开发板的IP地址和MAC地址,通过IP和MAC绑定的方式来强制将开发板的IP地址和MAC地址关联在一起,这样,当PC给192.168.0.2发送数据包的时候,目标MAC地址自动为开发板的MAC地址。

绑定方法:

1、 使用netsh i i show in命令查看本地连接(以太网连接)的idx编号。

UDP的FPGA实现(上) | 操作基础与理论分析

2、使用netsh -c “i i” add neighbors 6 “192.168.0.2” “00-0a-35-01-fe-c0”指令,将开发板的IP和MAC绑定到本地连接下:

UDP的FPGA实现(上) | 操作基础与理论分析

3、打开网络调制助手设置参数,本地的IP地址为PC的IP Address,本地端口需要跟FPGA中的程序一致,为32768(16’h8000=16’d32768),最终结果为:

UDP的FPGA实现(上) | 操作基础与理论分析

上面这些操作都是啥?????干啥用的?又是物理地址,又是IP地址,又是端口号,又是你的,又是我的的,到底要是干什么?

首先是“ipconfig -all”查看以太网下的物理地址,是一个6字节的MAC地址,该地址应用于主机的MAC帧,用于board的数据链路层通信。

IP地址用于网络层,既然是开发板与PC之间的通信,肯定是需要双方的IP地址的,所以主机的IP地址分配为192.168.0.3,board的IP地址分配为192.168.0.2,用于PC与board的网络层之间的通信。

端口号用于传输层,既然是UDP通信,用户数据包协议是无连接的,但是也要知道是给谁传的数据,所以此处使用端口号,实现PC与board的传输层之间的通信。

所以前期准备中需要两组参数,分别是:PC和board的端口号、IP地址、Mac地址,即得到以下数据:

1、PCIP地址:192.168.0.3(网络层)    MAC地址:F0-76-1C-82-4E-D8(用于数据链路层)  端口号:32768 (16’h8000)(用于传输层) 

2、板子IP地址:192.168.0.2(网络层)  MAC地址:00-0a-35-01-fe-c0(用于数据链路层) 端口号:32768 (16’h8000)(用于传输层) 

二、UDP介绍 

UDP即User Datagram Protocol,用户数据报协议,还有一个耳熟能详的叫做TCP(Transmission Control Protocol),传输控制协议, 既然是传输控制,那必然稳定性高一点。

两者区别:

1、 TCP是一种面向连接的、可靠的、基于字节流的 传输层通信协议,但是TCP的传输速度慢,效率低,确认机制、重传机制、拥塞控制等都会占用大量的时间等。

2、 UDP是一种无连接的传输层协议,提供面向实物的简单不可靠信息传送服务,传输速度快,效率高。

OSI模型:

对于UDP传输同样采用了分层接收,层与层之间相互独立,但是也有密切的关系,与TCP/IP类似:

UDP的FPGA实现(上) | 操作基础与理论分析

TCP/IP分为四层,自上而下依次为:

(4)、应用层

(3)、传输层

(2)、网络层

(1)、网络接口层。

各层介绍:

1、应用层:包含所有的高层协议,包括:文本传输协议FTP、超文本传送协议http等。

2、传输层 为通信双方的主机提供端到端的服务,传输层对信息流具有调节作用,提供可靠性传输,保证数据到达无误,包含UDP、TCP协议等。

3、网络层 进行网络互联,根据网间报文IP地址,从一个网络通过路由器传到另一网络。

4、网络接口层 负责接收IP数据报,并负责把这些数据报发送到指定网络上。TCP/IP的核心是网络层和传输层:网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。

UDP的FPGA实现(上) | 操作基础与理论分析

UDP与TCP机制类似,应用数据经过每一层处理后才能通过网络传输到目的端,每一层上使用该层的协议数据单元(PDU,Protocol Data Unit)彼此交换信息。不同层的PDU包含不同的信息,因此PDU在不同层被赋予了不同的名称:

1、传输层:上层数据在传输层添加TCP包头后得到的PDU称为Segment(数据段) 

2、网络层:数据段被传递给网络层,按网络层添加IP报头得到的PDU称为Packet(数据包) 

3、数据链路层:数据包被传输到数据链路层,封装数据链路层报头得到的PDU称为Frame(数据帧)。

4、物理层:最后,帧被转换为比特(物理层)。

如有错误,欢迎诸位后台批评指正,谢谢!

下一篇预告:《以太网帧的构成》

UDP的FPGA实现(上) | 操作基础与理论分析

                        ~~感谢阅读~~周末愉快