千兆以太网TCP协议的FPGA实现。

千兆以太网TCP协议的FPGA实现

Lzx

2017/4/20

         写在前面,这应该是我大四最后一个工程性的作品了,以后要养成写文档记录的习惯。说明下,本工程为纯verilog实现的硬件TCP收发器,不同于其他的使用MCU构建软件协议栈的方案,如有同学学习实验需要用到,可以找我拿代码。

联系方式QQ:929259243

         本文将从以下几个方面进行讲述:

1、 以太网基础(主要讲下tcp协议)。

2、 基于FPGA的TCP协议实现方案。

3、 调试方法。

4、 问题记录。

5、 实验过程

 

代码链接:https://download.csdn.net/download/lzx6901152/11884597

一、以太网基础:(这里只是说下大概念,具体详细的讨论、认知,推荐看《计算机网络》(谢希仁))

 

以太网主要分为数据链路层、网络层、运输层、应用层。

                    

         数据链路层,某种程度可以理解成以太网的MAC层。我们来看下它的具体定义:

         “所谓链路,就是从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点。数据链路则是另外一个概念。因为当需要在一条线路上传送数据时,必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。把实现这些协议的硬件和软件加到链路上,就构成了数据链路”简而言之,也就是说数据链路层负责处理物理硬件接口细节。它定义了将数据组成正确帧的规范和在网络中传输帧的规范。

 

         网络层,网络层位于数据链路层之上,它负责处理分组在网络中的活动。同时,它负责提供互联网的“虚拟网络”镜像(可以理解成IP地址)。本层定义了网络中传输的“信息包”格式,以及从一个终端到达另一个终端的路由转发机制(路由器转发)。本层包括IP、ICMP、IGMP、ARP等协议。

 

         运输层,在以太网通讯中我们面临这样一个问题,前面所述的协议可以实现电脑A到电脑B的通讯。然而A、B上都有很多的进程在跑,光用上面的协议是不能实现电脑A上的进程1到电脑B上的进程2的通信,也就是我们说的端到端的通讯。为解决这个问题便有了TCP协议和UDP协议。TCP协议是面向连接的(两个进程要传输数据要先建立一个链接),它提供可靠的数据传输服务,提供诸如流量控制、拥塞控制、超时重传等功能。UDP协议是面向无连接的传输协议,不提供可靠的传输,但保证实时性。举个例子,如果你通过以太网发送一封邮件,那么你的侧重点一定是对方收到邮件一定是跟我发的一模一样才好。这时候传输用的就是TCP协议了,它能保证可靠性。再比如,如果一公司正在开网络视频会议,你一定希望画面能是及时画面,而不是因为某些原因导致的10s、20s前的画面,这时候使用的UDP协议。

 

         应用层:定义了应用程序使用互联网的规范,负责处理特定的应用程序细节。如FTP、SMTP、Telnet等。

  </

  • 46
    点赞
  • 279
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值