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

相关文章
|
1月前
|
安全 Linux 虚拟化
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
112 3
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
|
1月前
|
网络协议 区块链 KVM
Arista vEOS 4.35.0F 发布 - 虚拟化的数据中心和云网络可扩展操作系统
Arista vEOS 4.35.0F 发布 - 虚拟化的数据中心和云网络可扩展操作系统
125 7
Arista vEOS 4.35.0F 发布 - 虚拟化的数据中心和云网络可扩展操作系统
|
1月前
|
监控 区块链 数据中心
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
162 0
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
|
1月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.35.0F 发布 - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.35.0F 发布 - 针对云原生环境设计的容器化网络操作系统
90 0
|
2月前
|
Devops API 语音技术
Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
88 0
Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
|
4月前
|
弹性计算 运维 Kubernetes
看阿里云操作系统控制台如何一招擒拿网络丢包
如何结合操作系统控制台快速定位问题?
|
4月前
|
弹性计算 运维 Kubernetes
看阿里云操作系统控制台如何一招擒拿网络丢包
阿里云操作系统控制台帮忙客户快速定位问题,不仅成功完成业务部署并实现稳定运行,更有效遏制了持续性成本消耗。
|
6月前
|
网络协议 区块链 KVM
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
200 2
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
|
7月前
|
Devops API 语音技术
Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统
Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统
173 5
Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统
|
6月前
|
监控 区块链 数据中心
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
209 0
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统

热门文章

最新文章