RTThread网络编程学习笔记.docx

上传人:b****3 文档编号:4130585 上传时间:2022-11-28 格式:DOCX 页数:12 大小:1.09MB
下载 相关 举报
RTThread网络编程学习笔记.docx_第1页
第1页 / 共12页
RTThread网络编程学习笔记.docx_第2页
第2页 / 共12页
RTThread网络编程学习笔记.docx_第3页
第3页 / 共12页
RTThread网络编程学习笔记.docx_第4页
第4页 / 共12页
RTThread网络编程学习笔记.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

RTThread网络编程学习笔记.docx

《RTThread网络编程学习笔记.docx》由会员分享,可在线阅读,更多相关《RTThread网络编程学习笔记.docx(12页珍藏版)》请在冰豆网上搜索。

RTThread网络编程学习笔记.docx

RTThread网络编程学习笔记

RT-Thread网络编程学习笔记

一、在QEMU上运行RT-Thread

●下载RT-Thread源码,下载链接

●下载RT-Thread源码,下载链接

按照官方指导文档一步步操作就可以在模拟器QEMU上讲RT-Thread跑起来,并在虚拟的SD卡加载FATFS,文件系统正常体验:

二、安装和配置TAP网卡

按照官方文档指导安装tap-windows并且配置TAP:

三、在QEMU上运行RT-Thread网络功能

重新编译运行QEMU:

四、Socket背景知识

BSDSocket相关API

socket

创建一个socket套接字

bind

绑定套接字

listen

开始监听

accept

接受连接请求

connect

建立连接

send

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

recv

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

sendto

无连接的发送数据(udp)

recvfrom

无连接的接收数据(udp)

closesocket

关闭socket

shutdown

关闭socket某一个通道

gethostbyname

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

getsockname

获取本地主机的信息

getpeername

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

ioctlsocket

设置套接字控制模式

五、利用wireshark工具抓包

六、ICMP(PING)包过程

ICMP是“InternetControlMessageProtocol”(网络控制报文协议)的缩写,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

控制消息是指:

网络通不通、主机是否可达、路由是否可用等网络本身的消息。

这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

我们在网络中经常会使用到 ICMP协议,只不过我们觉察不到而已。

比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。

ICMP层区分不是很明显,一般划分在IP层中通过IP包来封装ICMP数据,在实际传输中数据包的格式一般都是IP包+ICMP包的格式,具体格式如下:

IP首部(20字节)+8位类型+8位代码+16位校验和+ICMP首部其他部分(7个字节)+数据。

ping原理:

 

七、开发TCP客户端程序和上位机服务器通信

通过menuconfig使能tcpclientsample,系统会自动将tcpclient测试程序编译进工程,通过msh可以调用这个接口,创建一个clientsocket,并尝试连接输入的IP端口:

通过TCP调试工具建立一个tcp服务端,IP和端口与上述对应,即可监听到我们上面创建的这个client连接,并且可以正常地收发数据:

如上面截图,服务端可以接收到client发送的数据,跟测试程序设计相同:

八、开发UDP客户端程序和上位机服务器通信

示例代码的功能是向输入的IP地址发送10条消息,发送完毕即退出:

九、TCP三次握手与四次分手

TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16而端口号为80,那么得到的套接字为192.3.4.16:

80。

IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程,而端到端的通信才是应用进程之间的通信。

TCP报文的格式如下图所示:

TCP的三次握手,意思就是建立连接的时候客户端与服务器之间需要三次数据包的交流。

●客户端发送给服务器一个请求连接数据包,即发送了一个指向服务器目标端口的一个SYN位为1的TCP报文。

●服务器接收到客户端的连接请求之后,会回应一个SYN位为1的TCP报文,表示同意连接。

并且,会把ACK位也置1表示确认收到上次消息。

●客户端接收到服务器的同意连接的数据包之后,还要回复一个ACK为1的TCP报文,表示确认收到。

TCP的四次挥手,意思就是释放连接的时候客户端与服务器之间需要四次数据包的交流。

●客户端发送给服务器一个请求释放连接的数据包,即发送了一个指向服务器目标端口的一个FIN位为1的TCP报文,表示客户端没有数据要发送了,但是仍然可以接收数据;并且ACK位也为1,表示对上次传输数据结果的确认。

并且之后处去等待状态,等待服务器的两次回应。

●服务器接收到客户端的释放连接请求之后,会先回应一个ACK位为1的报文,表示确认收到。

但是,这时服务器可能还有数据没有发送完成,继续发送数据。

●服务器发送完数据之后,发送一个FIN为1的TCP报文,表示我也没有要发送的数据了,你可以释放连接了。

当然ACK位仍然为1。

●客户端接收到服务器的同意释放连接的数据包之后,回复一个ACK为1的TCP报文,表示确认收到。

十、UDP包分析

UDP协议的主要作用是将数据压缩成数据包的形式,一个典型的数据包就是一个二进制数据的传输单位,每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

UDP报文的具体格式如下:

源端口(2字节)+目的端口(2字节)+长度(2字节)+检验和(2字节)+数据

UDP协议的通信较TCP简单了很多,减少了TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议。

UDP客户端在发送数据时并不判断主机是否可达,服务器是否开启等问题,同样它不能确定数据是否成功送达服务器。

它只是将数据简单的封了一个包,之后就丢出去了。

十一、利用ntp协议获取网络时间

NTP 网络时间协议(NetworkTimeProtocol),是用来同步网络中各个计算机时间的协议。

十二、通过telnet协议连接和控制设备

Telnet 协议是一种应用层协议,使用于互联网及局域网中,使用虚拟终端机的形式,提供双向、以文字字符串为主的交互功能。

属于TCP/IP协议族的其中之一,是Internet远程登录服务的标准协议和主要方式,常用于网页服务器的远程控制,可供用户在本地主机运行远程主机上的工作。

RT-Thread目前支持的是Telnet服务器,Telnet客户端连接成功后,将会远程连接到设备的Finsh/MSH,实现设备的远程控制。

十三、通过TFTP协议连接和控制设备

TFTP (TrivialFileTransferProtocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为 69,比传统的FTP协议要轻量级很多,适用于小型的嵌入式产品上。

打开TFTP客户端,按照下图所示方法配置:

其中Hostip为通过模拟器读取到的系统IP:

选择localfile发送到模拟器文件系统:

从模拟器文件系统下载文件到本地:

我将上传的1下载到本地命名为2,用比较工具比较两个文件完全一样:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1