4_2_AliOS Things 操作系统网络篇之 lwIP|学习笔记

简介: 快速学习4_2_AliOS Things 操作系统网络篇之 lwIP。

开发者学堂课程【HaaS 物联网应用开发课程4_2_AliOS Things 操作系统网络篇之 lwIP】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13836


4_2_AliOS Things 操作系统网络篇之 lwIP

 

内容介绍:

一、lwIP 基本介绍

二、lwIP 使用方法

三、lwIP 分析手段

 

一、lwIP 基本介绍

1. lwIP 简介

image.png

网络连接能力是万物互联的最重要的基础能力之一。AliOS Things 从诞生演进到今天,网络相关有两个模块至关重要,一个是提供配网连接能力的Netmgr模块,另一个是提供数据通信能力的 lwIP 模块。其中 Netmgr 是负责控制链路,lwIP 是负责数据链路。

本次主要介绍 lwIP 模块。lwIP(Light Weight Internet Protocol)是瑞士计算机科学院 Adam Dunkels 等人开发开源协议栈。它的设计初衷是为了一个低 RAM 和低 ROM 的协议栈。只需几十 KB 的 RAM 和40 KB 左右的 ROM,目前已大量使用在嵌入式系统中。

2. lwIP 架构图

image.png

可分为四个层次:虚线层为底层接口,最上层 application 层支持 SNTP,iPerf,SNMPv2c 等应用层协议,传输层支持UDP,TCP,网络层支持 ICMP,ARP,iPv4,iPv6,它相当于提供了 osi 模型中关于网络层之上的协议。

3. lwIP 数据收发介绍

UDP 和 TCP 都是基于 WiFi 的网络接口进行介绍。

image.png

 

二、lwIP 使用方法

1. lwIP API 介绍

LWIP 提供三种 APl ∶

1) RAW API

2) lwip API

3) BSD API

API

进程

优点

缺点

RAW API

协议栈和应用程序放到一个进程

收发数据高效

无法并行,并行性能容易下降

lwIP API

多个进程

接收与协议处理分开

有一定的资源占用

BSD API

UNX标准API

方便移植

资源占用多

2.socket API

名称

作用

socket

创建一个socket套接字

bind

将端口号和IP地址绑定带指定套接字上

listen

开始监听

accept

接受连接请求

connect

建立连接

send

面向连接的发送数据( tcp )

recv

面向连接的接收数据( tcp )

sendto

无连接的发送数据( udp )

recvfrom

无连接的接收数据( udp )

read

从文件描述符中读取数据

write

将数据内容写入文件描述符

writev

从各缓冲区中聚集输出数据到文件描述符中发送

select

查询它的可读性、可写性及错误状态信息

closesocket

关闭socket

shutdown

按设置关闭套接字

gethostbyname

通过域名获取主机的IP地址等信息

gethostbyname_r

通过域名获取主机的IP地址等信息

getaddrinfo

通过域名获取主机的IP地址等信息

freeaddrinfo

此函数释放addrinfo结构体

getsockname

获取本地主机的信息

getpeername

获取连接的远程主机的信息

ioctlsocket

设置套接字控制模式

fnctl

执行命令

eventfd

创建事件的文件描述符

setsockopt

设置socket属性

getsockopt

获取socket属性

3、lwIP 使用方法 TCP@UDP 方式

image.png

UDP 分为 Server 和 Client 进行数据交付 Server 端会先创建一

个 socket,然后绑定地址,然后接收来自 Client 端的请求。当 Client

端先创建 socket 然后调用 send to 发送数据到 Server,Server

处于 block 状态,收到消息解除后进行处理。

TCP 不同在于创建了 socket 之后需要进行 setsockopt 进行绑定信息,目的是便于 Client 访问之后,会有多个Client便于管理。然后调用 listen 接收来自 Client 端的请求。然后调用 accept 分发请求,最后进行 send 和 receive 数据,完成数据收发。

4.DHCP 介绍

DHCP ( Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配 IP 地址,使网络环境中的主机动态的获得 IP 地址、Gateway 地址、DNS 服务器地址等信息,并能够提升地址的使用率。

image.png

首次获取 IP 地址分为四个阶段。首先由客户端发起 DHCP 服务,请求寻找,DHCP 服务器收到请求后会回应DHCP 服务发现的响应。

如果 IP 地址租约到期,当租约时间过了50%,客户端发起请求,DHCP

服务器分配地址给 DHCP 响应,从而更新租约。

 

三、lwIP 分析手段

1.常用命令之 ifconfig

敲入 ifconfig 命令后,显示网卡名称,状态,IP地址,网关以及子网掩码等信息

image.png

如果网络断开,网卡将处于 down 的状态。

image.png

2. 常用命令之 ping

参数

说明

-c

指定ping包个数

-i

指定ping包时间间隔,单位毫秒

-S

指定ping包大小

-w

指定ping包超时认定时间

-h

显示帮助

-e

退出ping

常用命令∶

开始 ping : ping www.aliyun.com

停止 ping : ping -e

ping -c 3-i 100 -s 1300 -w 1000 www.aliyun.com

3. 常用命令之 pktprint

命令

说明

pktprint -t 0

不打印数据包

pktprint -t 1

显示SYN/SYNACK/RST/FINACK以及特定端口的数据包

pktprint -t

显示所有的数据包

[LwlP]LwlP_send, pkt:1001e3c0, netif(10007014), IPID(8),68->67,DHCP_BOOTREQ(336)

[LwlP]LwlP_recv, pkt:1001e3c0, netif(10007014), IPID(1c89),67->68, DHCP_BOOTREP(359)

[ LwlP]LwlP_send, pkt:1001e5d8, netif(10007014),IPID(9),68->67,DHCP_BOOTREQ(336)

[ LwlP] LwlP_recv, pkt:1001e3cO, netif(10007014),IPID(1c8a),67->68, DHCP_BOOTREP(359)

[LwlP ]LwlP_send, pkt:100235e8, netif(10007014),IPID(a),23575->53,DNS(94)

[ LwlP]LwlP_recv, pkt:1001e980, netif(10007014),IPID(0),53->23575, DNS(65422)

[ LwlP]LwlP_send, pkt:10023850, netif(10007014), IPID(b),S:196d, A:0,W:4380, :0, 58258->1883,TCP_SYN(44)

说明︰

LwIP_send/LwIP_recv

pkt:1001e3co

netif(10007014)

IPID(8)

68 -> 67

DHCP_BOOTREQ(336)

数据包发送/数据包接收

当前数据包pbuf指针H指向的地址

收发数据包经过的网卡

数据包的IPID

源读口->目的端口

应用层协议以及P数据包长度

S:196d

A:0

W:4380

1:0

TcP_SYNACK(44)


sequence number

ACK确认

窗口大小

payload长度

应用层协议以及IP数据包的长度


pktprint 在定位数据包容的过程中非常方便,它省去了通过无线进行抓包并且进行解密的过程,从而非常方便地可视化地看到数据。

相关文章
|
3月前
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
59 5
|
29天前
|
算法 安全 网络安全
探索操作系统核心:进程调度的奥秘网络安全的盾牌与剑——漏洞防御与加密技术
【8月更文挑战第30天】在数字世界的每一次点击和命令背后,都隐藏着一个不为人知的英雄——进程调度器。它默默无闻地在后台工作,确保我们的命令得以流畅执行。本文将揭开这位幕后英雄的面纱,带你了解进程调度的原理、重要性以及它是如何在操作系统中发挥作用的。无论你是编程新手还是资深开发者,理解进程调度都能帮你更好地掌握计算机的运作原理。准备好深入操作系统的核心,一探究竟了吗?让我们开始吧!
|
1月前
|
缓存 网络协议 算法
这些年背过的面试题——网络和操作系统基础篇
本文是技术人面试系列网络和操作系统基础篇,面试中关于网络和操作系统基础都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
30天前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
1月前
|
安全 网络安全 调度
云计算与网络安全:云服务、网络安全、信息安全等技术领域深入理解操作系统:进程调度的奥秘
【8月更文挑战第27天】本文将探讨云计算与网络安全之间的关联,包括云服务、网络安全、信息安全等技术领域。我们将通过代码示例来展示如何保护云计算环境中的数据和应用程序。最后,我们将讨论如何应对云计算环境中的网络安全挑战,以保护数据和应用程序免受攻击。
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
80 2
|
2月前
|
Python
智能卡系统工程是一个涉及多个方面的复杂系统,包括硬件(如读卡器、智能卡)、软件(如读卡器驱动程序、智能卡操作系统和应用软件)以及网络通信等。
智能卡系统工程是一个涉及多个方面的复杂系统,包括硬件(如读卡器、智能卡)、软件(如读卡器驱动程序、智能卡操作系统和应用软件)以及网络通信等。
|
2月前
|
Linux 网络安全 数据安全/隐私保护
网络安全教程-------渗透工具Kali,官网链接,ARM的介绍,Mobil,华为小米,oppe手机,是无法刷入第三方的操作系统的,E+手机,谷歌的picksoul,或者三星手机,系统盘是WSL的
网络安全教程-------渗透工具Kali,官网链接,ARM的介绍,Mobil,华为小米,oppe手机,是无法刷入第三方的操作系统的,E+手机,谷歌的picksoul,或者三星手机,系统盘是WSL的
|
4月前
|
存储 人工智能 物联网
探索操作系统的心脏:内核的奥秘云计算与网络安全:技术融合与挑战
【5月更文挑战第31天】本文将深入探讨操作系统的核心—内核,揭示其运作原理与对计算机性能的影响。从内核的定义和功能出发,我们将逐步剖析其结构组成,包括进程管理、内存管理、文件系统和设备驱动等关键模块。文章旨在为读者提供一扇观察操作系统内部工作机制的窗口,帮助理解现代计算环境中,为何一个高效、稳定的内核对于整个系统的重要性不可或缺。
|
4月前
|
程序员 Linux 网络安全
optee os syscall,35岁以后的网络安全程序员出路在哪里
optee os syscall,35岁以后的网络安全程序员出路在哪里