HTTPweb
1. HTTP(HyperText Transfer Protocol超文本傳輸協議)瀏覽器
[1]TCP+80緩存
[2]狀態碼:安全
i.1XX:表示請求已經接受,繼續處理請求服務器
ii.2XX:請求已經完成處理,例:cookie
a)200請求已經正常處理完畢session
iii.3XX:表示把請求的URL定位到其它目錄,例:併發
b)301請求永久重定向分佈式
c)302請求臨時重定向性能
d)304請求被重定向到客戶端本地緩存
iv.4xx:客戶端出現錯誤,例:
a)400客戶端請求存在語法錯誤
b)401客戶端請求沒有通過受權
c)403客戶端的請求被服務器拒絕,通常是沒有權限
d)404客戶端請求的URL在服務器不存在
v.5XX:服務器端出現錯誤,例:
a)500服務器端發生永久錯誤
b)503服務器端發生臨時錯誤
[3]分佈式,萬維網
2.HTTPS
通訊過程:非對稱加密和對稱加密SSL(位於應用層和傳輸層之間);端口TCP+443;
3.無狀態協議
無狀態是指協議對於事務處理沒有記憶能力,服務器不知道客戶端是什麼狀態。
因爲Web服務器要面對不少瀏覽器的併發訪問,爲了提升Web服務器對併發訪問的處理能力。
4.鏈接(connection)
Connection: keep-alive(保持鏈接) 當一個網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP鏈接不會關閉,若是客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經創建的鏈接(可設定時間)。
Connection: close 表明一個Request完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP鏈接會關閉,當客戶端再次發送Request,須要從新創建TCP鏈接。
5.請求方法
GET |
向特定的資源發出請求 |
HEAD |
相似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 |
POST |
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會致使新的資源的創建和/或已有資源的修改。 |
PUT |
向指定資源位置上傳其指定內容 |
PATCH |
是對 PUT 方法的補充,用來對已知資源進行局部更新 。 |
DELETE |
請求服務器刪除Request-URL所標識的資源 |
CONNECT |
HTTP/1.1 協議中預留給可以將鏈接改成管道方式的代理服務器。 |
OPTIONS |
返回服務器針對特定資源所支持的HTTP請求方法。也能夠利用向Web服務器發送'*'的請求來測試服務器的功能性。 |
TRACE |
回顯服務器收到的請求,主要用於測試或診斷。 |
6.GET和POST的區別
[1] 位置不一樣:GET提交的數據會放在URL以後,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的主體中。
[2] 大小限制:GET提交的數據大小有限制,由於瀏覽器對URL的長度有限制,而POST方法提交的數據沒有限制。
[3] 安全問題:GET方式提交數據,會帶來安全問題,好比一個登陸頁面,經過GET方式提交數據時,用戶名和密碼將出如今URL上。
7.工做流程
[1] No1:瀏覽器(192.168.1.6)向服務器(115.239.210.36)發出鏈接請求。此爲TCP三次握手第一步,此時從圖中能夠看出,爲SYN,seq:X (x=0);
[2] No2:服務器(115.239.210.36)迴應了瀏覽器(192.168.1.6)的請求,並要求確認,此時爲:SYN,ACK,此時seq:y(y爲0),ACK:x+1(爲1)。此爲三次握手的第二步;
[3] No3:瀏覽器(192.168.1.6)迴應了服務器(115.239.210.36)的確認,鏈接成功。爲:ACK,此時seq:x+1(爲1),ACK:y+1(爲1)。此爲三次握手的第三步;
[4] No4:瀏覽器(192.168.1.6)發出一個頁面HTTP請求;
[5] No5:服務器(115.239.210.36)確認;
[6] No6:服務器(115.239.210.36)發送數據;
[7] No8:客戶端瀏覽器(192.168.1.6)確認;
[8] 斷TCP鏈接(若是設置keep-alive保持鏈接)
8.請求信息
請求行(請求方法/URL/協議版本)、消息報頭(字段名/值)、空行(報頭髮送完畢)、請求正文
9.響應消息
狀態行(協議版本/狀態碼/狀態消息)、消息報頭、空行、響應正文
10.解決HTTP無狀態的問題
[1] Cookies:經過Cookies,服務器就能夠清楚的知道請求2和請求1來自同一個客戶端
[2] Session(會話)ID:服務器客戶端建立一個session id
[3] 經過表單變量和QueryString保持狀態,例:www.xxx.com/xxx.aspx?var1=value&var2=value2
[4] 區別:Cookies將狀態保存再在客戶端,Session將狀態保存在服務器端;Session更加安全不會任意讀取客戶信息;考慮到減輕服務器性能方面,應當使用cookies。
11.URL
[1] 協議://主機:[端口]/路徑/[;url-params][?query-string][#anchor]例:http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff
12.緩存
[1] 緩存做用:減小的帶寬消耗和延遲
[2] 客戶端緩存:未修改返回304(請求被重定向到客戶端本地緩存)
[3] WEB代理:validation(驗證)或者Freshness指定緩存最長時間。
13. 斷點續傳
採用分段的原理,只請求未下載的部分