一、HTTP協議
1.1 HTTP特點
無狀態使用URI定義網際網路資源HTTP方法GET:獲取資源POST:傳輸實體主體PUT:傳輸文件HEAD:獲得報文首部DELETE:刪除文件OPTIONS:詢問支持的方法TRACE:追蹤路徑CONNECT:要求用隧道協議連接代理持久連接節省通信量管線化實現並行發送多個請求,而不需要一個接一個等響應
1.2 HTTP報文
用於HTTP協議交互的信息稱為HTTP報文。
請求報文:
報文首部請求行請求首部欄位通用首部欄位實體首部欄位其他空行報文主體
響應報文:
報文首部狀態行響應首部欄位通用首部欄位實體首部欄位其他空行報文主體
發送多種數據的多部分對象集合:
MIMEmultipart/form-data
內容協商:
伺服器驅動協商客戶端驅動協商透明協商
1.3 HTTP狀態碼
1XX:接收的請求正在處理
2XX:請求正常處理完畢
200 OK,204 NoContent,206 Partial Content
3XX:需要進行附加操作以完成請求
301 Moved Permanenetly,302 Found,303 See Other,304 Not Modified,307 Temporary Redirect
4XX:伺服器無法處理請求
400 Bad Request,401 Unauthorized,403 Forbidden,404 Not Found
5XX:伺服器處理請求出錯
500 Internal Server Error,503 Service Unavailable
1.4 HTTP1.1和HTTP1.0的區別
可擴展性:定義Via頭域,增加版本號的支持。
緩存:
增加對緩存的重激活機制:使用ETag頭域描述一個資源。增加Cache-Control頭域支持可擴展的指令集。
帶寬優化:允許請求資源的某部分,而不是整個資源。
長連接:
HTTP/1.0只支持瀏覽器與伺服器保持短暫的連接,瀏覽器的每次請求都要建立一個新的連接。而HTTP/1.1允許在一個TCP連接上可以傳送多個HTTP請求和響應。HTTP/1.1協議的持續連接有兩種方式,即非流水線方式和流水線方式。非流水線方式的特點是,客戶在收到前一個響應後才能發出下一個請求。流水線方式的特點是,客戶在收到HTTP的響應報文之前就能接著發送新的請求報文。
1.5 Cookie與Session的區別
1、存取方式的不同
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二進位數據,需求先進行編碼。Cookie中也不能直接存取Java對象。若要存儲略微複雜的信息,運用Cookie是比較艱難的。Session中能夠存取任何類型的數據,包括而不限於String、Integer、List、Map等。Session中也能夠直接保管Java Bean乃至任何Java類,對象等,運用起來十分便當。能夠把Session看做是一個Java容器類。
2、隱私策略的不同
Cookie存儲在客戶端閱讀器中,對客戶端是可見的,客戶端的一些程序可能會窺探、複製以至修正Cookie中的內容。Session存儲在伺服器上,對客戶端是透明的,不存在敏感信息洩露的風險。
3、有效期上的不同
Cookie的過期時間指定Session依賴於名為JSESSIONID的Cookie,而Cookie JSESSIONID的過期時間默許為–1,只需關閉了瀏覽器該Session就會失效,因而Session不能完成信息永世有效的效果。
3、伺服器壓力的不同
Cookie保管在客戶端,不佔用伺服器資源。假如並發閱讀的用戶十分多,Cookie是很好的選擇。關於Google、Baidu、Sina來說,Cookie或許是唯一的選擇。Session是保管在伺服器端的,每個用戶都會產生一個Session。假如並發訪問的用戶十分多,會產生十分多的Session,耗費大量的內存。因而像Google、Baidu、Sina這樣並發訪問量極高的網站,是不太可能運用Session來追蹤客戶會話的。
4、瀏覽器支持的不同
Cookie是需要客戶端瀏覽器支持的。假如客戶端瀏覽器不支持Cookie,需要運用Session以及URL地址重寫。
5、跨域支持上的不同
Cookie支持跨域名訪問,例如將domain屬性設置為「.biaodianfu.com」,則以「.biaodianfu.com」為後綴的一切域名均能夠訪問該Cookie。跨域名Cookie如今被普遍用在網絡中,例如Google、Baidu、Sina等。Session則不會支持跨域名訪問。Session僅在他所在的域名內有效。
1.6 Ping
同網段:
主機A要去Ping主機B,主機A會封裝兩層報文,主機A先檢查自己MAC地址中是否有B的MAC地址,如果沒有就向外發送一個ARP廣播包。交換機收到這個ARP後,會檢查在交換機中是否包含B的MAC地址,如果有就直接返回給A;如果沒有就向所有埠發送ARP,該網段的主機的MAC如果與B的MAC地址不同就丟棄,如果主機B收到了該ARP就馬上返回相同格式的ARP。這時主機A已經有了B的MAC地址,就把B的MAC地址封裝到ICMP報中,向主機B發送一個回顯請求。主機B收到該報文後,知道是主機A的一個回顯請求,就會返回一個相同格式的報文。這樣就完成了同一個網段的Ping的過程。
不同網段:
主機A要去Ping一個不同網段的主機C,主機A會去找網關轉發如果主機A不知道網關的MAC地址,就會發送一個ARP廣播一下,這樣就知道了網關的MAC地址網關收到主機A的ICMP報文,根據上面的目的IP,會去查找路由表,找到一個出口指針,給主機C發送一個ICMP報文如果網關不知道主機C的MAC地址,就會給網關內所有的主機發送一個ARP,從而找到主機C的MAC地址主機C收到主機A的報文就會給主機A發送一個回顯請求。這樣就完成了不同網段的Ping的請求
1.7 websocket
全雙工通信,特點:
推送功能:支持伺服器向客戶端推送數據的推送功能減少通信量:一直保持連接HTTP連接建立後,需要完成一次握手動作握手---請求:用到HTTP的upgrade欄位告知伺服器通信協議發生變化握手---響應:對於之前的請求返回狀態碼101 switching protocols成功握手確立WebSocket連接之後,通信不再使用HTTP的數據幀,而採用WebSocket獨立的數據幀二、HTTPS協議
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
2.1 HTTP缺點
通信使用明文可能會被竊聽,解決方式:
通信加密。SSL和TLS組合使用內容加密
不驗證通信方身份就可能遭遇偽裝,解決方式:查明對手的證書
無法證明報文完整性,可能已遭篡改:數字籤名,MD5並不可靠,應用HTTPS。
2.2 HTTP+加密+認證+完整性保護=HTTPS
2.3 HTTPS是身披SSL外殼的HTTP
2.4 HTTP採用混合加密機制
2.5證明公開密鑰正確性的證書
2.6 SSL協議
慢:
通信慢。由於大量消耗CPU及內存等資源,導致處理速度變慢。SSL必須進行加密處理。三、HTTPS和HTTP的區別
1.https協議需要到ca申請證書,一般免費證書很少,需要交費。
2.http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3.http和https使用的是完全不同的連接方式,用的埠也不一樣,前者是80,後者是443。
4.http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。