基本概念
http:超文本傳輸協議,是互聯網上應用很廣泛的一個網絡協議。它負責完成客戶端到服務端的一系列操作,專門用來傳輸HTML的超媒體文檔等web內容。他是基於TCP協議的應用層協議。http協議是以明文方式發送信息的,所以安全層很低。
https:是基於安全套接字的http協議,是由SSL+http協議構建的可進行加密傳輸、身份認證的網絡協議。
區別
- http的URL是以http://開頭,而https的URL是以https://開頭。
- http是明文傳輸,安全性低,而https可以進行加密傳輸,身份認證。
- http的標准端口是80,而https的標准端口是443。
http請求
常見的http請求方法:
- GET:從服務器獲得資源
- POST:客戶端向服務器端提交資源
- PUT:修改服務器資源
- DELETE:修改服務器資源
http請求報文和響應報文
請求報文格式:請求行、請求頭部、請求正文。
響應報文格式:狀態行、響應頭部、響應正文。
常見的http狀態碼
-
1XX:信息提示
-
2XX:成功狀態碼(200:OK)
-
3XX:重定向
-
4XX:客戶端錯誤(404:Not Found)
-
5XX:內部服務器錯誤
http首部字段
首部字段分為四種類型:
- 通用首部字段:請求和響應報文都會使用的首部字段。
- 請求首部字段:客戶端向服務器發送請求使用的首部字段。
- 響應首部字段:從服務器向客戶端響應使用的首部字段。
- 實體首部字段:針對請求和響應報文的實體部分使用的首部字段。
一次完整的http請求
1、在地址欄輸入網站的url地址。
2、輸入url地址后,瀏覽器會查找瀏覽器緩存、系統緩存、路由緩存。如果有緩存就可以直接顯示(在Cache—Control的max_age字段中有緩存的有效時間),如果沒有就下一步。
3、通過DNS獲取url對應的ip地址。通過本機的host文件中查找是否有url對應的ip地址,如果沒有就請求DNS進行ip地址的獲取。
4、建立TCP連接。通過TCP三次握手建立連接。
5、瀏覽器向web服務器發送請求。
6、瀏覽器給web服務器發送請求頭信息。如果是POST還要發送請求體。
7、web服務器進行響應。
8、web服務器發送響應頭消息。
9、web服務器發送數據。以響應頭里面的content-type描述的格式發送數據。
10、web服務器關閉連接。web服務器向瀏覽器發送了應答數據之后,就要關閉tcp連接(TCP四次握手關閉連接),如果添加了connection:keep-alive就繼續保持連接。
TCP三次握手
- 第一次握手:建立連接時,客戶端發送syn包(syn=x)並進入SYN_SENT狀態,等待服務器確認。
- 第二次握手:服務器收到syn包,必須確認客戶的SYN(SYN=x+1),同時自己也發送一個SYN包(syn=y),即SYN+ACK包,此時服務器進入SYN_RECV狀態。
- 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=y+1),此包發送完畢,客戶端和服務器進入TCP連接成功狀態,完成三次握手。
TCP四次揮手
- 第一次揮手:客戶端發出fin,並且停止發送數據。
- 第二次揮手:服務器收到fin,發出ack。
- 第三次揮手:服務器發送fin給客戶端。
- 第四次揮手:客戶端發送ack給服務器。