0.0 OSI模型的简单理解

OSI(Open System Interconnect),即开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互联的七层框架(物理层数据链路层、网络层、传输层、会话层、表示层和应用层),即OSI开放系统互连参考模型。

这里根据笔者的理解以及相关资料的查询,觉得这个OSI通信与笔者所学专业有很大的差距,因此这里不详细展开,只是最一些简单的总结,帮助下面的理解以及作为知识的积淀。上图为通信原理课程中老师的PPT图片,所学的通信原理属于物理层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3.HTML.等。
表达层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。例如图片的格式可以是PNG,BMP等
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。类似于断点续传
FPGA所关注的是一下四层。
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。
一下两层都是有IEEE802.3指定的标准
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Medium access control,MAC)子层。
物理层(Physical Layer)在局部局域网上传送数据帧(data frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。就是RJ45以及PHY芯片都是属于物理层。
通俗的理解就是不断在原始数据中加入一些提前约定好的数据作为标志信息,从而为数据的传输提供便利。如下图


这篇文章特别好,帮助理解:如何生动形象、切中要点地讲解 OSI 七层模型和两主机传输过程?

0.1 基础知识之以太网简介

以太网(Ethernet)不同于互联网,是当今现有局域网采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。以太网凭借其成本低、通信速率高、抗干扰性强等优点被广泛应用在网络远程监控、交换机、工业自动化等对通信速率要求较高的场合。
电气与电子工程师协会(IEEE)所采纳一些外企巨鳄的基带局域网规范作为802.3的标准(这大概就是行业规则的制定)。以太网分为标准以太网(10Mbit/s),快速以太网(100Mbit/s)以及千兆以太网(1000Mbit/s),甚至出现了万兆以太网(10Gbit/s,需要修改IEEE802.3协议与MAC规范)!!
以太网通信离不开连接端口的支持,网络数据连接的端口就是以太网接口。以太网接口类型有RJ45接口,RJ11接口(电话线接口),SC光纤接口等。其中RJ45接口是我们现在最常见的网络设备接口。就是我们俗称的水晶头。

1 内部原理及构成

PHY(fai–读四声)芯片

这里主要使用的就是PHY芯片,他的作用就是将网口与数据与FPGA数据进行互联。这里可以理解其就是FPGA将数据传输给PHY芯片,然后PHY芯片在将数据传输到网口进行传输,然后另外一侧通过网口,PHY芯片,还原数据到相应的MAC层。

这里就是设计时序了。基本就很容易,是FPGA很擅长的事情!!!
Realtek RTL8201CP是一个快速以太网物理层收发器,它为MAC层提供了可选择的MII(媒体独立接口)或SNI(串行网络接口)接口,实现了全部的10/100M以太网物理层功能。SNI接口仅支持10Mbps的通信速率,而MII最大支持100Mbps的通信速率,所以本次收发实验采用的是MII接口。RTL8201CP芯片的参数可以通过MDC/MDIO接口来配置,因为其默认的参数就可以实现MII接口的自适应10M/100M收发数据,因此可不必对芯片做配置。
具体的时序设计以及代码的书写将在下问展开

2 以太网通信协议


各个字符都有特定的作用,就是传输的数据具体是什么。
前导码(Preamble):为了实现底层数据的正确阐述,物理层使用7个字节同步码(0和1交替(55-55-55-55-55-55-55))实现数据的同步。
帧起始界定符(SFD,Start Frame Delimiter):使用1个字节的SFD(固定值为0xd5)来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头。
目的MAC地址:即接收端物理MAC地址,占用6个字节。MAC地址从应用上可分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有48bit全为1,即FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。
源MAC地址:即发送端物理MAC地址,占用6个字节。
长度/类型:上图中的长度/类型具有两个意义,当这两个字节的值小于1536(十六进制为
0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则表示该以太网
中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。
数据:以太网中的数据段长度最小46个字节,最大1500个字节。最大值1500称为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络I/O控制器缓存区资源以及网络最大的承载能力等因素,因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置,通常以太网的有效数据字段小于1500个字节。
在这里还有一个要注意的地方就是以太网相邻两帧之间的时间间隔,即帧间隙(IFG,
Interpacket Gap)。帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,IFG的最小值是96 bit time,即在媒介中发送96位原始数据所需要的时间,在不同媒介中IFG的最小值是不一样的。不管10M/100M/1000M的以太网,两帧之间最少要有96bit time,IFG的最少间隔时间计算方法如下:

后需要补充!!!

(三.0)通过FPGA实现以太网通信原理及理解相关推荐

  1. Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)

    文章目录 1. 以太网(基于碰撞区与碰撞检测的局域网通信标准) 2. 以太网的帧格式(MAC帧) MAC地址,IP地址的区分 MTU MTU对IP协议的影响 MTU对TCP/UDP协议的影响 3.AR ...

  2. 以太网通信(1)UDP —— 数据发送

    目录 一.以太网通信简介 1.OSI七层模型 2.以太网数据包解析 3.IP首部校验和计算与检验 二.以太网通信实例 1.整体实验框图 2.发送部分时序图 3.实验代码及仿真结果 总结 一.以太网通信 ...

  3. 2psk系统的仿真课程设计matlab,通信原理课程设计-基于MATLAB-Simulink的2PSK仿真

    <通信原理课程设计-基于MATLAB-Simulink的2PSK仿真>由会员分享,可在线阅读,更多相关<通信原理课程设计-基于MATLAB-Simulink的2PSK仿真(17页珍藏 ...

  4. 查看PLC IP 端口_详解S7-1500的以太网通信数据类型:TCON_IP_v4

    西门子S7系列PLC的开放式以太网通信过程包括如下几个步骤:建立连接(Establish connection).发送/接收数据(Send/receive data).断开连接(Disconnect) ...

  5. 基于Xilinx artix 7的FPGA高级应用(二):千兆以太网通信(原理篇)

    本项目是基于Xilinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 FPGA高级应用 ...

  6. HIDL示例-C++服务创建Client验证-Android10.0 HwBinder通信原理(三)

    摘要:本节主要来讲解Android10.0 Native层的HIDL服务创建和Native层的Client验证 阅读本文大约需要花费18分钟. 文章首发微信公众号:IngresGe 专注于Androi ...

  7. Android10.0 Binder通信原理(三)-ServiceManager篇

    摘要:本节主要来讲解Android10.0 Binder中守护进程ServiceManager是如何启动.注册.获取服务 阅读本文大约需要花费35分钟. 文章首发微信公众号:IngresGe 专注于A ...

  8. 图解通信原理与案例分析-8:以太网通信案例及其物理层工作原理深入剖析--物理层编码

    前言: 以太网是一种计算机局域网通信技术,主要由介质访问层(MAC L2) 协议.物理层(PHY L1)协议.电子信号连接组成. MAC层主要有交换芯片实现,物理层由PHY芯片实现,电信号连接主要定义 ...

  9. HwBinder原理总结-Android10.0 HwBinder通信原理(十一)

    摘要:本节主要来进行Android10.0 HwBinder的原理总结 阅读本文大约需要花费14分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设 ...

最新文章

  1. Linux磁盘分区管理(转载)
  2. java pdf添加图片_java实现在pdf模板的指定位置插入图片
  3. 单片机 实现计算机键盘录制,用单片机实现PC键盘输入.doc
  4. python sns绘制回归线_【干货!】用Python演绎5种常见可视化视图
  5. 微信小程序开发学习笔记008--微信小程序项目02
  6. python基础系列教程——Python3.x标准模块库目录
  7. 杭电 -- 2000
  8. PS批量导出ios、android图标
  9. 【Unity3D插件】Dialogue System for Unity插件分享《对话系统插件》
  10. 人体运动生物力学之人体步态分析
  11. wincc远程服务器配置,如何配置WINCC作为OPC服务器?
  12. OSPF多区域中必须有area0。非area0区域要与area0相连才能实现传播域间路由信息
  13. 粘性布局 以及粘性布局失效问题
  14. hdu 5234 Happy birthday 背包 dp
  15. 制作一个浪漫温馨的生日礼物送她~html+css+javascript蓝色梦幻海洋3D相册(含音乐)
  16. 【Vue 组件化开发 三】父组件给子组件传递数据、组件通信(父传子、子传父)、父访问子(children、ref)、动态组件(is、component)
  17. PN532半加密、无漏洞卡解密
  18. docker开放的端口_docker容器怎么开端口
  19. QT获取显示当前时间和日期
  20. 打开Setup.exe文件时,系统提示Windows 无法访问指定设备,路径或文件,你可能没有合适的权限访问这个项目。

热门文章

  1. 【Android 异常】 Parcelable encountered IOException writing serializable object
  2. Array.prototype.slice.call()如何工作?
  3. springmvc个人小结
  4. 服务器挂游戏用什么系统,挂游戏用什么云服务器
  5. 在linux里面怎么启动. run.sh,Shell脚本启动django 的runserver
  6. win11虚拟机如何安装 Windows11虚拟机安装步骤教程
  7. Shiro 综合实例
  8. Javascript详解
  9. linux怎么新建系统用户名,在 Linux 中不使用 useradd 命令如何创建用户账号
  10. vue使用swiper插件