第一篇:http头文件分析心得体会
http头文件分析心得体会
一、http简介
HTTP即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(“,结果称为 HA2。
3、对HA1、服务器密码随机数(nonce)、请求计数(nc)、客户端密码随机数(cnonce)、保护质量(qop)以及 HA2 的合并值计算 MD5 哈希值。结果即为客户端提供的
response 值。
因为服务器拥有与客户端同样的信息,因此服务器可以进行同样的计算,以验证客户端提交的 response 值的正确性。在上面给出的例子中,结果是如下计算的。
(MD5()表示用于计算MD5哈希值的函数;“”表示接下一行;引号并不参与计算)
HA1 = MD5(”Mufasa:testrealm@host.com:Circle Of Life“)
= 939e7578ed9e3c518a452acee763bce9 HA2 = MD5(”GET:/dir/index.html“)
= 39aff3a2bab6126f332b942af96d3366 Response = MD5(”939e7578ed9e3c518a452acee763bce9:
dcd98b7102dd2f0e8b11d0f600bfb0c093: 00000001:0a4f113b:auth: 39aff3a2bab6126f332b942af96d3366“)= 6629fae49393a05397450978507c4ef1 此时客户端可以提交一个新的请求,重复使用服务器密码随机数(nonce)(服务 器仅在每次“401”响应后发行新的nonce),但是提供新的客户端密码随机数(cnonce)。在后续的请求中,十六进制请求计数器(nc)必须比前 一次使用的时候要大,否则攻击者可以简单的使用同样的认证信息重放老的请求。由服务器来确保在每个发出的密码随机数nonce时,计数器是在增加的,并拒 绝掉任何错误的请求。显然,改变HTTP方法和/或计数器数值都会导致不同的 response值。
服务器应当记住最近所生成的服务器密码随机数nonce的值。也可以在发行每一个密码随机数nonce后,记住过一段时间让它们过期。如果客户端使用了一个过期的值,服务器应该响应“401”状态号,并且在认证头中添加stale=TRUE,表明客户端应当使用新提供的服务器密码随机数nonce重发请求,而不必提示用户其它用户名和口令。
服务器不需要保存任何过期的密码随机数,它可以简单的认为所有不认识的数值都是过期的。服务器也可以只允许每一个服务器密码随机数nonce使用一次,当然,这样就会迫使客户端在发送每个请求的时候重复认证过程。需要注意的是,在生成后立刻过期服务器密码随机数nonce是不行的,因为客户端将没有任何机会来使用这个nonce。
语法:
challenge
= ”Digest“ digest-challenge
digest-challenge = 1#(realm | [ domain ] | nonce |
[ opaque ] |[ stale ] | [ algorithm ] |
[ qop-options ] | [auth-param])
domain
= ”domain“ ”=“ <”> URI(1*SP URI)<“>
URI
= absoluteURI | abs_path
nonce
= ”nonce“ ”=“ nonce-value
nonce-value
= quoted-string
opaque
= ”opaque“ ”=“ quoted-string
stale
= ”stale“ ”=“(”true“ | ”false“)
algorithm
= ”algorithm“ ”=“(”MD5“ | ”MD5-sess“ |
token)
qop-options
= ”qop“ ”=“ <”> 1#qop-value <“>
qop-value
= ”auth“ | ”auth-int“ | token
realm:让客户知道使用哪个用户名和密码的字符串。不同的领域可能密码不一样。至少告诉用户是什么主机做认证,他可能会提示用哪个用户名登录,类似一个Email。
domain:一个URI列表,指示要保护的域。可能是一个列表。提示用户这些URI采用一样的认证。如果为空或忽略则为整个服务器。nonce:随机字符串,每次401都不一样。跟算法有关。算法类似Base64加密:time-stamp H(time-stamp ”:“ ETag ”:“ private-key)。time-stamp为服务器时钟,ETag为请求的Etag头。private-key为服务器知道的一个值。
opaque:服务器产生的由客户下去请求时原样返回。最好是Base64串或十六进制字符串。
auth-param:为扩展用的,现阶段忽略。
其他域请参考RFC2617。
授权头语法:
credentials
= ”Digest“ digest-response
digest-response = 1#(username | realm | nonce | digest-uri
| response | [ algorithm ] | [cnonce] |
[opaque] | [message-qop] |
[nonce-count] | [auth-param])
username
= ”username“ ”=“ username-value
username-value = quoted-string
digest-uri
= ”uri“ ”=“ digest-uri-value
digest-uri-value = request-uri;As specified by HTTP/1.1
message-qop
= ”qop“ ”=“ qop-value
cnonce
= ”cnonce“ ”=“ cnonce-value
cnonce-value
= nonce-value
nonce-count
= ”nc“ ”=“ nc-value
nc-value
= 8LHEX
response
= ”response“ ”=“ request-digest
request-digest = <”> 32LHEX <“>
LHEX
= ”0“ | ”1“ | ”2“ | ”3“ |
”4“ | ”5“ | ”6“ | ”7“ |
”8“ | ”9“ | ”a“ | ”b“ |
”c“ | ”d“ | ”e“ | ”f“
response:加密后的密码
digest-uri:拷贝Request-Line,用于Proxy cnonce:如果qop设置,才设置,用于双向认证,防止攻击。
nonce-count:如果服务器看到同样的计数,就是一次重放。
示例:
401响应:
HTTP/1.1 401 Unauthorized
www.xiexiebang.comonce=”0a4f113b“,response=”6629fae49393a05397450978507c4ef1“,opaque=”5ccc069c403ebaf9f0171e9517f40e41"
一,用摘要保护密码
摘要认证的一个改进之处是用摘要代替密码的传输,遵循的基本原则是“绝对不通过网络发送明文密码”,而是发送一个密码的摘要信息,并且这摘要信息是不可逆 的,即无法通
过摘要信息反推出密码信息。而服务器本身是存储这个密码的(实际上,服务器只需知道密码的摘要即可),而客户端和服务器本身都知道这个密码。这样的话,服 务器可以读取客户端的摘要和本身知道的密码进行同样计算得出的摘要进行比较,若匹配,则验证通过。
摘要是对信息主体的浓缩,摘要是一种单向函数,主要用于将无限的输入值转为有限的浓缩输出值,如MD5,则是将任意长度的字节系列转换为一个128位的摘要。MD5输出的128位的摘要通常会写出32个十六进制的字符,每个字符表示4个bit。
二,用随机数防止重放攻击
使用单向摘要就无需以明文形式发送密码了,可以只发送密码的摘要,并且可以确信,没有哪个恶意用户能轻易的从摘要中解码出原始密码。
但是,摘要被截获也可能跟密码一起好用,为了防止重放攻击的发送,服务器可以向客户端发送一个称为随机数nonce的特殊令牌,这个数会经常发生变化(可 能是每毫秒,或者每次认证都发生变化,具体由服务器控制),客户端在计算摘要之前要先将这个随机数附加到密码上去。这样,在密码中加入随机数就会使得摘要 随着随机数的每次变化而变化,记录下的密码摘要只对特定的随机数有效,而没有密码的话,攻击者就无法计算出正确的摘要,这样就可以防止重放攻击的发生。
摘要认证要求使用随机数,随机数是在www.xiexiebang.comonce。如下例子:
GET/cgi-bin/checkout?a=b HTTP/1.1 Authorization: Digest username=”tenfyguo”
realm=”test realm”
nonce=” 66C4EF58DA7CB956BD04233FBB64E0A4” //服务器端的随机数一起带回
uri=”/cgi-bin/checkout?a=b” //必须跟请求行一致
qop=”auth” //保护质量参数
nc=0000001
cnonce=”xxxxx234132543strwerr65sgdrftdfytryts” //客户端随机数,用于对称校验
response=” ABC4EF58DA7CB956BD04345FBB64E0A4”//最终摘要
3,服务接受摘要,选择算法以及掌握的数据,重新计算新的摘要跟客户端传输的摘要进行比较,验证是否匹配,若客户端反过来用客户端随机数对服务器进行质询,就 会创建客户端摘要,服务可以预先将下一个随机数计算出来,提前传递给客户端,通过Authentication-Info发送下一个随机数。如下例子:
HTTP/1.1 200 OK Authorization-Info:nextnonce=” 88C4EF58DA7CB956BD04233FBB64E0A4”
qop=”auth”
rspauth=”23543534DfasetwerwgDTerGDTERERRE”
cnonce=” xxxxx234132543strwerr65sgdrftdfytryts”
四,摘要的计算
在说明如何计算摘要之前,先说明参加摘要计算的信息块。信息块主要有两种:
1,表示与安全相关的数据的A1。
A1中的数据时密码和受保护信息的产物,它包括用户名,密码,保护域和随机数等内容,A1只涉及安全信息,与底层报文自身无关。
若算法是:MD5 则A1= 若算法是:MD5-sess 则A1=MD5( ): 2,表示与报文相关的数据的A2.A2表示是与报文自身相关的信息,比如URL,请求反复和报文实体的主体部分,A2加入摘要计算主要目的是有助于防止反复,资源或者报文被篡改。 若qop未定义或者auth: A2= 下面定义摘要的计算规则: 若qop没有定义: 摘要response=MD5(MD5(A1): 若qop为auth: 摘要response=MD5(MD5(A1): 若qop为auth-int: 摘要response= MD5(MD5(A1): 五,随机数的生成 RFC2617建议采用这个假想的随机数公式: nonce = BASE64(time-stamp MD5(time-stamp “:” ETag “:” private-key))其中: time-stamp是服务器产生的时间戳或者其他不会重复的序列号,ETag是与所请求实体有关的HTTP ETag首部的值,priviate-key是只有服务器知道的数据。 这样,服务器就可以收到客户端的认证首部之后重新计算散列部分,如果结果与那个首部的随机数不符,或者是时间戳的值不够新,就可以拒绝请求,服务器可以通过这种方式来限制随机数的有效持续时间。 包括了ETag可以防止对已经更新资源版本的重放请求。注意:在随机数中包含客户端IP,服务器好像就可以限制原来获取此随机数的客户端重用这个随 机数了,但这会破坏代理集群的工作,使用代理集群时候,来自单个用户的多条请求通常会经过不同的代理进行传输,而且IP地址欺骗实现起来也不复杂。 C、传统 C++ #include //设定插入点 #include //字符处理 #include //定义错误码 #include //浮点数处理 #include //文件输入/输出 #include //参数化输入/输出 #include //数据流输入/输出 #include //定义各种数据类型最值常量 #include //定义本地化函数 #include //定义数学函数 #include //定义输入/输出函数 #include //定义杂项函数及内存分配函数 #include //字符串处理 #include //基于数组的输入/输出 #include //定义关于时间的函数 #include //宽字符处理及输入/输出 #include //宽字符分类 ////////////////////////////////////////////////////////////////////////// 标准 C++(同上的不再注释) #include //STL 通用算法 #include //STL 位集容器 #include //复数类 #include #include //STL 双端队列容器 #include //异常处理类 #include #include //STL 定义运算函数(代替运算符) #include #include //STL 线性列表容器 #include //STL 映射容器 #include #include //基本输入/输出支持 #include //输入/输出系统使用的前置声明 #include #include //基本输入流 #include //基本输出流 #include //STL 队列容器 #include //STL 集合容器 #include //基于字符串的流 #include //STL 堆栈容器 #include //标准异常类 #include //底层输入/输出支持 #include //字符串类 #include //STL 通用模板类 #include //STL 动态数组容器 #include C++ 增加 #include //复数处理 #include //浮点环境 #include #include //布尔环境 #include //整型环境 #include //通用类型数学宏 HTTP协议学习心得体会 HTTP(HyperText Transfer Protocol) ==================================== 是TCP/IP协议集中的一个应用层协议,用于定义浏览器和Web服务器之间交换数据的过程以及数据本身的格式。现在被广泛使用的是HTTP1.1,相对于1.0,1.1的最大特点是支持持续连接。 基于HTTP1.0协议的客户机与服务器的信息交换过程包括四个步骤:建立连接;发送请求信息;回送响应信息;关闭连接。 通信过程总是通过浏览器发送请求来启动的,Web服务器则是被动地对这些请求作出响应。HTTP协议是无状态的。 HTTP1.1与HTTP1.0的比较 ------ HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接。服务器不跟踪每个客户机,也不记录过去的请求。为了克服HTTP1.0的这个缺陷,HTTP1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。HTTP1.1还允许客户端不用等待上一次请求结果返回,就可以发送下一次请求,但服务器端必须按照接受到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容。 HTTP1.1还增加了host请求头字段,用于明确表示访问服务器上的哪个web站点,可以在一个IP地址和端口号上使用不同的主机名来创建多个虚拟web站点。HTTP1.1还有keep-alive请求头来支持持续连接。 HTTP消息的格式 ----------------------- 一个完整的请求消息包括:一个请求行,若干消息头,以及实体内容,其中消息头和实体内容都是可选的。消息头和实体内容之间要用空行隔开。浏览器使用GET方式的请求消息可以放松不含实体内容的请求消息。只有使用POST, PUT, DELETE方式的请求消息中才可以包含实体内容。 Hypertext Transfer Protocol GET / HTTP/1.1rn Request Method: GET Request URI: / Request Version: HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap,application/x-shockwave-flash, application/vnd.ms-excel, application/vn Accept-Language: zh-cnrn UA-CPU: x86rn Accept-Encoding: gzip, deflatern User-Agent: Mozilla/4.0(compatible;MSIE 7.0;Windows NT 6.0;SLCC1;.NET CLR 2.0.50727;.NET CLR 3.0.04506)rn Connection: Keep-Alivern rn 一个完整的响应消息包括:一个状态行,若干消息头,以及实体内容。同样,消息头和实体内容都是可选的。消息头和实体内容之间要用空行隔开。消息响应的实体内容就是网页文档的内容。 Hypertext Transfer Protocol HTTP/1.1 200 OKrn Request Version: HTTP/1.1 Response Code: 200 Cache-Control: privatern Content-Type: text/html;charset=UTF-8rn Set-Cookie: PREF=ID=7f53f6f0b1511417:NW=1:TM=1205568884:LM=1205568884:S=zHreYqNC-Z3rmOc6;expires=Mon, 15-Mar-2010 08:14:44 GMT;path=/;domain=.google.cnrn Content-Encoding: gziprn Server: gwsrn Transfer-Encoding: chunkedrn Date: Sat, 15 Mar 2008 08:14:44 GMTrn rn HTTP chunked response Data chunk(1025 octets) Chunk size: 1025 octets Data(1025 bytes) HTTP消息头 ---------------- HTTP请求和响应都使用消息头来描述HTTP消息本身的信息,可以实现HTTP客户机与服务器之间的条件请求和应答。 消息头可以分为:通用消息头,请求头,响应头,实体头四类。 请求行与状态行 ----------------------- 请求消息的请求行包括三个部分:请求方式,资源路径,以及使用的HTTP版本。如:GET / HTTP/1.1rn。 响应消息的状态行包括三个部分:HTTP协议的版本号,一个表示成功或者失败的整数代码(状态码)和对状态码进行描述的文本信息。如:HTTP/1.1 200 OKrn。 使用GET和POST方式传递参数 ------------- 在URL地址后面可以附加一些参数,每个参数由参数名和参数值组成,例如:当使用GET方式提交表单内容时,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面。使用GET方式传送的数据量有限制,一般在1KB以下。 当使用POST方式提交表单内容时,浏览器将个表单字段元素及其数据作为HTTP消息的实体内容发送给服务器。因此数据量可以比GET方式大的多。使用POST方式时,还必须将Content-Type消息头设置为“application/x-www-form-urlencoded”,将Content-length消息头设置为实体内容的长度。 响应状态码 --------------- 1.100~199: 成功接受请求,要求客户端继续提交下一次请求才能完成整个处理过程。 2.200~299: 成功接受请求并已完成整个处理过程。 3.300~399: 为完成请求,客户端需要进一步细化请求。 4.400~499: 客户端的请求有错误。 5.500~599: 服务器段出现错误。 通用信息头 ============== 即能用于请求消息,也能用于响应消息,包括一些与被传输的实体内容没有关系的常用消息头字段。 1.Cache-Control 2.Connection 3.Date 4.Pragma 5.Trailer 6.Transfer-Encoding 7.Upgrade 8.Via 9.Warning Cache-Control -------------------- 如果位于请求消息头,用于通知位于客户机和服务之间的代理服务器如何使用已缓存的页面,可以取值为:no-cache, no-store, max-age, max-stale, min-fresh, no-transform, only-if-cached等。 如果位于响应消息头,用于通知客户机和代理服务器如何缓存该页面,可以取值为:public, private, no-cache, no-store, no-transform, must-revalidate, proxy-revalidate, max-age, s-maxage等。 Connection --------------- 用于指定处理完本次请求/响应后,客户端与服务器是否还要继续保持连接。如果为Keep-Alive,则保持连接,如果为close,则关闭。HTTP1.1默认采用持久连接。 Date --------- 表示HTTP消息产生的当前时间。服务器回送的正常响应消息中,应该总是设置Date头字段。如果客户机发送的请求消息中包含有实体内容,也要设置Date。 Pragma ------------ 只能固定为no-cache.Trailer ----------- 一些头字段可以放置在整个HTTP消息的尾部。 Transfer-Encoding --------------------- 指定传输编码方式,目前标准的设置值只有chunked,用于把整个消息分成一连串的分段后进行传输。 Upgrade ------------ 允许客户机指定它所支持并希望将当前协议切换到的通信协议。 Via ----- 用于指定HTTP消息所途径的中介代理服务器名称和所使用的协议。 请求头 ========= 客户端可以接受的数据类型,压缩方法,语言,以及发出请求的超链接所属页面的URL地址等信息。Accept:指出客户端程序能够处理的MIME类型。 Accept-Charset:用于指出客户端程序可以使用的字符集。 Accept-Encoding:客户机能够进行解码的数据编码方式。 Accept-Language:指定客户机期望服务器返回哪个国家语言的文档。 Authorization:两种认证方式BASIC,和DIGEST.Except: From: Host: 指定资源所在的主机号和端口号。HTTP1.1中每个请求消息中都必须包含Host请求字段。If-Match: If-Modified-Since: If-None-Match: If-Range If-Unmodified-Since Max-Forwards: Proxy-Authorization: Range: Referer: 当单击另一个网页上的超链接时发出的请求在Referer字段中指定URL。 TE: User-Agent: 响应头 ========== Accept-Range, Age, Etag,Location: 用于通知客户机应当到哪个新的地址去获取文档。状态码为300~399的响应消息都应该使用Location字段将新的文档地址告诉客户机,以便客户机自动重新连接到新地址并检索新文档。使用Location头的HTTP消息不应该有实体内容。所以,HTTP消息头中不能同时出现Location和Content-Type这两个头字段。 Proxy-Authenticate,Retry-After, Server, Vary, WWW-Authenticate。 实体头 ======== 是实体内容的元信息,描述了实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。 Allow: 指定客户端请求的资源所支持的请求方法(如GET,POST等)。 Content-Encoding: 指定实体内容的压缩编码方式。 Content-Language: Content-Length: 用于表示实体内容的长度(字节数),浏览器与Web服务器之间使用持久连接时,这个字段在非Chunked传输编码的响应消息中是必不可少的。 Content-Location: 指定响应消息中所封装的实体内容的实际位置路径。 Content-MD5, Content-Range, Content-Type Expires: 指定当前文档应该在什么时候被认为过期,浏览器到哪个时候以后不能再继续使用本地缓存,而是在有需要时应该像服务器发出新的请求访问。 Last-Modified:文档的最后更改时间。 扩展头 ======== 现在流行的浏览器实际上都支持Cookie,Set-Cookie,Refresh和Content-Disposition等几个常用的扩展头字段。 Refresh: 告诉浏览器多少秒后自动刷新页面。 51单片机C语言学习笔记7:关于.c文件和.h文件 2009-09-15 09:55:43| 分类:| 标签: |举报 |字号大中小 订阅 1)h文件作用方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。 2)h文件里应该有什么 常量,结构,类型定义,函数,变量申明。 3)h文件不应该有什么 变量定义, 函数定义。 4)extern问题 对于变量需要extern; 对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。 5)include包含问题 虽然申明和类型定义可以重复,不过推荐使用条件编译。 #ifndef _FILENAME_H,#define _FILENAME_H …… #endif 6)应该在那儿包含h文件 在需要的地方.比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#include “delay.c”这类的程序,同时也不提倡使用这个形 式。 在delay.h文件中: //对调用的函数声明 #ifndef __DELAY_H__ #define __DELAY_H__ extern void Delayms(unsigned int n); #endif 在delay.c文件中: //函数实现部分 #include //for crystal 11.0592M void Delayms(unsigned int n) { unsigned int i,j; for(j=n;j>0;j--) for(i=112;i>0;i--); } 在主程序main.c中 #include …… 上述方法仍然要求每建立一个工程就需要把对应的头文件复制到工程的文件夹里,这样看来仍然是比较麻烦的,这时还有另外一中方法就是将做好的头文件放在一个文件夹中,然后将这个文件夹整体拷贝到..KEILC51INC下面,以后若需要使用某个头文件,就如使用KEIL自带的头文件一样方便了,在主函 数mani()之前有一句#include 就可以在main()中使用其中的函数了。 参考资料: 1)h文件里变量(函数)申明用不用extern 2).c文件和.h文件的概念与联系 3)过马路,左右看 4).c 和.h文件的不同 5)C51包含头文件方法 防止头文件重复包含的方法 第一条预处理命令是说,如果MAXMIN_H不为真,说明此文件没被包含过,此命令后面的源代码有效(相当于:‘如果大门没关,请您进来’); 第二条预处理命令把MAXMIN_H置为真(相当于请您把门锁插上,不让第二个人进来)。最后一条预处理命令是为了标出接受上述处理的源程序的范围(相当于您已经走到了后门)。假定有以下几个头文件及其包含关系为: File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp 那么:file3.h包含file1.h,file2.h,file4.h包含file1.h,file2.h,file5.h包含file3.h,file4.h。就会导致在file5中对file1和file2的反复包含,编译时就会报错。 解决方法1: 1:应用#ifndef #define #endif 即每个文件在定义时都写成以下情势(以file1.h为例): #ifndef H_FILE1 #define H_FILE1 #include #include …..#endif File3.h: #ifndef H_FILE3 #define H_FILE3 #include #include #inlcude”file1.h”#include”file2.h”…..#endif 方法二:在每个文件的头部定义:#pragmaonce(用于解释本文件中的内容只应用一次)例:fiel1.h: #pragmaonce#include #pragmaonce#include 玻璃水配方 http://com.mysvw.com/viewthread.php?tid=232464 懂得开车,就应懂用车。然而,有懒惰的车主甚至许久才会洗一次车,当好不容易把爱车拿去维修厂或4S店做一次保养时,底盘、轮胎、刹车系统等项目往往是重点检查项目。在日常的“三油(机油、变速箱油、刹车油)、三水(水箱冷却水、电瓶水及雨刮水)”的保养中,记者发现,不少粗心的车主(特别是新手司机)最容易忽视对前挡风玻璃的关注。 你是否忽视了爱车的“透明”性 近日,记者与一位朋友驾车同行时,这位朋友在行车过程中,想用玻璃水清洗一下灰尘密布和有虫尸的前挡风玻璃,结果按了半天雨刮器喷水按钮,才突然想起忘记添加玻璃水,于是只好一路“视线模糊”的行驶在路上。相信很多的车主都会有这样的经历和体会,特别是行车时如果看见挡风玻璃上沾染污物或虫尸,视觉立刻就会感到不舒服。广州本田一位4S店的维修技师黄师傅告诉记者,添加“玻璃水”是80%车主在日常保养中最容易忽视的细节,前挡风玻璃的保养更往往被车主遗忘。 那么,所谓玻璃水是什么?汽车挡风玻璃水俗称玻璃水(即车窗玻璃清洗液、雨刮水),是保养爱车最大的消耗品之一。一般来说,我国用品零售市场上的玻璃水可分三种:一种夏季常用的,在清洗液里增加了除虫胶成分,可以快速清除撞在挡风玻璃上的飞虫残留物;一种专为冬季使用的防冻型玻璃清洗液,保证在外界气温低于零下20℃时,依旧不会结冰冻坏汽车设施;一种是特效防冻型,保证在零下40℃时依旧不结冰,适合我国最北部的严寒地区使用。在广州这种南方地区,使用第一种玻璃水即可。 当您感觉车的前挡风玻璃透明度差了,这时候喷一喷玻璃水,就能够给你一个“明朗”的视野。特别是在夜间行车时,玻璃灰尘会散射光线,这时候就需要喷一喷玻璃水,让前挡风玻璃保持在最佳透明状态。此外,在灰尘较多的环境,以及在雨天跑高速路时,玻璃水的消耗会非常快。 玻璃水其实不简单 有的车主认为清洗前挡风玻璃其实很简单,用不着小题大做。师傅介绍,有车主会放弃购买一瓶10~20元左右的专用玻璃水,选择“偏方”——自制的玻璃水。他们将洗洁精、洗涤剂、洗衣粉等兑一点水来替代专用玻璃水,认为又便宜又省心;也有的车主直接用清水替代玻璃水。黄师傅指出这些做法存在着一定的隐患。 用水兑洗衣粉:洗衣粉水里会有一些沉淀物,时间长了,不仅会腐蚀橡胶管,而且会堵塞喷水口,严重情况下会损坏到电机。一般洗涤剂都呈碱性,对橡胶会有一定的腐蚀性,会加速催化雨刮器胶条的硬化,硬化的胶条刮擦挡风玻璃时,会加速挡风玻璃表面被刮毛、刮花。如果重新更换雨刮器,付出的费用将是玻璃水的几十倍价格。 用水代替玻璃水:这个风险相对小一些。但需要留意的是,普通的自来水同样含有较多杂质,时间长了,杂质会依附在橡胶管内,影响正常的喷水。长期使用可能会使玻璃表面与雨刮器之间摩擦力加大,玻璃产生划痕。师傅表示,清水只能简单地清洗灰尘,对车窗上附着的脏污、虫尸,并没有彻底清洗的能力。 小贴士 DIY加玻璃水并不难 为爱车添加玻璃水,最省事的办法是委托洗车店或者维修厂帮忙添加。算一下账,让美容店加一次约10元左右,所支付的费用肯定比自己买一瓶玻璃水DIY添加来得贵些。黄师傅告诉记者,如果专门为添加玻璃水而跑一趟4S店或者美容店其实不值得,添加玻璃水的活儿,车主完全可以DIY自行解决。车主只需去市场上用10~20元购买一瓶车用玻璃水,按照指示加入即可,并没有太多“技术含量”。 提示1:第一步要稀释。 一般购买回来的玻璃水均需要稀释使用,只需按照说明书上的指示操作即可。 提示2:注意玻璃水容量。 汽车的玻璃水容量大约是1.5L左右,因此选择稀释玻璃水的容器用1.25L到1.5L的就可以了。可以用矿泉水瓶替代。 提示3:不要加太满。 自己添加玻璃水的时候,要注意不要加过满,如果容器口有一些泡沫,不需担心,并不影响使用。 提示4:玻璃水也有冬夏之分。 一般来说,在南方地区使用增加了除虫胶成分的玻璃水即可。如果爱车需要在北方过冬,则需要使用防冻型玻璃水。这一点,习惯了南方气候的司机去到北方时常会忽略。 汽车用玻璃水是什么成分的?看论坛中有几种配方,成分也就是防冻液+清洁剂+水+酒精等: 1、取大可了瓶一个。 2、家中没人爱喝的白酒(高中低度均可,五粮液、茅台更好)。 3、质量好点的餐洗净(不伤手的那种,连手都不伤,就不怕腐蚀车了,市场的玻璃清洁剂就怕这点不过关) 4、纯净水 5、一滴蓝墨水,着色用,可省。步骤 1、将白酒半瓶到入可了瓶。 2、加半勺餐洗净 3、加入纯净水,不要太满。 4、摇均匀即可。实验 本品放入冰箱内-20度,两小时左右,略有结冰现象。使用 1、在-10度左右,夜晚室外停放15小时,没有冻。 2、洗玻璃时由于有酒精,挥发的很快。洗后风挡玻璃非常干净,还有一种餐洗净的香味和淡淡的酒香。 3、如果酒后驾车被查,冲JC喷一下,说不定可蒙混过关!! 特别要注意的是乙醇(酒精)的加量并非越多越好。大家可参考《中学教师化学手册》上的这个比例,结合当地的最低气温来配置。 乙醇添加量 溶液冰点 6% -2.0℃ 14% -5.0℃ 17% -6.1℃ 20.2% -7.5℃,24.8% -10.6℃ 27% -12.2℃ 注意:本文所提到的百分比浓度全部为体积分数浓度。 附 搜罗的一些配方,给同学门参考: 购买普通玻璃水,效果达不到标准,还可能会造成喷头堵塞。买高级的,花费会较高。综上,我认为DIY玻璃水,可以让我们得到实惠!并且效果也可以很好!A:春天,风沙大,雨多,所以玻璃水主要功效就是清洁风挡。准备2.5升可乐瓶一个,一定要冲洗干净!(关键是去掉糖分!) 纯净水2升,医用95%酒精250ML(药店有售)洗涤剂1-2可乐瓶盖(洗涤剂质量要好)充分互溶后可直接使用。加洗涤剂主要是去沙土,应为洗涤剂的泡沫能很快的将泥土去掉。酒精能加速水分蒸发,使玻璃迅速清洁。加入以上这些,可能不满,可直接加1升左右纯净水。 B:夏天,秋天。有雨,不一定很脏,但是昆虫多打在风当时,清水不容易将其清除,因为虫胶也比较难处理。所以要加入更多的溶剂。 同样,2.5升可乐瓶,2升纯净水,95%医用酒精500ML,洗涤剂1瓶盖足矣!酒精这种有机溶剂还是很不错的!去虫胶的效果很好。要是在市区,可以将不满的水壶加纯净水加满,但是高速不建议降低浓度,影响效果! C:冬天,虽然已经过去,但还是说说。深有体会的是,所在城市冬季可以达到-30℃甚至更低,有不少同学直接加二锅头,基本可以满足需要,但是其酒精含量的高低直接影响塑料件的老化程度,所以还是改善下好。20%质量的95%酒精,80%质量的水,冰点基本在-10℃左右,初冬没问题。20-30%的酒精,60%的水,冰点也只在-15℃,也不是很理想,40-50%的酒精,50-60%的水,冰点可以达到-25℃不结冰,基本满足冬季的需要,因为冬天基本不太用水去清洁玻璃。关键的一点,冬天一定不能加满玻璃水壶!上盖的通气孔极易冻住,而结冰膨胀的液体会直接把水壶涨裂。所以冬天用2.5L可乐瓶配的溶液一瓶,足够!第二篇:头文件总结
第三篇:HTTP协议学习心得体会
第四篇:51头文件书写而方法
第五篇:玻璃水配方 http范文