程序小白
认证:优质创作者
作者动态 更多
W5500详解——自带硬件协议栈的以太网芯
08-26 08:23
RTOS中的断言机制——assert
08-25 08:22
移植RT-thread到stm32开发板仿真异常解决
08-15 07:56
基于RT-Thread的STM32专属bsp定制:代码移植与修改
07-16 22:06
基于RT-Thread的STM32专属bsp定制:工程模板配置
07-14 20:59

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
收藏 2
关注 97
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧

  • <tr id='zu6gu'><strong id='mou1g'></strong><small id='4tohu'></small><button id='65rcu'></button><li id='2rkpp'><noscript id='zrq54'><big id='37cvp'></big><dt id='ek2x4'></dt></noscript></li></tr><ol id='3ee0x'><option id='dfz50'><table id='dhbn4'><blockquote id='44ees'><tbody id='783bu'></tbody></blockquote></table></option></ol><u id='ab20m'></u><kbd id='8piw0'><kbd id='2h4az'></kbd></kbd>

    <code id='la94u'><strong id='k2z8e'></strong></code>

    <fieldset id='amxvy'></fieldset>
          <span id='m83w7'></span>

              <ins id='tvp0r'></ins>
              <acronym id='iql1a'><em id='oxl0a'></em><td id='e2b2d'><div id='dyzn8'></div></td></acronym><address id='5ai7j'><big id='8y0my'><big id='6lytu'></big><legend id='37wkm'></legend></big></address>

              <i id='85877'><div id='4034i'><ins id='p81au'></ins></div></i>
              <i id='w92ik'></i>
            1. <dl id='ue8ln'></dl>
              1. <blockquote id='04ekk'><q id='s3vb7'><noscript id='jxez5'></noscript><dt id='9rr6t'></dt></q></blockquote><noframes id='klt1c'><i id='bk6ga'></i>

                新宝7