LWIP协议与TCP/IP

这篇具有很好参考价值的文章主要介绍了LWIP协议与TCP/IP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 学习一个东西,先了解这个东西是干什么用的,哪些场景会用到它,与自己已经掌握的其他知识的联系

        a. 例如:LWIP这个东西是干什么用的:他就是一个裁剪后保持大部分TCP/IP功能的协议。用少量的资源消耗实现一个较为完整的TCP/IP协议栈,其中“完整”主要指的是TCP协议的完整性,实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。此外LwIP既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。

        b.例如:哪些场景会用到LWIP这个协议:基本上如果你想实现TCP/IP这个协议,就可以用到这个。比如TCP,UDP协议,比如工业总线上的Modbus,比如想要实现网关路由的功能,只要是用到以太网的,都可以实现功能,还有一些物联网像MQTT等。

        c.例如:他与linux上直接编写TCP/IP协议的区别:Linux系统中有完整的TCP/IP协议的实现。但是可执行代码往往有数兆之大。需要高效的处理器熟读和大量的外存、内存开销。所以如果芯片是基于Linux kernel的话,就没必要在重复造轮子。LWIP最大优势可以移植到操作系统上,也可以在无操作系统的情况下独立运行,且代码量小。是目前在嵌入式网络领域被讨论和使用很广泛的一个协议栈。开源特性和快速的版本更新效率。新版本还支持DNS、SNMP、DHCP、IGMP等高级应用功能。在资源有限的情况下实现TCP协议的主要功能。有自己的数据包和内存管理机制。所以LWIP需要根据自己的需求,移植相关的代码。

2. 对要学的东西梳理出一个大概的框架(这个框架是(理论框架 + 应用框架[code逻辑]))

2.1. LWIP的理论架构

a. LWIP的网络分层模型:就是TCP/IP的网络分层模型

LWIP协议与TCP/IP

b. LwIP 符合 TCP/IP 模型架构,规定了数据的格式、传输、路由和接收,以实现端到端的通信。(netif 用来描述一个网卡)

LWIP协议与TCP/IP

LWIP协议与TCP/IP

2.2 LWIP的应用code架构:(下载一个相对完整的代码,去看一下这个功能的实现逻辑)

a. LWIP的软件架构:

参考:

LITIECX/lwip_linux: lwip协议栈的linux移植学习 (github.com)

LwIP协议栈粗解

LWIP协议与TCP/IP

LWIP协议与TCP/IP

b. LWIP中三种API所在的架构层次:

LWIP协议与TCP/IP

3. 在框架体系中,找到一条尽快熟悉架构的线,可以以一个想要实现的功能为攻破对象。因为框架内的内容大部分都是重复使用的,所以只要捋清楚一条线,其他的也就迎刃而解。

a. 例如:我想做一个基于LWIP协议中TCP功能的实现;

4. 在确定自己要实现的功能后,先去理解这个功能的原理

a. 例如:TCP的原理是如何实现的。

参考:【lwip】12-一文解决TCP原理文章来源地址https://www.toymoban.com/news/detail-422205.html

5. 基于我找到的那条线,梳理出这个东西如果按照步骤是怎样运作的。(以结果为导向,分析问题的时候就要想这个原理和步骤之间有什么关系)

a. 例如:实现TCP的设计方案;下面只是一个很粗糙的流程图,还需要具体的深入研究,基于LWIP的TCP是如何实现的。

LWIP协议与TCP/IP

6. 基于这条线的框架,将其拆解成各个模块,之后再根据各个模块补充细节

a. 例如:如上图的设计方案可以看出,首先TCP我需要分为客户端与服务端

TCP传输需要涉及到Socket编程

LWIP协议与TCP/IP

LWIP协议与TCP/IP

b. 基于理论的实现流程,协议层报文间的封装与拆封流程图:

LWIP协议与TCP/IP

c. 基于应用code的实现流程,LWIP协议中TCP的数据收发实现的流程图:

TCP服务端

LWIP协议与TCP/IP

TCP客户端

LWIP协议与TCP/IP

7. 通过给自己提问,带着问题一层一层的挖每个模块更细节的内容

a. 例如:LWIP 是软件那么而怎样让硬件和软件无缝连接起来呢?网卡又多种多样,怎样才能让 LWIP 使用同样的软件兼容不同的硬件平台?

参考:LWIP中netif结构体的介绍

  https://www.cnblogs.com/lizhuming/p/15487094.html

  https://www.cnblogs.com/lizhuming/p/15487160.html

LWIP 中使用了一个 netif 结构体来描述网卡但是网卡是直接和硬件平台打交道的:

  • 用户提供最底层接口函数。
  • LWIP 提供统一的 API。
  • 举例:
    • 收:如网卡的初始化和网卡的收发数据,当 LWIP 底层得到数据之后,才会传入到内核中去处理。
    • 发:LWIP 内核需要发送数据包的时候,也需要调用网卡的发送函数。
  • LWIP 中的 etherneif.c 文件的函数通常为硬件打交道的底层函数当有数据需要通过网卡接收或者发送数据的时候就会被调用,通过 LWIP 的协议栈的内部进行处理后,从应用层就能得到数据或者可以发送数据。

b. 例如:LWIP中的TCP是如何实现三次握手和四次挥手的

参考:【lwip】12-一文解决TCP原理

8. 最后根据这条线,将所有的枝干全部理解后,整理出来,这样就基本理解了这块功能,其他模块也都一通百通。最后自己在手写一份代码,基本就差不多了。

到了这里,关于LWIP协议与TCP/IP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第138篇:了解HTTP协议(TCP/IP协议,DNS域名解析,浏览器缓存)

    好家伙,发现自己的网络知识十分匮乏,赶紧补一下   这里先举个我生活中的例子 欸,作业不会写了,上网搜一下 用edge浏览器上bing必应搜一下(百度广告太多了,真不想用百度举例子)   假设这是我们第一次访问bing的首页 当我向浏览器中输入https://cn.bing.com/并按下回车

    2023年04月24日
    浏览(50)
  • Lwip之TCP协议实现(二)

    接上文:Lwip之TCP协议实现(一)_龙赤子的博客-CSDN博客 第二部分:数据输入处理 Tcp数据的输入处理主要在文件tcp_in.c中实现。输入的数据包在IP层进行分发处理。如果输入的数据包为TCP包,则调用tcp_input进行TCP包的输入处理。因此,tcp_input为tcp输入处理的入口。在tcp_input中会

    2023年04月09日
    浏览(35)
  • Lwip之TCP协议实现(一)

    TCP本身是一个相对复杂的协议,Lwip中最复杂的部分也是此处。这里,我们分部分描述。 第一部分:TCP处理 Tcp.c该文件提供了一些通用的函数接口。该文件中的函数主要的操作对象就是tcp_pcb,包括对tcp pcb的设置,修改读取等。另外,在该文件中还实现了tcp的定时器。 目录 一

    2023年04月09日
    浏览(30)
  • 【lwip】14-TCP协议分析之TCP协议之可靠传输的实现(TCP干货)

    ‍ 前面章节太长了,不得不分开。 这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。 参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html ‍ lwip的时钟机制可以翻看前面章节。 lwip的TCP可靠传传输的实现离不开两个时钟处理函数:

    2024年02月06日
    浏览(58)
  • 【lwip】13-TCP协议分析之源码篇

    TCP源码篇,当前只分析TCP层的源码实现,按功能分块分析,接口为RAW接口。 NETCONN接口和SOCKET接口会独立一篇文章进行分析。 本文基于读者已学习了TCP协议原理篇的基础上进行源码分析,不再在此篇文章中过多解析TCP相关概念。 ‍ 建议读者对着LWIP库源码进行阅读。对于初学

    2024年02月06日
    浏览(38)
  • 【lwip】14-TCP协议之可靠传输的实现(TCP干货)

    ‍ 前面章节太长了,不得不分开。 这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。 参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html ‍ lwip的时钟机制可以翻看前面章节。 lwip的TCP可靠传传输的实现离不开两个时钟处理函数:

    2024年02月06日
    浏览(49)
  • 路由器是什么东西?路由器是干什么用的?

    路由器是什么东西?虽然这个问题对于大多数人来说都不是一个问题,但是任然有少数缺乏网络基础的朋友,不知道路由器到底是个什么东西,本文就简单的介绍一下。 路由器(Router),是连接局域网与局域网、局域网与广域网(Internet)的一种设备,它会根据信道的情况自

    2024年02月08日
    浏览(41)
  • TCP/IP传输协议学习

    1.发送方源终端设备的应用创建数据。 2.当数据在源终端设备中沿协议栈向下传递,对其分段和封装。 3.在协议栈网络接入层的介质上生成数据。 4.通过由介质和任意中间设备组成的网际层网络传输数据。 5.在目的终端设备中沿协议栈向上传递时对其解封和重组。   1.TCP/IP协

    2024年02月09日
    浏览(39)
  • 网络基础学习:什么是tcp/ip协议

    TCP/IP是一种网络协议套件,它由传输控制协议(TCP)和互联网协议(IP)两个协议组成,广泛应用于Internet和局域网中。TCP/IP协议套件提供了可靠的数据传输、路由选择、错误检测和纠正等功能,使得不同类型的计算机和网络设备可以进行互联互通。它是Internet的基础协议,也

    2024年04月23日
    浏览(56)
  • 9.物联网LWIP,ip数据报,udp数据报,tcp数据报

    一。ip协议原理(网络层) 1.网络地址转换NAT         我们上网是通过运营商向我们提供的IP地址来上网的,并不是自身的IP地址,所以这就需要网络地址转换NAT的帮助。即内网访问外网所需要的ip转换装置。 2.ip数据报 (1)版本          占据4bit空间,定义IPv4与ipv6,对应的

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包