寫了這麼久的項目,幾乎每個項目都用到了網絡請求,不對,是所有的項目。一直沒有對這一塊做過詳細的總結,今天結合一些網上的資料以及自己的理解,來談談Http。廢話不多說,直奔正題吧......
我們如果想要真正的瞭解Http,我們必須要知道什麼是Http?
一、什麼是Http?
超文本協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲廣泛的一種網絡協議。Http定義了瀏覽器(即萬維網客戶進程)怎樣向萬維網服務器請求萬維網文檔,以及服務器怎麼把文檔傳給瀏覽器。Http是萬維網可靠的交換文件(包括文本、圖像、聲音、以及視頻等)的基礎。
工作流程:一次的Http請求成爲一次事務,其工作流程可以分爲四步:
1、首先客戶端和服務器需要建立連接。這個是從客戶端發起的。
2、建立連接之後,客戶端發送一個請求給服務器,請求方式的格式爲:統一資源定位符(URL)、協議版本號、後邊是MIME的信息(請求的是文本、圖像、聲音、視頻.....)包括請求修飾符、客戶端的信息以及可能的內容。
3、服務器接到請求後,基於相應的響應信息,其格式爲一個狀態行、包括信息的協議版本號、一個成功或者錯誤的代碼、後邊是MIME信息包括服務器信息,實體信息以及一些可能的內容。
4、客戶端接受到服務器端返回的信息之後,根據需要將信息展示出來,然後斷開與服務器的連接。
Http協議永遠是客戶端發起,服務器端響應。
二、什麼是URL?
統一資源定位符(Uniform Resource Locator),是因特網上標準的資源地址。URL格式主要分爲三個部分:
1、協議,如Http、Https。
2、存有該資源的IP地址,有時候也包括端口號。如:192.168.1.112(現在基本使用域名代替,如:www.baidu.com)
3、主機資源的具體地址。如文件和目錄名。如:index.jsp或aaa.doc
1和2之間用“://”隔開,2和3用“/”分開。1和2是不可缺少的,3是可以缺少的。
三、什麼是TCP三次握手?
SYN(synchronous)是TCP/IP建立連接時的握手信號。ACK(acknowledgement)爲確認符,在數據通信中,接收站發給發送站的一種傳輸類控制字符。表示發來的數據已確認接受。
過程如下圖所示:
在客戶端和服務器建立正常的TCP網絡連接的時候,客戶端首先會向服務器發送一個SYN信息,服務器使用SYN+ACK應答表示接收到了這個消息,最後客戶端再以ACK消息響應,這樣一來,客戶端和服務器之間就建立了一種可靠的TCP連接,數據可以在客戶端和服務器之間進行傳遞。
四、Http請求方式?GET:請求獲取Request-Uri所標識的資源
POST:在Request-Uri所標識的資源後附加新的數據
Get和Post是比較常見的Http請求方式,另外還有HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS。
五、Http響應碼信息?200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized //請求未經授權,這個狀態碼必須和WWW-Authenticate報頭一起使用
403 Forbidden //服務器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,大多是輸入了錯誤的URL
500 Internal Server Error //服務器發生不可預期的錯誤
503 Server Unavailable //服務器不能處理當前客戶端的請求,一段時間後可能會恢復正常
六、Http協議的特點?1、支持客戶端/服務器模式:就是客戶端請求,服務器做出響應。
2、簡單快速:客戶端向服務器請求服務時,是需要傳入請求方法和路徑。請求方法常用的有GET、POST。每種方法都規定了客戶端與服務器聯繫的類型不同。
3、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4、無連接:無連接的含義就是限制每次連接只處理一個請求。服務器處理完客戶端的請求,並收到客戶端的應答之後,即立即斷開連接。
5、無狀態:HTTP協議是無狀態的協議。無狀態就是指協議對於事務的處理是沒有記憶能力的。缺少狀態就意味着如果後續處理需要前面的信息,則必須重新傳送,這樣會導致每次連接傳送的數據量大。另一方面,在服務器不需要先前信息時,它的應答就會較快。