第一篇: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.tmdps.cnonce=”0a4f113b“,response=”6629fae49393a05397450978507c4ef1“,opaque=”5ccc069c403ebaf9f0171e9517f40e41"
一,用摘要保護密碼
摘要認證的一個改進之處是用摘要代替密碼的傳輸,遵循的基本原則是“絕對不通過網絡發送明文密碼”,而是發送一個密碼的摘要信息,并且這摘要信息是不可逆 的,即無法通
過摘要信息反推出密碼信息。而服務器本身是存儲這個密碼的(實際上,服務器只需知道密碼的摘要即可),而客戶端和服務器本身都知道這個密碼。這樣的話,服 務器可以讀取客戶端的摘要和本身知道的密碼進行同樣計算得出的摘要進行比較,若匹配,則驗證通過。
摘要是對信息主體的濃縮,摘要是一種單向函數,主要用于將無限的輸入值轉為有限的濃縮輸出值,如MD5,則是將任意長度的字節系列轉換為一個128位的摘要。MD5輸出的128位的摘要通常會寫出32個十六進制的字符,每個字符表示4個bit。
二,用隨機數防止重放攻擊
使用單向摘要就無需以明文形式發送密碼了,可以只發送密碼的摘要,并且可以確信,沒有哪個惡意用戶能輕易的從摘要中解碼出原始密碼。
但是,摘要被截獲也可能跟密碼一起好用,為了防止重放攻擊的發送,服務器可以向客戶端發送一個稱為隨機數nonce的特殊令牌,這個數會經常發生變化(可 能是每毫秒,或者每次認證都發生變化,具體由服務器控制),客戶端在計算摘要之前要先將這個隨機數附加到密碼上去。這樣,在密碼中加入隨機數就會使得摘要 隨著隨機數的每次變化而變化,記錄下的密碼摘要只對特定的隨機數有效,而沒有密碼的話,攻擊者就無法計算出正確的摘要,這樣就可以防止重放攻擊的發生。
摘要認證要求使用隨機數,隨機數是在www.tmdps.cnonce。如下例子:
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℃時依舊不結冰,適合我國最北部的嚴寒地區使用。在廣州這種南方地區,使用第一種玻璃水即可。 當您感覺車的前擋風玻璃透明度差了,這時候噴一噴玻璃水,就能夠給你一個“明朗”的視野。特別是在夜間行車時,玻璃灰塵會散射光線,這時候就需要噴一噴玻璃水,讓前擋風玻璃保持在最佳透明狀態。此外,在灰塵較多的環境,以及在雨天跑高速路時,玻璃水的消耗會非??臁?/p> 玻璃水其實不簡單 有的車主認為清洗前擋風玻璃其實很簡單,用不著小題大做。師傅介紹,有車主會放棄購買一瓶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噴一下,說不定可蒙混過關?。?/p> 特別要注意的是乙醇(酒精)的加量并非越多越好。大家可參考《中學教師化學手冊》上的這個比例,結合當地的最低氣溫來配置。 乙醇添加量 溶液冰點 6% -2.0℃ 14% -5.0℃ 17% -6.1℃ 20.2% -7.5℃,24.8% -10.6℃ 27% -12.2℃ 注意:本文所提到的百分比濃度全部為體積分數濃度。 附 搜羅的一些配方,給同學門參考: 購買普通玻璃水,效果達不到標準,還可能會造成噴頭堵塞。買高級的,花費會較高。綜上,我認為DIY玻璃水,可以讓我們得到實惠!并且效果也可以很好!A:春天,風沙大,雨多,所以玻璃水主要功效就是清潔風擋。準備2.5升可樂瓶一個,一定要沖洗干凈?。P鍵是去掉糖分?。?/p> 純凈水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范文