WIFI:802.11协议帧格式
802协议桢格式
802.11和Wi-Fi技术并不是同一个东西。Wi-Fi标准是802.11标准的一个子集,并且是Wi-Fi联盟负责管理
802协议桢格式:
协议 | 发布年份/日期 | Op.标准频宽 | 实际速度 (标准) | 实际速度(最大) | 半径范围(室内) | 半径范围(室外) |
---|---|---|---|---|---|---|
Legacy | 1997 | 2.4-2.5 GHz | 1 Mbit/s | 2 Mbit/s | ? | ? |
802.11a | 1999 | 5.15-5.35/5.47-5.725/5.725-5.875 GHz | 25 Mbit/s | 54 Mbit/s | 约30米 | 约45米[3] |
802.11b | 1999 | 2.4-2.5 GHz | 6.5 Mbit/s | 11 Mbit/s | 约30米 | 约100米 |
802.11g | 2003 | 2.4-2.5 GHz | 25 Mbit/s | 54 Mbit/s | 约30米 | 约100米 |
802.11n | 2009 | 2.4 GHz or 5 GHz bands | 300 Mbit/s (20MHz*4 MIMO) | 600 Mbit/s (40MHz*4 MIMO) | 约70米 | 约250米 |
802.11p | 2009 | 5.86-5.925 GHz | 3 Mbit/s | 27 Mbit/s | 约300米 | 约1000米 |
802.11ac | 2011.11 | 5 GHz | 433Mbit/s, 867Mbit/s (80MHz), (160MHz为可选) | 867Mbit/s, 1.73 Gbit/s, 3.47 Gbit/s, 6.93 Gbit/s (8 MIMO, 160MHz) | 约35米[4] |
无线网络协议桢的分类
类型和字段定义了无线网络的三种类型,分别是:
1: Management frames,它的主要作用是维护接入点和无线客户端之间的通信,管理该框架拥有以下子类型:
Authentication
De-authentication
Association Request
Association Response
Reassociation Request
Reassociation Response
Disassociation
Beacon
Probe Request
Probe Response
2: Control frames
控制帧是负责客户端和接入点的数据交换,类型为:
Request to Send (RTS) Clear to Send (CTS) Acknowledgement (ACK)
这些数据可以在一些报文请求中看到。
3: Data frames
这些不同类别的数据包被统称为"数据包类型"。
WLAN有以下三种网络拓扑结构
1) 独立基本服务集(Independent BSS, IBSS)网络(也叫ad-hoc网络)
2) 基本服务集(Basic Service Set, BSS)网络
3) 扩展服务集(Extent Service Set, ESS)网络
1) AD-Hoc网络
win7自带的AD-Hoc组建功能,可以让我们很方便的在一个小范围内快速组建"局域网",联网打游戏啥的很方便
2) BSS网络
对于个人PC来说,使用最多的所谓"无线Wi-Fi"指的就是BSS网络模式,我们通过AP(Access Point)接入点来接入网络
3) ESS网络
其中,ESS中的DS(分布式系统)是一个抽象系统,用来连接不同BSS的通信信道(通过路由服务),这样就可以消除BSS中STA与STA之间直接传输距离受到物理设备的限制。
无线网络协议桢的三种类型
我们知道数据链路层是一个很靠近底层的通信协议,它使用Bit来表示信息(也使用Bit来标识数据包的开始和结束),所以数据链路层的协议格式并没有强制要求一个固定的长度,即802.11协议长度是可变的。不同功能的数据帧长度会不一样。这一特性说明mac802.11数据帧显得更加灵活,然而,也会更加复杂。
mac 802.11的数据帧长度不定主要是由于以下几点决定的
. mac地址数目不定,根据帧类型不同,mac .11的mac地址数会不一样。比如说 ACK帧仅有一个mac地址,而数据帧有3个mac地址,在WDS模式下,帧头有4个mac地址。
. .11的管理帧所携带的信息长度不定,在管理帧中,不仅仅只有一些类似于mac地址,分片标志之类的这些信息,而且另外还会包括一些其它的信息,这些信息有关于安全设置的,有关于物理
通信的,比如说我们的SSID名称就是通过管理帧获得的。AP会根据不同的情况发送包含有不同信息的管理帧。
. 加密(wep,wpa等)信息,QOS(quality of service)信息,若有加密的数据帧格式和没有加密的数据帧格式还不一样,加密数据帧格式还多了个加密头,用于解密用。然则QOS也是同样道理
1: 控制帧
0x0: Frame Control字节结构:
2: 管理帧
0x1: 管理帧协议格式
(Beacon(信标)帧)
(Probe Request(探测请求)帧)
(Probe Response(探测响应)帧)
(ATIM帧)
(Disassociation(解除关联)与Deauthentication(解除认证)帧)
(Association Request(关联请求)帧)
(Reassociation Request(重新关联请求)帧)
(Authentication(身份认证)帧)
管理帧协议格式 字节顺序解析:
. 帧控制结构(Frame Control)
) Protocol Version: (协议版本)通常为0
) Type: 帧类型,管理帧:
) Subtype: 进一步判断帧的子类型
3.1) Beacon(信标)帧
3.2) Probe Request(探测请求)帧
3.3) Probe Response(探测响应)帧
3.4) ATIM帧
3.5) Disassociation(解除关联)
3.6) Deauthentication(解除认证)帧
3.7) Association Request(关联请求)帧
3.8) Reassociation Request(重新关联请求)帧
3.9) Authentication(身份认证)帧
) To DS: 表明该帧是否是BSS向DS发送的帧
) From DS: 表明该帧是否是DS向BSS发送的帧
) More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1
) Retry(重传域): 表示该分段是先前传输分段的重发帧。
) Power Management: 表示传输帧以后,站所采用的电源管理模式
8.1) 为1: STA处于power_save模式
8.2) 为0: STA处于active模式
) More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
) Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0
) Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0
. Duration/ID(持续时间/标识)
表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算
. Address Fields(地址域):
) Destination Address
) Source Address
) BSS ID
. Sequence Control(序列控制域): 用于过滤重复帧
) MSDU(MAC Server Data Unit), 12位序列号(Sequence Number)
) MMSDU(MAC Management Server Data Unit), 4位片段号(Fragment Number)组成
. Frame Body(Data): 发送或接收的信息。对于不同类型的数据帧来说,这个域的格式差别较大
) Beacon(信标)帧
1.1) Timestamp(时戳)位: 可用来同步 BSS 中的工作站 BSS 的主计时器会定期发送目前已作用的微秒数。当计数器到达最大值时,便会从头开始计数
1.2) Beacon interval位: AP点每隔一段时间就会发出的Beacon(信标)信号,用来宣布 .11网络的存在。我们打开无线连接的时候之所以能看到很多Wi-Fi点就是因为它
1.3) Capability information位: 发送Beacon信号的时候,它被用来通知各方,该网络具备哪种性能
1.4) SSID服务集标识(Service Set Identity): 由字节所形成的字串,用来标示所属网络的BSSID,即我们在Wi-Fi连接前看到的接入点名称
1.5) 跳频参数组合(PH Parameter Set): 包含了加入 .11跳频(frequency-hopping)网络所需要的参数
1.6) 直接序列参数集合(DS Parameter Set): 指明网络所使用的信道数
1.7) 免竞争参数集合(CF Parameter Set): 出现在支持免竞争接入点所发送的 Beacon帧中,并非必须
1.8) IBSS 参数集合(IBSS Parameter Set): 指明ATIM window (数据待传指示通知信息间隔期间)
1.9) TIM数据待传信息(Traffic Indication Map): 指示有哪些工作站需要接收待传数据
1.10) Country: 国家识别码
1.11) 功率限制(Power Constraint): 让网络得以向工作站传达其所允许的最大传输功率
1.12) 信道切换宣告(Channel Switch Announcement): 为了警告网络中的工作站即将变换信道
1.13) 禁声(Quiet): 为了避免与特定的军事雷达技术彼此干扰
1.14) 发射功率控制报告(TPC Report): 指明链路的衰减情况,可以帮助工作站了解该如何调整传输功率
1.15) 扩展物理层(ERP)
1.16) 支持速率(Supported Rates): 无线局域网络支持数种标准速率。当移动工作站试图加入网络,会先检视该网络所使用的数据速率。有些速率是强制性的,每部工作站都必须支持
,有些则是选择性的
1.17) RSN强健安全网络(Robust Security Network)
) Probe Request(探测请求)帧
2.1) SSID服务集标识(Service Set Identity): 由字节所形成的字串,用来标示所属网络的BSSID,即我们在Wi-Fi连接前看到的接入点名称
2.2) Supported Rate(支持速率)
2.3) 扩展支持速率(Extended Supported Rate)
) Probe Response(探测响应)帧
3.1) Timestamp(时戳)位: 可用来同步 BSS 中的工作站 BSS 的主计时器会定期发送目前已作用的微秒数。当计数器到达最大值时,便会从头开始计数
3.2) Beacon interval位: AP点每隔一段时间就会发出的Beacon(信标)信号,用来宣布 .11网络的存在。我们打开无线连接的时候之所以能看到很多Wi-Fi点就是因为它
3.3) Capability information位: 发送Beacon信号的时候,它被用来通知各方,该网络具备哪种性能
3.4) SSID服务集标识(Service Set Identity): 由字节所形成的字串,用来标示所属网络的BSSID,即我们在Wi-Fi连接前看到的接入点名称
3.5) 支持速率(Supported Rates): 无线局域网络支持数种标准速率。当移动工作站试图加入网络,会先检视该网络所使用的数据速率
3.6) 跳频参数组合(PH Parameter Set): 包含了加入 .11跳频(frequency-hopping)网络所需要的参数
3.7) 直接序列参数集合(DS Parameter Set): 指明网络所使用的信道数
3.8) 免竞争参数集合(CF Parameter Set): 出现在支持免竞争接入点所发送的 Beacon帧中,并非必须
3.9) IBSS 参数集合(IBSS Parameter Set): 指明ATIM window (数据待传指示通知信息间隔期间)
3.10) Country: 国家识别码
3.11) FH Hopping Parameters
3.12) FH Pattern Table
3.13) 功率限制(Power Constraint): 让网络得以向工作站传达其所允许的最大传输功率
3.13) 信道切换宣告(Channel Switch Announcement): 为了警告网络中的工作站即将变换信道
3.14) 禁声(Quiet): 为了避免与特定的军事雷达技术彼此干扰
3.15) IBSS 动态选项(IBSS DFS):在 IBSS 中负责动态选频的工作站可以在管理帧中传递 IBSS DFS 信息元素
3.16) 发射功率控制报告(TPC Report): 指明链路的衰减情况,可以帮助工作站了解该如何调整传输功率
3.17) 扩展物理层(ERP)
3.18) 扩展支持速率(Extended Supported Rate)
3.19) RSN强健安全网络(Robust Security Network)
) ATIM帧
) Disassociation(解除关联)
5.1) Beacon Code
) Deauthentication(解除认证)帧
6.1) Beacon Code
) Association Request(关联请求)帧
7.1) Capability information位: 发送Beacon信号的时候,它被用来通知各方,该网络具备哪种性能
7.2) Listen interval位: 为了节省电池的电力,工作站可以暂时关闭 .11网络接口的天线。当工作站处于休眠状态,接入点必须为之暂存帧
7.3) SSID服务集标识(Service Set Identity): 由字节所形成的字串,用来标示所属网络的BSSID,即我们在Wi-Fi连接前看到的接入点名称
7.4) Supported Rate(支持速率)
) Reassociation Request(重新关联请求)帧
8.1) Capability information位: 发送Beacon信号的时候,它被用来通知各方,该网络具备哪种性能
8.2) Listen interval位: 为了节省电池的电力,工作站可以暂时关闭 .11网络接口的天线。当工作站处于休眠状态,接入点必须为之暂存帧
8.3) Current AP Address位: 使用Current AP Address(目前接入点的地址)位来表明目前所连接的接入点的 MAC地址
8.4) SSID服务集标识(Service Set Identity): 由字节所形成的字串,用来标示所属网络的BSSID,即我们在Wi-Fi连接前看到的接入点名称
8.5) Supported Rate(支持速率)
) Authentication(身份认证)帧
9.1) Authentication Algorithm Number: 指明认证程序所使用的认证类型
9.2) Authentication Transaction Sequence Number: 用以追踪身份认证的进度
9.3) Status Code: 状态代码用来表示某项过程成功或失败
9.4) 质询口令(Challenge Text): .11所定义的共享密钥身份认证系统。会要求移动工作站必须成功解码一段加密过的质询口令。这段质询口令的发送系通过 Challenge Text
(质询口令)信息元素
. FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错
3 : 数据帧
0x2: 数据帧协议格式
数据帧的形式取决于网络的形式。帧究竟属于哪种类型,完全取决于subtype(子类型)位,而与其他位是否出现在帧中无关
数据帧的形式取决于网络的形式。帧究竟属于哪种类型,完全取决于subtype(子类型)位,而与其他位是否出现在帧中无关
(IBSS 数据帧的一种)
(接入点发送(From AP)的帧,数据帧的一种)
(发送至接入点(To AP)的帧,数据帧的一种)
(WDS帧,数据帧的一种)
. 帧控制结构(Frame Control)
) Protocol Version: (协议版本)通常为0
) Type: 帧类型,数据帧:
) Subtype: 进一步判断帧的子类型,不同类型的数据帧这个字段的格式是不同的
3.1) IBSS帧
3.1.) : Data
3.1.) : Null
3.2) From AP帧
3.2.) : Data
3.2.) : Data+CF+ASK
3.2.) : Data+CF+Poll
3.2.) : Data+CF+ACK+CF+Poll
3.2.) : CF+ACK
3.2.) : CF+Poll
3.2.) : ACK+CF+Poll
3.3) To AP帧
3.3.) : Data
3.3.) : Data+CF+ACK
3.3.) : Null
3.3.) : CF+ACK(no data)
3.4) WDS帧
null
) To DS: 表明该帧是否是BSS向DS发送的帧时
4.1) IBSS: 设置为0
4.2) To AP: 设置为1
4.3) From AP: 设置为0
4.4) WDS: 设置为1
) From DS: 表明该帧是否是DS向BSS发送的帧时
5.1) IBSS: 设置为0
5.2) To AP: 设置为0
5.3) From AP: 设置为1
5.4) WDS: 设置为1
) More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1
) Retry(重传域): 表示该分段是先前传输分段的重发帧。
) Power Management: 表示传输帧以后,站所采用的电源管理模式
8.1) 为1: STA处于power_save模式
8.2) 为0: STA处于active模式
) More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
) Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0
) Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0
. Duration/ID(持续时间/标识)
表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算
. Address Fields(地址域):
这个域的具体格式和控制帧的子类型有关,不同的子类型会有一些微小的差别
) IBSS
1.1) Destination Address
1.2) Source Address
1.3) BSSID
每个BSS都会被赋予一个BSSID,它是一个长度为48个bit的二进制识别码,用来辨识不同的BSS
) From AP
2.1) Destination Address
2.2) BSSID
2.3) Source Address
) To AP
3.1) BSSID
3.2) Source Address
3.3) Destination Address
) WDS
4.1) BSSID
4.2) Source Address
4.3) Destination Address
. Sequence Control(序列控制域): 用于过滤重复帧
) MSDU(MAC Server Data Unit), 12位序列号(Sequence Number)
) MMSDU(MAC Management Server Data Unit), 4位片段号(Fragment Number)组成
[SA,只有WDS中的帧有这个字段]
. Frame Body(Data): 发送或接收的信息。
. FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错
0x3: 控制帧协议格式
(RTS帧,控制帧的一种)
(CTS帧,控制帧的一种)
(ACK帧,控制帧的一种)
(PS-Poll帧)
. 帧控制结构(Frame Control)
) Protocol Version: (协议版本)通常为0
) Type: 帧类型,控制帧:
) Subtype: 进一步判断帧的子类型:
控制帧
3.1) 请求发送(Request To Send,RTS)数据包
3.2) 清除发送(Clear To Send,CTS)数据包
数据帧
3.3) ACK确认(RTS/CTS)
3.4) PS-Poll: 当一部移动工作站从省电模式中苏醒,便会发送一个 PS-Poll 帧给基站,以取得任何暂存帧
) To DS: 表明该帧是BSS向DS发送的帧时,该值设置为1
) From DS: 表明该帧是DS向BSS发送的帧时,该值设置为1
控制帧负责处理无线介质的访问,因此只能够由无线工作站产生。传输系统并不会收送控制帧,因此这两个Bit必然为0
) More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1。
控制帧不可能被切割,这个Bit必然为0
) Retry(重传域): 表示该分段是先前传输分段的重发帧。
控制帧不像管理或数据帧那样,必须在序列中等候重送,因此这个 Bit必然为0
) Power Management: 表示传输帧以后,站所采用的电源管理模式
8.1) 为1: STA处于power_save模式
8.2) 为0: STA处于active模式
) More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
More Data bit只用于管理数据帧,在控制帧中此Bit必然为0
) Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0。
控制帧不会经过加密。因此对控制帧而言,Protected Frame bit必然为0。
) Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0。
控制帧是基本帧交换程序(atomic frame exchange operation)的组成要件,因此必须依序发送。所以这个Bit必然为0
. Duration/ID(持续时间/标识)
表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算。
注意: 在PS-Poll帧中不包含Duration/ID这个字段
. Address Fields(地址域):
这个域的具体格式和控制帧的子类型有关,不同的子类型会有一些微小的差别
3.1) RTS(请求发送帧)
3.1.) Receiver Address(接收端地址)
接收大型帧的工作站的地址
3.1.) Transmitter Address(发送端地址)
RTS帧的发送端的地址
3.2) CTS(允许发送)
3.2.) Receiver Address(接收端地址)
3.3) ACK(应答)
3.3.) Receiver Address(接收端地址)
3.4) PS-Poll(省电模式一轮询)
3.4.) AID(连接识别码 association ID)
连接识别码是接入点所指定的一个数值,用以区别各个连接。将此识别码置入帧,可让接入点找出为其(移动工作站)所暂存的帧
3.4.) BSSID
此位包含发送端目前所在 BSS(AP)的BSSID ,此BSS 建立自目前所连接的AP
3.4.) Transmitter Address(发送端地址)
此为PS-Poll帧之发送端的 MAC地址
. FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错
Wi-Fi认证过程
有了802.11协议的基本格式之后,我们可以使用wireshark进行抓包实验,验证一下我们的理论
ifconfig -a
ifconfig wlan1 up
airmon-ng start wlan1
启动wireshark,选择mon0网卡(开启了Monotor模式的虚拟网卡
0x1: 普通无加密连接过程
1. AP发送Beacon广播管理帧
因为AP发送的这个Beacon管理帧数据包是广播地址,所以我们的PCMIA内置网卡、或者USB外界网卡会接收到这个数据包,然后在我们的"无线连接列表"中显示出来
2. 客户端向承载指定SSID的AP发送Probe Request(探测请求)帧
当我们点击"连接"的时候,无线网卡就会发送一个Prob数据帧,用来向AP请求连接
3. AP接入点对客户端的SSID连接请求进行应答
AP对客户端的连接作出了回应,并表示不接受任何形式的"帧有效负载加密(frame-payload-encryption)"
4. 客户端对目标AP请求进行身份认证(Authentication)
5. AP对客户端的身份认证(Authentication)请求作出回应
AP回应,表示接收身份认证
6. 客户端向AP发送连接(Association)请求
身份认证通过之后,所有的准备工作都做完了,客户端这个时候可以向WLAN AP发起正式的连接请求,请求接入WLAN
7. AP对连接(Association)请求进行回应
AP对客户端的连接请求(Association)予以了回应(包括SSID、性能、加密设置等)。至此,Wi-Fi的连接身份认证交互就全部结束了,之后就可以正常进行数据发送了
8. 客户端向AP请求断开连接(Disassociation)
当我们点击"断开连接"的时候,网卡会向AP发送一个断开连接的管理数据帧,请求进行断开连接
由此,我们可以发现,基于对数据帧格式的了解,黑客可以发起一些针对协议的攻击
1. Deanthentication攻击
2. Disassociation攻击
黑客可以利用这种方式加快对WEP/WPS-PSK保护的无线局域网的攻击,迫使客户端重新连接并且产生ARP流量(基于WEP的攻击)、或捕获重新进行WPA连接的四次握手,然后可以对密码进行离线字典或彩虹表破解攻击
0x2: 基于WEP加密的连接过程
0x3: 基于WPA-PSK加密的连接过程
这两种连接交互过程原理上和无加密方式(开放系统方式)相同,感兴趣的朋友可以使用wireshark进行抓包实验
参考
Wireshark 802.11 Display Filter Field Reference : http://www.willhackforsushi.com/papers/80211_Pocket_Reference_Guide.pdf
快速读懂无线安全 : http://www.freebuf.com/articles/wireless/112221.html#
802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门研究 : http://www.cnblogs.com/LittleHann/p/3700357.html
厦门点燃未来网络科技有限公司, 是厦门最好的微信应用, 小程序, 微信网站, 公众号开发公司
WIFI:802.11协议帧格式的更多相关文章
- 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门研究
相关学习资料 Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 第2版 http://zh.wikipedia.org/wiki/IEEE_802.11 h ...
- 计算机网络-链路层(4)WiFi:802. 11无线LAN
有几套有关无线LAN 的802. 11标准,包括802.11b.802.11a和802.11g. 802.11g是至今为止最为流行的技术.一些双模式(802.11a/g)和三模式(802.11a/b/ ...
- WIFI:802.11无线LAN
IEEE 802.11 无线LAN(也称WiFi) IEEE是什么 电气和电子工程师协会(IEEE,全称是Institute of Electrical and Electronics Enginee ...
- WIFI 802.11 a/b/g/n/ac
802.11 a/b/g/n/ac FHSS: Frequency-hopping spread spectrum (FHSS) is a method of transmitting radio s ...
- WIFI知识累计之802.11协议radiotap头解析方法
radiotap官方网站:http://www.radiotap.net/Radiotap 该网站详细介绍了radiotap的各个字段的长度和介绍,并包含解析代码项目地址,该文就在此网站的基础编写一些 ...
- h3c 802.11协议的发展进程
- H3C 802.11协议的发展
- WiFi(802.11)基础
参考: 1. Wireshark数据包分析实战(第2版) 2. wifi技术从了解到熟悉1----概念.802.11协议简述及四种主要物理组件.wifi适配层.wap_supplicant和wap_c ...
- 802.11 MAC基础
MAC(媒介访问控制层)位于各式物理层之上,控制数据的传输.它负责核心成帧操作以及与有线骨干网络之间的交互. 802.11采用载波监听多路访问/冲突避免(CSMA/CA)机制来控制对传输媒介的访问. ...
随机推荐
- 在ASP.NET MVC中实现Select多选
我们知道,在ASP.NET MVC中实现多选Select的话,使用Html.ListBoxFor或Html.ListBox方法就可以.在实际应用中,到底该如何设计View Model, 控制器如何接收 ...
- Android 数据存储02之文件读写
Android文件读写 版本 修改内容 日期 修改人 V1.0 原始版本 2013/2/25 skywang Android文件读写的有两种方式.一种,是通过标准的JavaIO库去读写.另一种,是通过 ...
- Android控件之ImageSwticher
Android控件之ImageSwticher 1. ImageSwticher介绍 ImageSwitcher是图片切换的控件,它能实现图片切换时的动画效果,包括图片导入效果.图片消失效果等等.An ...
- Spring Boot开发之明月千城(一)
原文地址:http://qindongliang.iteye.com/blog/2205633 最近数据分析的项目也即将告一段落了,中间也积累了很多知识,特此记录一下.其中用的最爽的Web组合开发就是 ...
- Codeforces 394D Physical Education and Buns 胡搞
题目链接:点击打开链接 题意:给定n个数的序列(能够排序) 操作一次能够使得某个数++或--. 问最少操作几次使得序列变成一个等差序列 输出: 第一行输出最少操作的次数 第二行输出等差数列里的最小项 ...
- 福尔摩斯基本演绎法第一季/全集Elementary迅雷下载
本季Elementary Season 1 第一季(2012)看点:<福尔摩斯:基本演绎法>由CBS出品,根据<福尔摩斯>系列改编,地点从19世纪大英帝国国势鼎盛的时期搬到了2 ...
- TX1 flash backup & restore
备份:耗时2.5小时 ./tegraflash.py --bl cboot.bin --applet nvtboot_recovery.bin --chip 0x21 --cmd "read ...
- 详细解读Volley(一)—— 基本Request对象 & RequestQueue
Volley它非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕.所以不建议用它去进行下载文件.加载大图的操作.有人可能会问,如 ...
- 根据ImageView的大小来压缩Bitmap,避免OOM
Bitmap是引起OOM的罪魁祸首之一,当我们从网络上下载图片的时候无法知道网络图片的准确大小,所以为了节约内存,一般会在服务器上缓存一个缩略图,提升下载速度.除此之外,我们还可以在本地显示图片前将图 ...
- information_schema系列六(索引,表空间,权限,约束相关表)
information_schema系列六(索引,表空间,权限,约束相关表) 1: STATISTICS 这个表提供的是关于表的索引信息: INFORMATION_SCHEMA Name SHOW ...