WiFi的原理以及正点原子WiFi模块的使用

2023-05-16

本文主要用于记录WiFi的部分协议、原理,以及如何使用正点原子的WiFi模块。

文章名:WiFi的原理以及正点原子WiFi模块的使用
作者:遮瑕

注:本文大量引用《WIFI基本知识整理》以及百度百科的内容,同时操作指令处引用正点原子用户手册的内容。

文章目录

  • 一、对于Wi-Fi的基本了解
    • 1.Wi-Fi是什么
      • (1)Wi-Fi联盟前世今生
      • (2)Wi-Fi本质
    • 2.常用相关术语
  • 二、Wi-Fi的基础知识
    • 1.有线与Wi-Fi的区别
    • 2.Wi-Fi的协议区分
    • 3.Wi-Fi、以太网、OSI协议、TCP/IP协议
      • (1)OSI协议简介
      • (2)TCP/IP协议简介
      • (3)Wi-Fi与以太网
    • 4.Wi-Fi的部分参数
  • 三、Wi-Fi的使用与配置——以正点原子Wi-Fi模块为例
    • 1.AP模式
      • (1)AP模式——TCP服务器配置
      • (2)AP模式——TCp客户端配置
      • (3)AP模式——UDP配置
    • 2.STA模式
      • STA模式——TCP服务器配置
      • STA模式——TCp客户端配置
      • STA模式——UDP配置

一、对于Wi-Fi的基本了解

1.Wi-Fi是什么

  Wi-Fi(发音: /ˈwaɪfaɪ/,法语发音:/wifi/),在中文里又称作“移动热点”,是一个基于IEEE 802.11标准创建的无线局域网技术。虽然“Wi-Fi”常被写成“WiFi”或“Wifi”,但是它们并没有被Wi-Fi联盟认可。

(1)Wi-Fi联盟前世今生

  1999年,为推动IEEE 802.11b规格的制定,无线以太网路相容性联盟(Wireless Ethernet Compatibility Alliance,缩写为WECA)诞生。2002年10月,WECA改名为Wi-Fi联盟(Wi-Fi Alliance)。

(2)Wi-Fi本质

  Wi-Fi在无线局域网(WLAN)的范畴指的是“无线相容性认证”,实质上是一种商业认证,同时也是一种无线联网的技术。如果无线路由器连接了一条ADSL线路或者别的上网路线,则称其为“热点”。
  需要注意的是Wi-Fi、WLAN以及802.11的区别,常有人将其混为一谈,但是实际上它们是有区别的。WLAN是无线局域网(Wireless Local Area Network)的缩写;IEEE 802.11标准是由一系列的信道访问控制MAC (media access control)协议和物理层(PHY)标准组成的,它们是由IEEE LAN/MAN标准委员会创建和维护的;Wi-Fi是一种符合802.11标准的WLAN,但是随着发展,802.11协议也拥有多种子协议,且相互兼容,因此可以说Wi-Fi就是通过Wi-Fi联盟认证的WLAN,而不是单单的802.11协议。

2.常用相关术语

  以下将描述与解释Wi-Fi相关的常用术语(可不看):

  • LAN
      Local Area Network,局域网,覆盖范围一般是方圆数千米内,将一定范围内的设备组成通信网络,具有较强封闭性。传输介质为网线,由同轴电缆、双绞线及光缆3大原件构成。
  • MAN
      Metropolitan Area Network,城域网,是在一个城市范围内建立的计算机通信网,其主要用途是作为骨干络,通过它将一个城市内不同地点的主机、数据库、LAN等互联起来。虽然功能类似于WAN,但是技术类似于LAN,传输速率在100Mbps以上。
  • WAN
      Wide Area Network,广域网,又称公网,实现不同地区的LAN、WAN的连接,通常跨接极大的物理范围,从几十公里到几千公里不等,可连接不同地区与国家。
      注意:WAN不等于互联网,一般所指的互联网是属于一种公共型的广域网,公共型的广域网的成本会较低,作为一种较低廉的网上环境,但跟广域网比较来说,互联网没办法管理带宽,走公共型网上系统,任何一段的带宽都无法被保证。
  • WLAN
      Wireless Local Area Network,无线局域网,通过无线的手段将一定范围内的设备联通,组成局域网。

二、Wi-Fi的基础知识

1.有线与Wi-Fi的区别

  • Wi-Fi需要在通信之前就一直建立联系,而有线通信在需要通信时相互发送数据包进行握手即可。
  • 有线通信是半双工通信,Wi-Fi通信是全双工通信。
  • Wi-Fi较易被抓包,有一定安全隐患。
  • Wi-Fi通信时在网络层以下出错概率远高于有线,所以任意发送帧重传,需要在网络层之下的协议添加重传的机制(不能只依赖上面TCP/IP的延时等待重传等开销来保证)。

2.Wi-Fi的协议区分

  Ethenet(以太网)Wi-Fi采用的协议都属于IEEE 802协议集。其中,Ethenet以802.3协议做为其网络层以下的协议;而Wi-Fi以802.11协议做为其网络层以下的协议。无论是有线网络,还是无线网络,其网络层以上的部分,基本一样。
  由于协议的发展,所以802.11协议有多种子协议,按照时间顺序为:

  • 802.11a
      1999年9月制定,工作频率为5GHz,最大原始数据传输速度为54Mbps,由于2.4GHz使用较多,因此5GHz频段可以让802.11a相对有更少冲突信号,但是由于频率过高,导致其几乎只能在直线范围内使用,需要更多的接入点,传播距离更近。
  • 802.11b
      1999年9月制定,时间略晚于802.11a,该标准规定WLAN工作频段在2.4~2.4835GHz,数据传输速率达到11Mbps,传输距离控制在15 ~ 45m。,相较于802.11a来说,其能传播更远,穿透性更强。
  • 802.11g
      2003年6月制定,工作频率为2.4GHz,主要区别是其在2.4GHz频段使用正交频分复用(OFDM)调制技术,使数据传输速率提高到20Mbps以上。但是能够与IEEE802.11b的Wi-Fi系统互联互通,可共存于同一AP的网络里,保障了后向兼容性。
  • 802.11n
      2009年5月被批准,其在2.4GHz与5GHz均能工作,理论上最大传输速率可达600Mbps。它的推出便是为了解决a、b、g的通信速率过低的问题,为解决这个问题,802.11n增加了MIMO多输入输出)的标准,使用多个发射和接收天线来允许更高的数据传输率,并使用了Alamouti于1998年提出的空时分组码来增加传输范围。
      因为传输速率在很大的程度上取决于Channel(信道)的ChannelWidth有多宽,因此802.11n采用了特殊技术手段,可以在传输数据的时候将两个信道合并为一个进行传输,极大地提高了传输速率(这又称HT-40,high through)。同时802.11n的MIMO可以让两对天线同时在同一Channel上传输数据,而两者却能够不相互干扰(采用了OFDM特殊的调制技术)。
  • 802.11ac
      2009年9月被批准,其使用5GHz频带进行通信,理论上可以达到1Gbps的信息传输速度。
      802.11ac是802.11n的继承者。它采用并扩展了源自802.11n的空中接口(air interface)概念,包括:更宽的RF带宽(提升至160MHz),更多的MIMO空间流(spatial streams)(增加到 8),下行多用户的 MIMO (最多至4个),以及高密度的调变(modulation)(达到 256QAM)。
  • 802.11ax
      又名Wi-Fi 6,2019年9月,Wi-Fi联盟宣布启动Wi-Fi 6认证计划,理论上传输速率可达9.6Gbps。介于其Wi-Fi 6的名称,可以向上追溯命名a、b、g、n、ac为Wi-Fi 1到Wi-Fi 5(非官方称呼)。
      Wi-Fi 6主要使用了OFDMA、MU-MIMO等技术,MU-MIMO(多用户多入多出)技术允许路由器同时与多个设备通信,而不是依次进行通信。MU-MIMO允许路由器一次与四个设备通信,Wi-Fi 6将允许与多达8个设备通信。Wi-Fi 6还利用其他技术,如OFDMA(正交频分多址)和发射波束成形,两者的作用分别提高效率和网络容量。

3.Wi-Fi、以太网、OSI协议、TCP/IP协议

(1)OSI协议简介

  首先我们先简单了解一下什么是OSI协议,然后再解释Wi-Fi与它的关系。
  OSI(Open System Interconnect),即开放式系统互连。 一般都叫OSI参考模型,是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架,即OSI开放系统互连参考模型。OSI划分的七个层次由高到低依次为:Application(应用层)Presentation(表示层)Session(会话层)Transport(传输层)Network(网络层)DataLink(数据链路层)Physical(物理层)。如果简化来看的话,其中应用层、表示层和会话层可以一起视为应用层,而剩余层则可一起视为数据流动层。以下从低到高依次介绍每层的功能:
层次结构图

数据流动层

物理层
  物理层是参考模型中的最底层,主要定义了系统的电气、机械、过程和功能标准。如:电压、物理数据速率、最大传输距离、物理联接器和其他的类似特性。
  物理层的主要功能是利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作。
  物理层传输的基本单位是比特流,即0和1,也就是最基本的电信号或光信号,是最基本的物理传输特征。
数据链路层
  数据链路层是在通信实体间建立数据链路联接,传输的基本单位为“帧”,并为网络层提供差错控制和流量控制服务。
  数据链路层由MAC(介质访问控制子层)LLC(逻辑链路控制子层)组成。介质访问控制子层的主要任务是规定如何在物理线路上传输帧。逻辑链路控制子层对在同一条网络链路上的设备之间的通信进行管理。数据链路控制子层主要负责逻辑上识别不同协议类型,并对其进行封装。也就是说数据链路控制子层会接受网络协议数据、分组的数据报并且添加更多的控制信息,从而把这个分组传送到它的目标设备。
网络层
  网络层主要为数据在节点之间传输创建逻辑链路,通过路由选择算法为分组选择最佳路径,从而实现拥塞控制、网络互联等功能。
  网络层是以路由器为最高节点俯瞰网络的关键层,它负责把分组从源网络传输到目标网络的路由选择工作。互联网是由多个网络组成在一起的一个集合,正是借助了网络层的路由路径选择功能,才能使得多个网络之间的联接得以畅通,信息得以共享。
  网络层提供的服务有面向联接面向无联接的服务两种。面向联接的服务是可靠的联接服务,是数据在交换之前必须先建立联接,然后传输数据,结束后终止之前建立联接的服务。网络层以虚电路服务的方式实现面向联接的服务。面向无联接的服务是一种不可靠的服务,不能防止报文的丢失、重发或失序。面向无联接的服务优点在于其服务方式灵活方便,并且非常迅速。网络层以数据报服务的方式实现面向无联接的服务。
传输层
  传输层是网络体系结构中高低层之间衔接的一个接口层。传输层不仅仅是一个单独的结构层,而是整个分析体系协议的核心。
  传输层主要为用户提供End—to—End(端到端)服务,处理数据报错误、数据包次序等传输问题。传输层是计算机通信体系结构中关键一层,它向高层屏蔽了下层数据的通信细节,使用户完全不用考虑物理层、数据链路层和网络层工作的详细情况。传输层使用网络层提供的网络联接服务,依据系统需求可以选择数据传输时使用面向联接的服务或是面向无联接的服务。

应用层

会话层
  会话层的主要功能是负责维护两个节点之间的传输联接,确保点到点传输不中断,以及管理数据交换等功能。会话层在应用进程中建立、管理和终止会话。会话层还可以通过对话控制来决定使用何种通信方式,全双工通信或半双工通信。会话层通过自身协议对请求与应答进行协调。
表示层
  表示层为在应用过程之间传送的信息提供表示方法的服务。表示层以下各层主要完成的是从源端到目的端可靠地的数据传送,而表示层更关心的是所传送数据的语法和语义。
  表示层的主要功能是处理在两个通信系统中交换信息的表示方式,主要包括数据格式变化数据加密与解密数据压缩与解压等。在网络带宽一定的前提下数据压缩的越小其传输速率就越快,所以表示层的数据压缩与解压被视为掌握网络传输速率的关键因素。表示层提供的数据加密服务是重要的网络安全要素,其确保了数据的安全传输,也是各种安全服务最为重视的关键。
  表示层为应用层所提供的服务包括:语法转换、语法选择和联接管理。
应用层
  应用层是OSI模型中的最高层,是直接面向用户的一层,用户的通信内容要由应用进程解决,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,并且保证这些不同类型的应用所采用的低层通信协议是一致的。
  应用层中包含了若干独立的用户通用服务协议模块,为网络用户之间的通信提供专用的程序服务。需要注意的是应用层并不是应用程序,而是为应用程序提供服务

(2)TCP/IP协议简介

  TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
  在层次结构上,TCP/IP参考模型与OSI参考模型都采用了分层体系结构,但是TCP/IP参考模型比OSI参考模型更简化,OSI参考模型划分了7层,而TCP/IP参考模型最多划分了5个层次,分别是物理层,数据链路层、网络层、传输层和应用层,将OSI参考模型中的高三层合并为一层统称应用层。有些情况甚至只有三个或四个层次。
TCP/IP与OSI区别图

  TCP/IP传输协议是严格来说是一个四层的体系结构,应用层传输层网络层网络接口层都包含其中。也就是说,其将OSI模型的应用层、表示层、会话层合并为应用层;而传输层和网络层过于重要,还是单独分层;物理层与数据链路层合并为网络接口层。
  其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网络接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。下面将依次介绍:

网络接口层/数据链路层

  以太网协议规定,接入网络的设备都必须安装网络适配器,即网卡,数据包必须是从一块网卡传送到另一块网卡。而网卡地址就是数据包的发送地址和接收地址,有了MAC地址以后,以太网采用广播形式,把数据包发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。

  所以链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

网络层

  IP协议
  网络层引入了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。
  ARP协议
  地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。其工作原理如下:ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出包头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
  路由协议
  首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。

  所以,网络层的主要工作是定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。

传输层

  链路层定义了主机的身份,即MAC地址,而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份。
  UDP协议
  UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了。
  TCP协议
  TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

  传输层的主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。

应用层

  理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差,因此,应用层定义了各种各样的协议来规范数据格式,常见的有http,ftp,smtp等,在请求Header中,分别定义了请求数据格式Accept和响应数据格式Content-Type,有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。

  所以应用层的主要工作就是定义数据格式并按照对应的格式解读数据。

(3)Wi-Fi与以太网

  Wi-Fi和以太网一个被称为无线局域网,一个被称为有线局域网,从名字里我们就可以看出,它们都是为了实现局域网而制定出的协议。
  在早期,有线局域网与无线局域网均有大量通信协议,不过随着时代的演变,有线局域网只有以太网存活了下来,几乎成为了有线局域网的代名词,而无线局域网同样几乎只有IEEE 802.11 无线LAN,也就是我们称的Wi-Fi存活了下来。
  WiFi属于局域网范畴,和以太网理念一样,底层使用MAC地址在局域网内通信。而以太网是链路层和物理层的规范(统称网络接口层),并且能够使用各种物理媒介,使用的是OSI模型;Wi-Fi属于网络接口层,使用的TCP/IP协议栈。

4.Wi-Fi的部分参数

  以下介绍WiFi的部分常用参数,这里只进行简单介绍,不深入解析。

  • MAC地址
      MAC(即Medium/MediaAccess Control, 介质访问控制),是数据链路层的一部分。MAC地址是烧录在NetworkInterfaceCard(即网卡,简称NIC)里的,它也叫硬件地址,共6字节(即48位,1byte = 8bit)。其中0-23位为组织唯一标志符(organizationally unique,简称OUI),是识别LAN(局域网)节点的标识(在有些抓包工具抓包的时候会将前三个字节映射成某种组织名称的字符,也可以选择不显示这种映射)。24-47位由厂家自己分配。

经过探讨,我们知道WLAN MAC地址有其唯一性,这就存在一个问题,通过获取WiFi设备发送的协议帧,即可知道厂家信息和设备出现的位置。造成用户的信息和隐私泄露。因此,Android系统和ios系统的产品对WiFi未连接时,扫描发送的协议帧采用随机MAC,即不使用设备的真实MAC,在一定场景下避免了设备信息泄露。

  • SSID
      Service Set Identifier,服务集标识,SSID技术可以将一个WLAN分为几个需要不同身份验证的子网络,每一个子网络都需要独立的身份验证,从而防止未授权用户进入子网络。
  • BSS
      Basic Service Set,基本服务集,常称为业务支撑系统,由一组相互通信的工作站组成,是802.11无线网络的基本组件。
  • Ad-hoc
      点对点网络连接模式。
  • BSSID
      一种特殊的Ad-hoc LAN的应用,每个BSS都会被赋予一个BSSID,其格式和MAC地址一样,是48位的地址格式,用来识别不同的BSS,同时一群计算机设定相同的BSS名称,即可自成一个group。它的作用和SSID类似,但是SSID是网络的名字,是给人看的,BSSID是给机器看的,作用类似MAC地址。
  • DS
      Distributed System,分布式系统,分布式系统属于802.11逻辑组件,负责将帧转发至目的地址,802.11并未规定其技术细节,大多数商业产品以桥接引擎合分步式系统媒介共同构成分布式系统。
  • Band(频段)
      频段即为频率的范围,例如2.4G的工作频段为2400-2483.5MHz,也就是说它的信号的频率范围在这个频段之中。
      如果一个AP支持两个频段的话,可以通过调制同时输出两个无线网络,一个工作在2.4G频段,一个工作在5G频段(频分复用,详情见《信号与系统》)。
  • Channel(信道)
      Channel是对频段的进一步划分,将5G或者2.4G的频段范围再划分为几个小的频段,每个频段称作一个Channel,例如5.18GHZ、Auto(DFS)等等,在信道不重叠的情况下,不同信道的数据是不会互相干扰的。
      为了避免信道相互干扰,每个国家都对可使用的信道做出了规定,只有部分信道是无需授权即可直接使用的(各个国家不同),大多数信道不能随意使用。另外,除了Wi-Fi,微波、红外线、蓝牙(使用802.15协议)的工作频段也都有在2.4GHZ范围内的,所以,它们传输的时候会对Wi-Fi传输造成干扰,因为两者在不同的协议下进行通信,所以互相将对方传输的信号识别为噪声。有时候配置AP的时候,Channel中有一个类似“Auto”的选项值,这表示打开AP的时候,AP自己Scan周围的环境,选择一个干扰最小的Channel来进行通信,当选择好了一个Channel的时候,一般就不会改变了。
    Channel Width(信道宽度)
      既然工作在2.4G的信号会有频段一说,那显然,信道也有一个频段,称为信道宽度。设置时需要注意信道宽度,较窄的信道会拥有更好的传输质量,信号噪声更少,但是传播距离较近;较宽的信道传播距离更远,但是信号噪声会更多。

三、Wi-Fi的使用与配置——以正点原子Wi-Fi模块为例

  我们可以将WiFi模块分为三种工作模式,分别为:

  • AP模式:Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接。
      对于该模式,根据应用场景的不同,可以设置 3 个子模式:TCP 服务器、TCP 客户端、UDP。
  • STA模式:Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。
      对于该模式,根据应用场景的不同,也可以设置 3 个子模式:TCP 服务器、TCP 客户端、UDP。
  • AP + STA模式:WiFi既作为无线WiFi AP,又作为无线STA,其他 WIFI 设备可以连接到该模块,模块也可以连接到其他无线网络。
      根据应用场景的不同,可以设置 9 个子模式:(TCP 服务器、TCP 客户端,UDP)||(TCP 服务器、TCP 客户端,UDP),也就是AP和STA各有三种模式。

TCP 和 UDP:这是两种以太网上的数据通信协议,TCP(传输控制协议)是一种可靠的通信协议,具备连接的概念,同时有着重发,连接建立,连接断开的过程,数据通信起来会更可靠,但是数据处理稍复杂,网络利用率不高;UDP(用户数据报)是一种无连接的通信协议,网络利用率高,通信处理简单,速度块,缺点是网络拥塞的情况下,可能会有丢包。

TCP Client:也叫 TCP 客户端,它会主动向服务器发起 TCP 连接请求,并在连接建立后维持这个连接,仅此一条连接。有两个关键参数,目标地址(也就是服务器地址,或者叫远程地址,可以是 IP 或者域名),目标端口(也叫做远程端口),这两个参数都是 TCP 客户端要连接到的目标服务器的参数。
TCP Server:也叫 TCP 服务器,它是被动等待客户端连接的工作形式,与 TCP Client 刚好是对立方,这两者连接建立之后,就可以进行数据通信。注意 TCP Server 可以接受多条客户端的连接,它有一个关键参数,本地端口。
UDP:类似于 TCP Client,但是无连接,它只会向目标服务器发送数据,或者是仅接收来自目标服务器数据。
UDP Server:类似于 TCP Client,但是无连接,与 UDP 方式不同,它可以接收来自任意 IP 的数据,而且只会向最近与它通信过的 IP 发送数据。

  对于AP + STA模式不做介绍,有需要请查看正点原子手册,其余将进行依次介绍:

1.AP模式

(1)AP模式——TCP服务器配置

发送指令作用
AT+CWMODE=2设置模块 WIFI 模式为 AP 模式
AT+RST重启生效
AT+CWSAP=“ATK-ESP8266”,“12345678”,1,4设置模块的 AP 参数:SSID 为ATK-ESP8266,密码为12345678,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=1开启多连接
AT+CIPSERVER=1,8086开启 SERVER 模式,设置端口为 8086
AT+CIPSEND=0,25向 ID0 发送 25 字节数据包

(2)AP模式——TCp客户端配置

发送指令作用
AT+CWMODE=2设置模块 WIFI 模式为 AP 模式
AT+RST重启生效
AT+CWSAP=“ATK-ESP8266”,“12345678”,1,4设置模块的 AP 参数:SSID 为 ATK-ESP8266,密码为12345678,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=0开启单连接
AT+CIPSTART=“TCP”,“192.168.4.XXX”,8086建立 TCP 连接到192.168.4.XXX:8086
AT+CIPMODE=1开启透传模式(仅单连接 client 时支持)
AT+CIPSEND开始发送数据

(3)AP模式——UDP配置

发送指令作用
AT+CWMODE=2设置模块 WIFI 模式为 AP 模式
AT+RST重启生效
AT+CWSAP=“ATK-ESP8266”,“12345678”,1,4设置模块的 AP 参数:SSID 为 ATK-ESP8266,密码为12345678,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=0开启单连接
AT+CIPSTART=“UDP”,“192.168.4.XXX”,8086建立 UDP 连接到192.168.4.XXX:8086
AT+CIPSEND=25向目标 UDP 发送 25 字节数据

2.STA模式

STA模式——TCP服务器配置

发送指令作用
AT+CWMODE=1设置模块 WIFI 模式为 STA 模式
AT+RST重启模块并生效
AT+CWJAP=“ALIENTEK”,“15902020353”加入 WIFI 热点:ALIENTEK,密码为:15902020353
AT+CIPMUX=1开启多连接
AT+CIPSERVER=1,8086开启服务器,端口号为8086
AT+CIPSEND=0,25向 ID0 发送 25 字节的数据

STA模式——TCp客户端配置

发送指令作用
AT+CWMODE=1设置模块 WIFI 模式为 STA 模式
AT+RST重启模块并生效
AT+CWJAP=“ALIENTEK”,“15902020353”加入 WIFI 热点:ALIENTEK,密码为:15902020353
AT+CIPMUX=0开启单连接
AT+CIPSTART=“TCP”,“192.168.1.XXX”,8086建立 TCP 连接到192.168.1.XXX:8086
AT+CIPMODE=1开启透传模式
AT+CIPSEND开始传输

STA模式——UDP配置

发送指令作用
AT+CWMODE=1设置模块 WIFI 模式为 STA 模式
AT+RST重启模块并生效
AT+CWJAP=“ALIENTEK”,“15902020353”加入 WIFI 热点:ALIENTEK,密码为:15902020353
AT+CIPMUX=0开启单连接
AT+CIPSTART=“UDP”,“192.168.1.XXX”,8086建立 UDP连接到192.168.4.XXX:8086
AT+CIPSEND=25向目标 UDP 发送 25 字节数据

  以上为本文所有内容,只对Wi-Fi进行了基础的知识了解,不过多深入了解协议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WiFi的原理以及正点原子WiFi模块的使用 的相关文章

  • 什么是星基增强系统SBAS

    SBAS xff1a 英文全称Satellite Based Augmentation System xff0c 中文意思是广域差分增强系统 xff0c 如果不知道这是什么意思 xff0c 那么说星基增强系统相信大家都知道 广域差分增强系统
  • GNSS PPP和PPK区别

    01 PPP PPP全称Precise Point Positioning xff0c 译为精密单点定位 xff0c 属于单点定位也叫绝对定位 xff0c 精密单点定位是指利用载波相位观测值以及由IGS等组织提供的高精度的卫星星历及卫星钟差
  • 三轴加速度计计算俯仰角、横滚角、偏航角

    pitch是俯仰角 xff0c 是 点头 xff0c xff08 在固定翼飞机中则由升降舵舵机控制 xff09 yaw是偏航角 xff0c 是 摇头 xff0c xff08 在固定翼飞机中则由方向舵舵机控制 xff09 roll是旋转角 x
  • 如何使用UBLOX ZED-F9P +4G获取千寻差分,实现厘米级定位同时回传到IP服务器

    格林恩德F9P 4G RTK模块 xff0c 集成高精度板卡ZED F9P以及4G模组 xff0c 可同时接收GPS xff0c 北斗 xff0c GALILEO GLONASS卫星系统的L1 L2频点 xff0c 结合高精度天线一体化设计
  • 小型RTK/LITE RTK/Mini RTK CR202(9P+4G+imu) 惯导 实现高精度厘米级定位,输出组合导航位置,定位数据回传服务器

    格林恩德 CR202 是一款小巧 迷你的RTK设备 xff0c 集成高精度板卡 ZED F9P 与4G EC20通信模组 xff0c 内置惯性导航IMU三轴加速度计 三轴陀螺仪 CAN收发器 xff0c 支持多种差分链路包括4G 电台 支持
  • 常用CORS账号设置方法(千寻CORS、中国移动CORS、六分CORS、北斗CORS、迅腾CORS)

    1 千寻CORS账号设置方法 2 中国移动CORS账号设置方法 3 六分CORS账号设置方法 4 北斗CORS账号设置方法 5 讯腾CORS账号设置方法 格林恩德专注GPS北斗高精度定位 北斗短报文通信与无线传输应用产品的开发与市场拓展
  • NTRIPClient_1.7 工具使用方法分享

    1 打开NTRIPClient 1 7软件 2 选择串口和波特率 xff0c 正确的与板卡或者模块连接 点击编辑 xff0c 进入串口配置界面 选择正确的端口和波特率 3 输入正确的差分账号 输入千寻差分账号地址 端口 用户名 账号密码 4
  • 导航卫星的时间系统

    1 GPS时间系统 xff08 GPST xff09 GPS系统是测时测距系统 时间在 GPS测量中是一个基本的观测量 卫星的信号 xff0c 卫星的运动 xff0c 卫星的坐标都与时间密切相关 对时间的要求既要稳定又要连续 为此 xff0
  • JT808协议介绍 --- 格林恩德 CR202 RTK 高精度车载定位器协议解读

    部标808又称为JT808 xff0c JT808标准的全称是 道路运输车辆卫星定位系统终端通讯协议及数据格式 808协议适用于GPS定位车载终端和监控平台之间的通信 当前市面上 xff0c 普通车辆监测设备所安装的GPS定位器 xff0c
  • C++析构函数调用顺序

    文章目录 析构函数工作过程 1 执行析构函数的函数体 2 如果该类中拥有类对象成员 xff0c 且类对象有析构函数 xff0c 则以类对象成员声明次序的相反顺序调用其析构函数 xff0c 销毁类对象成员 3 按原来构造顺序的相反顶序向上依次
  • TCP通信C++实现小例子

    TCP通信C 43 43 实现案例 https www bilibili com video BV1Dt411p74c t 61 1746 61 61 全部来自以上视频 xff0c 纯属搬运 xff0c 小可爱有问题可以举手提问哈 61 6
  • 串行通信简介

    一 串行通信与并行通信 计算机与外界的数据交换称为通信 xff0c 通信分为并行通信和串行通信两种基本方式 并行通信 串行通信 并行通信 xff1a 并行通信指各个数据位同时进行传送的数据通信方式 xff0c 因此有多少个数据位 xff0c
  • 使用寄存器点亮一个LED灯 普中科技stm32(stm32f1103zeb6)

    板子 xff1a 普中科技stm32F1 芯片stm32f1103zet6 1 程序如下 xff1a include 34 stm32f10x h 34 导入头文件 typedef unsigned int u32 typedef是系统关键
  • day 5 select服务器和客户端

    select客户端代码 xff1a include lt stdio h gt include lt string h gt include lt sys socket h gt include lt netinet in h gt inc
  • python Requests添加Auth和Cert

    最近通过postman发起另外一个项目的请求 xff0c 鉴权较为复杂 xff0c 首先需要设置cert xff0c postman中设置如下 xff1a 需要设置basic auth的参数 然后将接口返回的token放入auth的bear
  • STM32笔记(三)---寄存器映射--BSRR分析

    STM32笔记 xff08 三 xff09 寄存器映射 BSRR分析 GPIO与引脚区别 GPIO包含在引脚内 xff08 引脚内还有电源 晶振等特殊功能引脚 xff09 xff0c 除GPIO拓展内容即为单片机最小系统 GPIO功能如何检
  • ROS赵虚左6.5 Rviz中控制机器人模型运动_选了odom坐标系后小车变白不能动

    原因 xff1a 配置文件中的参考坐标不应该是base footprint xff0c 而是你自己小车最下面那个 小脚 的坐标系 xff0c 我的是footprint 所以把参考坐标换一下就可以了
  • 超声波传感器的基础

    超声波传感器已经有几十年的历史了 xff0c 但是由于它们的性能 灵活性和低成本 xff0c 它们仍然占据着传感市场的很大一部分 随着越来越多的产品实现了自动化 xff0c 随着机器人 自动驾驶汽车和无人驾驶飞机的出现 xff0c 需求进一
  • pthread_create未定义的引用

    在ubuntu使用gcc编译时出现 pthread create未定义的引用 问题 解决如下 xff1a 在编译时加入 l pthread 例如gcc thread c o thr l pthread 原因 xff1a pthread不是l
  • Linux下vscode实现调试

    1 安装好vscode xff0c 安装对应的插件 2 编写代码 xff0c 点击右上角的三角形 xff0c 生成对应可执行文件 3 点击菜单栏中的终端 配置任务 xff0c 选择 c c 43 43 xff1a GCC build act

随机推荐

  • 二进制数与十进制之间的转换以及使用一个函数实现任意进制之间的转换

    其他进制转为十进制都可以实现 xff0c 只需要将函数中的10和2换掉你需要的就行 include lt stdio h gt include lt math h gt 1 二进制转换为十进制 int twoConvertTen long
  • vscode配置C语言编译调试的方法

    一 安装GCC 官方下载 如果你能从在线安装 xff0c 那最好就在线安装吧 不过在线安装太容易中断失败了 如果你能连上官网 xff0c 也可以选择从官网去下载离线安装包 https sourceforge net projects min
  • C语言之补漏(1)

    typedef 1 define与typedef区别 xff1f 相比起宏定义的直接替换 xff0c typedef是对类型的封装 xff08 通俗说就是对类型起一个别名 xff09 2 typedef可以给多个别名 typedef int
  • 关于学习如何组装基于F4V3S飞控的竞速穿越机

    广西 河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来自河池学院 智控无人机小组 创作时间2020 8 22 组装一架穿越机 xff0c 你需要的一些最基本的 xff0c 能让它飞起来的配件有 xff1a 机架
  • STM32—串口

    串口介绍 串行接口简称串口 xff0c 也称串行通信接口或串行通讯接口 xff08 通常指COM接口 xff09 xff0c 是采用串行通信方式的扩展接口 串行接口 xff08 Serial Interface xff09 是指数据一位一位
  • 2021电赛元件清单(评论区有题目预测)

    2021 年全国大学生电子设计竞赛仪器设备和主要元器件及器材清单 本科组 1 仪器设备清单 数字示波器 xff08 100MHz xff0c 双通道 xff09 函数发生器 xff08 50 MHz xff0c 双通道 xff09 任意波信
  • 通过TCP实现客户端与服务端之间通信

    客户端发送的消息 xff0c 服务端接收并在终端中显示出来 服务端代码 xff08 server c include lt stdio h gt include lt sys socket h gt include lt netinet i
  • Qt导入Opencv出现undefined reference to cv::xxx

    Qt配置Opencv在Qt运行时报错undefined reference to cv xxx Face Recognizer报错 FaceRecognizer load const char 41 报错 首先 xff0c 如果出现cv x
  • ESP32 之 ESP-IDF 教学(十二)WiFi篇—— LwIP 之 TCP 通信

    本文章 来自原创专栏 ESP32教学专栏 基于ESP IDF xff0c 讲解如何使用 ESP IDF 构建 ESP32 程序 xff0c 发布文章并会持续为已发布文章添加新内容 xff01 每篇文章都经过了精打细磨 xff01 通过下方对
  • ACWING 799. 最长连续不重复子序列 (入门) (双指针算法)

    给定一个长度为 n 的整数序列 xff0c 请找出最长的不包含重复的数的连续区间 xff0c 输出它的长度 输入格式 第一行包含整数 n 第二行包含 n 个整数 xff08 均在 0 105 范围内 xff09 xff0c 表示整数序列 输
  • STM32串口通信晶振导致问题出现

    STM32串口通信问题 关于stm32串口通信的问题 xff0c 比较常见的主要是以下几个问题 xff1a 1 xff0c 因为波特率不同导致通信时出现乱码 xff0c 这是一个比较常见的问题 xff0c 也是比较容易发现和解决的问题 2
  • 解决ERROR: cannot launch node of type [move_base/move_base]

    最近拿了别人的程序跑 xff0c 直接将工作空间git了过来 xff0c 结果发现提示错误 xff1a ERROR cannot launch node of type move base move base Cannot locate n
  • 基于单片机控制的开关电源设计

    文末下载完整资料 1 概述 1 1 课题来源及意义 电源技术是一种应用功率半导体器件 xff0c 综合电力变换技术 现代电子技术 自动控制技术的多学科的边缘交叉技术 随着科学技术的发展 xff0c 电源技术又与现代控制理论 材料科学 电机工
  • Hikvison对接iSecure Center时获取Appkey和Secert、不显示API网关、预览时提示网络请求失败

    场景 SpringBoot 43 Vue 43 iSecure Center xff08 海康综合安防管理平台 xff09 实现视频预览 xff1a SpringBoot 43 Vue 43 iSecure Center xff08 海康综
  • request和response

    文章目录 前言一 request功能1 获取请求行数据 xff08 1 xff09 方法 xff08 2 xff09 获取请求头数据 xff08 3 xff09 获取请求体数据 2 其他功能 xff08 1 xff09 获取请求参数通用方式
  • C++ Primer Plus 学习笔记(一)

    目录 第二章 开始学习C 43 43 1 主函数 2 预处理器 3 endl 第三章 处理数据 1 简单变量 2 整型 3 C 43 43 初始化 xff1a 4 字符 5 bool 6 const限定符 7 浮点数 8 算数运算符 9 类
  • 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信

    文章目录 前言一 ESP8266模块与STM32连接二 单片机代码三 总结 前言 承接上文WIFI上位机部分 xff1a 上位机 通过WIFI上位机与网络调试助手通信绘制曲线 xff0c 现阶段实现了STM32单片机与ESP8266WIFI
  • Linux C++服务器项目——项目实战1(理论知识)

    牛客 C 43 43 高并发服务器开发 参考笔记 1 阻塞 非阻塞 同步 异步 网络lO 2 Unix Linux上的五种lO模型a 阻塞blockingb 非阻塞non blocking NIO c IO复用 IO multiplexin
  • 网络编程传输层——UDP通信

    何为传输层 xff1f 在物理层 数据链路层 网络层解决了主机和主机之间能够发送接收数据 xff0c 但是在计算机网络中 xff0c 主机的通信主体还是进程 xff0c 而传输层则解决应用进程的通信 xff0c 所谓传输层协议也是端对端协议
  • WiFi的原理以及正点原子WiFi模块的使用

    本文主要用于记录WiFi的部分协议 原理 xff0c 以及如何使用正点原子的WiFi模块 文章名 xff1a WiFi的原理以及正点原子WiFi模块的使用 作者 xff1a 遮瑕 注 xff1a 本文大量引用 WIFI基本知识整理 以及百度