上一篇802.11的文章主要讲了帧的基本结构和组成字段,这篇文章主要讲不同类型帧的成帧细节。以太网的帧结构非常简单,只要为帧加上前导码、寻址信息并在结尾加上验证码即可,802.11成帧就比较复杂了,

802.11的帧主要有三种类型:

数据帧(data frame):负责在工作站之间搬运数据,它可能会因为所处的网络环境不同而有所差异。

控制帧(control frame):通常与数据帧搭配便用,负责区域的清空、信道的取得、载波监听的维护、在收到数据时予以确认等功能,借此来提高sta之间的数据传送可靠性。

管理帧(management frame):负责监督,主要用来加入或退出无线网络以及处理接入点之间关联的转移事宜。

  • 数据帧

不同的数据帧可以根据功能进行分类,第一种可以分为用于基于竞争服务的数据帧和用于无竞争服务的数据帧,第二种是携带数据的数据帧和未携带数据的数据帧。

数据帧的Duration字段是用来记录网络分配矢量(NAV)的值的,访问媒介的时间限制由NAV来指定,数据帧的Duration字段的设定必须依循四项规范:

1.无竞争周期所传递的任何帧必须将Duration字段设定为32768。此规范适用于无竞

争周期所传递的任何数据帧。

2.目的地为广播或组播地址的帧(Address 1字段设定了组位)的持续时间为0。此类帧并非原子交换( atomic exchange)过程的一部分,接收端也不会加以确认,因此基于竞争的媒介访问可以在广播或组播数据帧结束后立即开始。NAV在帧交换过程中用来保护对传送媒介的访问。既然广播或组播帧之后不会有来自链路层的确认,因此没有必要为后续帧锁定媒介使用权。

3.如果帧控制字段中的More Fragments(更多片段)位为0,表示该帧已无其余片段。最后的帧片段只需为本身的确认预订媒介使用权,之后就可以恢复基于竞争的访问了。Duration字段会被设定为传送一个短帧间间隔及片段响应所需要的时间。

4.如果Frame Control字段的More Fragments位被设定为1,则表示其后还有帧片段。因此,Duration字段便会被设定为传送2个确认加上3个短帧间间隔及下一个帧片段所需要的时间。为非最终片段设定NAV的方式本质上与RTS相同,所以也称为虚拟RTS。

地址字段的编号与功能取决于设定了哪个DS(分布式系统)位,也就是说地址字段的功能间接的取决于当前的网络类型,下图表示地址字段在数据帧处于不同网络类型时的不同功能的展示:

Address1表示帧接收端的地址,我们在通常情况下会将接收端直接理解为目的地,然而并不是总是这样,目的地是负责处理帧中网络层封包的sta,接收端是负责将无线电波解码为802.11帧的sta。如果Address 1字段被设为广播或组播地址,则必须同时检查BSSID(基本服务集标识符)。工作站只会响应来自同--个基本服务集的广播或组播﹐至于来自其他不同BSS的则加以忽略。Address 2是是发送端的地址,用来发送确认信息。发送端(transmitter)不见得就是来源地(sender)。来源地是指产生帧中网络层协议封包的工作站;而发送端则是负责将帧传送至无线链路。Address 3字段则是供接入点与分布式系统过滤之用,不过该字段的用法取决于所使用的网络类型。

当通过802.11连接至服务器时,由客户端将帧传给服务器,地址字段的用法如上面表中的第二行(To AP),具体如图:

802.11对来源地与发送端以及目的地与接收端有明确的区别。将帧送至无线媒介的发送端不见得就是帧的产生者。目的地地址与接收端地址同样有此区别。接收端可能只是中间目的地,而帧只有到达目的地,才会由上层的协议加以处理。如果帧的目的地位于分布式系统(distribution system,简称DS),则客户端既是来源地也是发送端。至于无线帧的接收端则是接入点,不过该接入点只是个中间目的地。当帧送达接入点时,该帧会经分布式系统转送给服务器。因此,分布式是接收端,而服务器才是最终目的地。在BSS中,AP会以自身无线接口创建相应的BSS,这也就是为什么Address1会被设置成BSSID的原因。

当服务器响应客户端的时候,帧由AP传送给客户端,对应上表第三行(From AP),具体如下图:

由于帧产生于服务器,所以帧的源地址(Source Address,简称SA)就是服务器的MAC地址,当帧通过AP传送出去的时候,AP会以自己的无线接口作为发送端地址(Transmitter Address,简称TA),最后通过AP传送到客户端时,此时的客户端既是目的地也是接收端。

上表的第四行展示了地址字段在无线分布式系统(wireless distribution system,简称WDS)中的用法。无线分布式系统有时也称为无线桥接器(wireless bridge),具体如下图:

两条有线网络通过扮演无线桥接器角色的基站彼此相连。从客户端送至服务器的帧会经过802.11 WDS。该无线帧的源地址与目的地地址依然对应到客户端与服务器的地址。不过,这些帧还是会区分无线媒介上帧的发送端与接收端。对于由客户端送至服务器的帧而言,发送端就是客户端这边的接入点,而接收端就是服务器这边的接入点。将来源地与传送端分开的好处是,当服务器这边的接入点送出必要的802.11响应给对方的接入点时,不会干扰到有线链路层。

数据帧的类型主题

802.11具有不同类型的帧,要根据竞争还是无竞争服务来选择使用哪种帧,针对效率考虑,无竞争帧中可以纳入其他功能,以下是常见的数据帧类型:

Data(数据):

子类型为Data的帧只有在基于竞争的访问周期才会被传送,这类帧只有一个目的就是在sta之间传送帧主体

Null(空):

Null帧看起来有点奇怪。它是由MAC标头与FCS标尾所组成。在传统的以太网中,Null帧无非就是额外的负担。在802.11网络中,sta会利用Null帧来通知AP改变省电状态。当sta进入休眠状态时﹐AP必须开始为之缓存帧,当STA通过PS-null-Poll机制 wake up后,解析到beacon中有自己的缓存帧,则会发送一个null帧给AP,并将PS位置为0,表示不节能了,需要获取所有缓存的数据,AP收到这个null帧后,从缓存队列中依次取出一个缓存数据帧发送给sta,直到所有的缓存数据帧发送完,当然最后一个data帧的more data位会被置0。sta收到所有缓存帧后,直接发一个null帧给AP,并将PS位置为1,表示自己再次进入PS状态。Null帧的结构及用法如下图所示:

数据帧的封装

数据帧的形式取决于网络的类型。帧究竟属于何种类型,完全取决于subtype(子类型)字段,而与其他字段是否出现在帧中无关。以下是常用的数据帧:

IBSS帧:

From AP帧:

To AP帧:

WDS中的帧:

总结来说这四种帧的结构,DurationID字段都位于FC后面,每个帧值得关注的是它们的SA、TA、DA由于在每个帧中所处的位置都不同,它们所生成的功能也各不相同。受到链路层安全协议保护的帧并不算新的帧类型。当帧经过加密处理后,Frame Control(帧控制)字段的Protected Frame位会被设定为1,至于Frame Body(帧主体)字段则是加密标头开始,这取决于所使用的是何种协议。

  • 控制帧

控制帧主要用于协助数据帧的传递,它们可用来管理无线媒介的访问(但非媒介本身),以及提供MAC层的可靠性。下图为控制帧中Frame Control字段的结构图:

接下来对每个字段的意义进行介绍:

Protocol:表示当前协议版本

Type:控制帧的类型标识符

Subtype:表示控制帧的子类型

ToDSFromDS:控制帧只能由无线sta产生,而DS并不会收发控制帧,所以上图中的这两位都为0

MoreFragments:控制帧并可能被分段,所以这一位也为0

Retry:重试位,由于控制帧并不像数据帧或管理帧一样需要等待重新发送,所以这一位也为0

PowerManagement(电源管理位):这一位是完成当前的帧交换的时候传送端的电源管理状态

More Data:此位只用于管理帧和数据帧中,控制帧中必然为0

Protected Frame:受保护帧位,由于控制帧不会经过加密,所以这一位必然为0

Order:控制帧是原子帧交换的组成要件,因此必须依序传送,所以这一位必然为0

RTS(请求发送)帧

RTS帧可用来获取媒介的访问控制权,以便于传送“大型帧”,至于“大型帧”的定位取决于RTS threshold(阈值)定义。和所有的控制帧一样,RTS只包含帧头,帧主体中并未包含任何数据,帧头之后是FCS(帧校验码),RTS帧的结构如下所示:

RTS帧的MAC标头主要包括以下四个字段:

Frame Control(帧控制):FC字段没有任何特殊之处,帧的subtype被设定为1011,代表着RTS

Duration(持续时间):sta预约媒介时间,RTS帧的传送者必须要计算在RTS帧结束之后还需要多少时间来进行帧交换

Address1字段:RA(receive address),接收大型帧的sta地址

Address2字段:SA(source address),RTS帧的发送端地址

CTS(清除发送)帧

CTS帧有两种目的,起初CTS帧仅用于回复RTS帧,如果之前没有RTS出现,就不会产生CTS。后来,CTS帧被802.11g保护机制用来避免干扰较旧的sta。CTS帧格式如下图:

CTS帧的MAC标头由三个字段组成:

Frame Control(帧控制):帧的subtype被设置为1100,代表CTS帧

Duration(持续时间):RTS帧会为整个RTS-CTS-frame-ACK交换过程预留媒介使用时间

Address1字段:RA,接收端地址。CTS帧的接收端即为之前RTS帧的发送端,因此MAC会将RTS帧的发送端地址复制到CTS帧的接收端地址。802.11g保护操作所使用的CTS帧会被传送给发出RTS的工作站,而且只用来设定NAV。

ACK帧

ACK帧就是MAC以及任何数据的传送(一般数据的传送、RTS/CTS交换前的帧、帧片段)所需要的肯定确认,ACK帧结构及MAC标头结构如下图:

MAC标头由以下三个字段组成:

Frame Control字段:subtype的值设定为1101,代表ACK帧

Duration字段:根据ACK信号在整个帧交换过程中所处的位置,duration(持续时间)的值可以有两种设定方式。在完整的数据帧及一连串帧片段的最后一个片段中,duration会被设定为0。数据发送端会将Frame Control(帧控制)字段中的More Fragments(更多片段)位设定为0,表示数据传送已经结束。如果More Fragments位为0,表示整个传送已经完成,没有必要再延长对无线信道的控制权﹐因此会将duration设定为0。

如果More Fragments位为1,表示尚有帧片段在传送中。此时Duration字段的用法和CTS帧中的 Duration字段相同。传送ACK以及其短帧间间隔所需要的时间,将从最近的帧片段所记载的duration(持续时间)中减去。如果不是最后一个ACK帧,duration的计算方式就类似CTS duration的计算方式。事实上,802.11的规范说明书将ACK帧中的duration 设定称为虚拟CTS。

Address1字段:接收端地址是由所要确认的发送端帧复制而来。就技术而言,它是从所要确认的帧的Address 2字段复制而来。确认主要是针对数据帧、管理帧以及PS-Poll帧。

PS-Poll(省电-轮询)帧

当一个移动式sta从省电模式中醒来的时候便会发送一个PS-Poll帧给AP来取得AP中的缓存帧,PS-Poll帧结构如下图:

PS-Poll帧的MAC标头由四个字段组成:

Frame Control字段:subtype的值为1010,代表PS-Poll帧

AID(关联标识符)字段:PS-Poll帧会以MAC标头的第三位与第四位来代表关联标识符(association ID)。关联标识符是接入点指定的一个数值,用来识别关联。将此标识符放入帧中,可让接入点找出为其(移动式sta)缓存的帧。

Address1:当前BSS的BSSID

Address2:Transmitter Address(传送端地址),PS-Poll帧发送端的MAC地址

  • 管理帧

在802.11规范书说明书中,管理帧占了很大的篇幅,接下来会详细介绍管理帧。

各式各样的管理帧只为了给有线网络提供简单的服务,对于有线网络来说,识别一台sta并非难事,不过重点是在建立新的连接时可通过个人检查来进行身份验证,无线网络必须建立一些管理机制才能提供类似的功能。802.11将整个过程分解为三个步骤。寻求连接的移动式sta必须首先找出可供访问的兼容无线网络。在有线网络中,这个步骤相当于在墙上找出适当的插座。其次,网络系统必须对移动式sta进行身份验证才能决定是否让sta与网络系统连接。在有线网络方面,身份验证是由网络系统本身提供。如果必须通过网线才能够取得信号,那么能够使用网线至少也算得上是一种认证。最后,移动式sta必须与AP建立关联,这样才能访问有线骨干网络,这相当于将网线插到有线网络系统。

管理帧结构

所有管理帧的MAC标头结构都一样,而与帧的子类型(subtype)无关,管理帧会使用信息元素(带数字标签的数据块)来与其他系统交换信息。

地址字段

第一个地址字段是给帧的目的地址使用的,当sta收到管理帧之后必须加以查验,只有在广播或组播帧来自当前sta所关联的BSSID时,他们才会被送进MAC管理层,唯一的例外是beacon帧,因为它是用来宣布802.11网络存在的。

持续时间

管理帧使用duration字段的方式与其他帧没有不同:

1、无竞争周期内传送的任何帧都会将duration设置为32768

2、基于竞争的访问周期内利用DCF所传送的帧会通过Duration字段防止别人访问媒介,以确保原子帧交换( atomic frame exchanges)得以完成。

a.如果是广播或组播帧(目的地地址为组地址),则持续时间会设定为0。广播与组播帧无需得到确认,因此NAV无需防止别人访问媒介。

b.如果不是最终片段,则持续时间会设为3个SIFS加上下一个片段及其确认所需

要的微秒数。

c.最终帧片段的duration会设定为一个响应加上一个SIFS所需要的时间。

帧主体

帧主体中的大部分字段如果使用长度固定的字段,就称为固定字段;如果字段长度不定就称为信息元素,各种信息元素的数据字段都有特定的解释方式

长度固定的管理帧组件

上面已经说了,长度固定的字段被称为固定字段,不固定的称为信息元素,字段本身并无标头,可与帧主体的其他部分进行区别,长度与次序都固定,因此就不需要字段标头来界定。接下来简单介绍可能出现的10种长度固定的字段:

字段名称

功能及特点

Authentication Algorithm Number字段

身份验证算法编号字段,占用了两个字节,此字段代表发生关联之前,802.11层的最初认证过程所使用的认证类型

Authentication Transaction Sequence Number字段

身份验证处理序列号字段,由两个字节组成,用以追踪身份验证的进度,值介于1~65535之间,不可为0

Beacon Interval字段

信标间隔字段,字段长度16位,用来宣布802.11网络的存在,供移动式sta监听,该字段通常会被设定为100个时间单位,也就是100ms或0.1s

Capability Information字段

性能信息字段,字段长度16位,传送beacon信号的时候用来通告网络具备何种性能,该字段也可使用在Probe Request和Probe Response帧中,

Current AP Address字段

当前AP地址字段,移动式sta可以通过此字段来表明关联当前的AP的MAC地址,该字段的用途就是便于关联与重关联

Listen Interval字段

聆听间隔字段,处于睡眠中的sta会定期聆听当前AP中是否缓存了自己的帧,每次聆听的间隔便是Listen Interval字段控制的,Listen Interval其实也是由Beacon Interval来作为单位计算出睡眠的时间的

Association ID字段

关联标识符字段,当sta与一个AP关联时,就会被赋予一个Association ID便于协助控制和管理,

Timestamp字段

时间戳字段,可用来同步BSS中的sta,BSS的主计时器会定期传送自己作用的微秒数

Reason Code字段

原因码字段,当对方不适合加入到自身网络的时候,工作站会发送Disassociation(取消关联)或Deauthentication(解除身份验证)帧作为响应,这些帧中通过16位的Reason Code来声明原因,由于数据较多,可自行查询

Status Code字段

状态码字段,代表某项操作的成功或失败,成功即为0,失败代码较多,可自行查询

管理帧的信息元素

信息元素刚刚在上面有提到,它是一种长度不固定的字段,它主要由三部分组成,通常包含一个Element ID(字段标识符)字段、一个Length(长度)字段以及一个长度不定的字段,结构图如下:

SSID信息元素

当Element ID为0的时候,就代表当前的信息元素为Service Set Identity(SSID)信息元素,网管人员通常会以字符串来指定SSID,SSID其实是由字节组成的字符串,用来标识所属网络的BSSID,试图加入当前网络的sta可以扫描当前区域的所有网络,然后以特定的SSID加入。

Supported Rates信息元素

802.11网络可以通过Supported Rates信息元素来指定其所支持的传输速率,当移动式sta试图加入到网络时,会先查看该网络使用的传输速率,有些速率是强制的有些是选择的,强制的速率需要所有的移动式sta必须能够支持。

FH Parameter Set信息元素

跳频参数集信息元素,在了解该信息元素前需要先了解载波频率的概念。

载波频率:在信号传输的过程中,并不是将信号直接进行传输,而是将信号负载到一个固定频率的波上,这个过程称为加载,这样的一个固定频率。严格的讲,就是把一个较低的信号频率调制到一个相对较高的频率上去,这被低频调制的较高频率就叫载波频率。

而和这个信息元素相关的跳频的概念就是通过技术手段使载波频率不断跳变而扩展的方法,可以有效地避免干扰,发挥通信效能。跳频参数集信息元素结构如下图:

需要关注的结构图中的后四个字段:

Dwell time(驻留时间):802.11 FH网络会在信道与信道之间跳跃。停留在每个信道上的时间称为dwell time(驻留时间)。驻留时间是以时间单位(time unit,简称TU)来表示。

Hop Set(跳频组合):802.11跳频物理层定义了若干跳频模式 ( hopping pattern)。此字段的长度为1个字节,代表使用的跳频模式组合。

Hop Pattern(跳频模式):sta从跳频集中挑出一种跳频模式,字段长度为1个字节,表示使用的跳频模式

Hop Index(跳频索引):每种跳频模式均包含一组跳频序列。此字段的长度为1个字节,代表当前位于跳频序列的哪一点上。

信息元素还包括DS Parameter Set(直接序列参数集)、Traffic Indication Map(传输指示映射)、CF Parameter Set(无竞争参数集)、IBSS Parameter Set(IBSS参数集)、Country、Hopping Pattern Parameter(跳频模式参数)与Hopping Pattern Table(跳频模式表)等等,这里不一一详细介绍了。

管理帧类型

管理帧有好几种分别负责链路层的各种维护功能

管理帧名称

功能及特点

Beacon帧

用来声明某个网络的存在,在BSS中通过AP来进行传送,所以sta不能离AP太远,否则接收不到Beacon帧

Probe Request帧

移动式sta会通过Probe Request帧来探测当前环境中有哪些网络

Probe Response帧

移动式sta在发送Probe Request帧来探测之后,收到该请求的工作站会反馈给sta一个Probe Response帧

IBSS的通知传输指示消息(ATIM)帧

由于IBSS中没有AP所以无法缓存帧,IBSS中的sta如果为处于休眠状态的接收者缓存帧就会在传送期间送出一个ATIM帧来提醒对方设备有信息待传

Disassociation帧与Deauthentication帧

Disassociation帧用来终结一段关联关系,Deauthentication帧用来终结一段认证关系

Association Request帧

一旦移动式sta找到兼容网络并且通过身份认证,便会发送Association Request帧试图加入网络

Reassociation Request帧

位于相同扩展服务区域,但在不同基本服务区域之间游走的移动式工作站若要再次使用分布式系统,必须与网络重新关联。如果工作站暂时离开接入点所涵盖的范围,之后要重新加人的时候也必须重新关联。Association Request(关联请求)与Reassociation Request(重新关联请求)之间的差别在于,后者包含移动式工作站当前所关联的接入点的地址。拥有这项信息可让新旧接入点彼此联系以及转移接入点数据。转移项目包括先前连接的基站所缓存的帧。

Association Response帧与Reassociation Response帧

当移动式工作站试图连接接入点时,接入点会回复一个Association Response(关联响应)或Reassociation Response(重新关联响应)帧

Authentication帧

在802.11网络发展初期,工作站使用共享密钥以及Authentication帧进行身份验证。

Action帧

802.11h中添加了Action帧用来触发测量动作

帧等级

所能传送的帧类型依关联状态与身份验证状态的不同而有所不同。工作站可能已经过认证或未经认证,也可能己经关联或尚未关联。这两个变量的组合有三种可能状态,结果构成了802.11的网络发展层次:

1、初始状态,未经认证且尚未关联(状态1)

2、已经认证,但尚未关联(状态2)

3、已经认证且已经关联(状态3)

帧可以被划分为三种等级,在状态1可以传递第一级帧,在状态2可以传递一、二级帧,在状态3可以传递一、二、三级帧

第一级帧

可以在任何状态下传递,它让802.11中的sta可以进行基本操作,常见的第一级帧如下表:

第二级帧

sta只有在经过身份验证之后才能够传递第二级帧,而且第二级帧只能用于状态2与状态3,下表列出了所有的第二级帧:

第三级帧

使用时机是在sta认证成功并且与AP关联之后,一旦sta进入状态3就可以使用分布式系统服务也可以和AP范围以外的对象进行通信,还可以通过PS-Poll帧来享用省电模式。

80211无线网络权威指南(四)之成帧细节相关推荐

  1. 80211无线网络权威指南(七)之RSN、TKIP与CCMP

    802.1X所提供的认证与密钥管理框架解决了WEP设计上的两个弊端,其他尚待解决的是WEP的密钥缺乏机密性.802.11i采用双轨并行的做法以解决链路层加密协议的弱点问题.802.1li组成自两种新的 ...

  2. 80211无线网络权威指南(三)之MAC

    一.MAC 802.11规范的关键在于MAC(媒介访问控制层),位于物理层之上,控制数据的传输,负责核心成帧操作以及与有线骨干网络之间的交互.不同的物理层可能提供不同的传输速度,不过物理层之间必须彼此 ...

  3. 《802.11无线网络权威指南》摘录

    <802.11无线网络权威指南>摘录 ---------------------------- 第一.二章: 无线频谱管控: 美国:FCC联邦通信委员会 欧洲:FRO欧洲无线通信局 其他地 ...

  4. 802.11基本概念介绍【802.11 无线网络权威指南学习总结1】

    802.11基本概念介绍[802.11 无线网络权威指南学习总结1] 1.802.11网络技术介绍 IEEE 802 规格的重心放在 OSI 模型最底下的两层,因为它们同时涵盖了实体(physical ...

  5. 读书笔记——《802.11无线网络权威指南》

    读书笔记--<802.11无线网络权威指南> 文章目录 读书笔记--<802.11无线网络权威指南> 概要 摘要 概念 MAC层 成帧细节 用户认证 概要 秉承"不动 ...

  6. 802.11 无线网络权威指南-第1章 无线网络导论

    相关背景知识 1.IEEE 802网络(Ethernet) 以太网是当今现有局域网采用的最通用的通信协议标准.该标准定义了在局域网(LAN)中采用的电缆类型和信号处理方法.以太网在互联设备之间以10~ ...

  7. 802.11无线网络权威——(三、MAC基础)

    MAC位于各式物理层之上,控制数据的传输.它负责核心成帧操作(core framing operation)以及与有线骨干网络之间的交互. 802.11采用载波监听多路访问 / 冲突避免(carrie ...

  8. WEP无线网络破解指南

    背景&前提 本文所阐述的破解技术是基于WEP格式的加密无线网络. 本文假定你使用的是Ubuntu Linux操作系统,Windows平台下所用方法与本文类似. 本文假定你有一个可以接收无线信号 ...

  9. windows无法连接到某个wifi_windows无法连接到无线网络怎么办【解决方法】

    无论是win7.win8还是win10系统的电脑,人们在使用它的时候,总会先开机,然后再去连接无线网络.当然,在连接的过程中也可能产生各种各样的问题,例如说无法正常连接到无线网络.常见的原因有密码输入 ...

最新文章

  1. Mysql探究之null与not null
  2. 一些知识点的整理以及面试题记录
  3. Django值应用和分布式路由
  4. python tab补全
  5. TensorFlow 是一个用于人工智能的开源神器
  6. 编程之美读书笔记1.8 - 小飞的电梯调度算法
  7. 拓端tecdat|matlab贝叶斯隐马尔可夫hmm模型实现
  8. R-CNN学习笔记2:Rich feature hierarchies for accurate object detection and semantic segmentation
  9. ios知识整理 (未完成)
  10. jquery简单的选择添加下拉列表
  11. 第21章 分层架构软件测试
  12. 整数进制转换——输入十进制整数和欲转换的进制数r,将十进制数转换为r进制数的Python程序
  13. php之RSA加密解密
  14. 理论物理极础附录:有心力和行星轨道
  15. 俄罗斯方块中方块的旋转变形
  16. 腾讯企业版邮箱服务器类型,腾讯邮箱企业版怎样开通,企业邮箱服务器系统申请...
  17. 霍普金斯计算机专业研究生如何,约翰霍普金斯大学计算机科学研究生项目详情!_托普仕留学...
  18. ascii转utf8 php,PHP 将ASCII转换为UTF-8编码
  19. Typora初步学习
  20. 外部表不是预期的格式错误

热门文章

  1. windows引导过程以及多系统引导原理
  2. 幼儿使用计算机需要注意事项,儿童玩电脑的优缺点及注意事项
  3. 【论文阅读】基于混淆的加强网络安全的方法
  4. [转载] 七龙珠第一部——第041话 玛斯鲁塔的毁灭
  5. 手机触摸pass测试软件,PaperPass手机版
  6. 2021哈工大软件构造Lab3
  7. oracle的left join和inner join的区别
  8. java关联宠物商店项目_Java实现宠物商店管理
  9. K210学习记录(3)——kmodel生成与使用
  10. c语言程序流程控制(下)