W5500详解——自带硬件协议栈的以太网芯

      W5500是一款网络芯片用于支持以太网的连接,自带硬件协议栈芯片(内涵MAC和PHY),提供SPI接口可以与MCU之间建立连接,如下:

      其内部自带TCP/IP硬件协议栈(所谓的硬件协议栈,就是通过硬件的方式实现的协议栈,与之对应的自然是软件协议栈)。虽然TCP/IP的协议栈已经由硬件实现,但是你还是很有必要了解器实现的思想,这里面涉及到我们上学时候学到的OSI模型以及分层的思想。

       先来聊聊所谓的分层思想,为什么要分层设计:

1.你永远无法一个人完成一个复杂且庞大的项目,多人协作是常态。

2.你的脑容量也是有限,将所有的细节的设计及实现全部都集中再一起,哪怕你智商160,大脑也会宕机。

       其实很好理解,分层的目标是,复杂任务的简单化的一种分解手段,设计实现的具现化,以及多人协作模式的一种实现。

        OSI网络模型:抛开书本上7层模型(其实当你不理解一件事的时候,哪怕是你记住了,也没什么卵用啊),假如以前没有网络的概念,要你来实现网络通信,你会怎么来实现呢?

         如果换做是我,那大概会这么分:

      1.首先是物理层要打通:物理层的传输路径是设备与节点之间(例如W5500到路由):走的是RJ45接口,需要将编码数据转换为脉冲信号实现传输。

      2.有了物理层以后,数据是可以传输了,但是传输过程中由于线路干扰及接触不良等等问题,可能会造成物理层传输数据出现错误,这个时候,你需要建立重传机制,链路层就是负责这个工作的,确保物理层传输的稳定。

      3.接下来是网络层,网络层数据传输路径是节点与节点之间。

      4,确保网络层传输稳定的协议层,传输层(也就是TCP/UDP协议)。

      5,应用层根据不同的应用场景会有不同的协议,如HTTP/FTP等。

      重点来了:链路层是怎样进行数据传输的?

实际数据在传输过程中,是以一定格式进行传输:

         如何获取另一块网卡的MAC地址,主要依靠ARP协议。链路层如何进行通信?发送方通过广播的方式(类似总线的方式)向网络内所有的设备发送,设备收到数据后判断首部的MAC地址是否与自身的MAC地址相同,如果相同就处理这个数据帧,如果不相同就丢弃。

         网络层:网络层主要是在源和终点之间建立连接,主要包括网络寻径,流量控制,错误检查等等,其实大体知道定义就可以了,光凭文字的叙述基本不可能完全理解。网络层最重要的就是IP地址(可以相比于MAC地址进行理解)了。其中协议帧如下:

         传输层:主要是为应用层提供可靠的端到端的网络数据流服务,一般包括流控、多路传输等。传输层最常见的协议有TCP/UDP协议协议格式如下:

应用层:最接近用户终端的一层,首先应用层的协议种类很多,因为应用场景也很丰富,例如HTTP SMTP FTP DNS等协议。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 115
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧