一、先看一張圖:

二、要client與sever能溝通
1.需要一樣的規則,遵循一定的規范-----------協議
好比:不同國家的人,需要一門通用的語言。
2.談到協議------http-------為什么要學的是http協議,而不是其他的:因為BS架構中,它是一個標准協議。
3.http是如何通信的:(4個步驟)
(1).瀏覽器,根據IP地址和端口號(主機域名)與服務器,建立連接。
【好比:A要給B發郵件,A需要知道了B的郵箱地址啊】
(2)向web服務器發送請求數據包
【好比:A給B發的郵件的內容】
(3).web接受請求,並發送相應的響應數據包
【好比:B收到A的郵件,B做出回應,比如給A回復郵件】
(4)瀏覽器收到響應以后,服務器關閉連接
(注意:每一次訪問都是獨立的,而且服務器不會記憶上一次是那個客戶端請求的。)
【好比:B回復以后就刪除了A發來的郵件,並關閉郵箱】
4.談到通信的步驟àURL------發請求------響應請求
(一)
(1)URL: UniformResourceLocator(統一資源定位符),網頁地址。
URL的格式:http://host[“:”port][abs_path] https://host[“:”port][abs_path]
(2) URI:Uniform Resource Identifier(標識、定位任何資源的字符串)
(二) 發請求
請求數據包包括(4部分):請請求行,消息報頭,空行,請求內容。
請求行:
格式: Method Request-URI HTTP-Version (空格分開)
Method表示請求方法
Request-URI是一個統一資源標識符
HTTP-Version表示請求的HTTP協議版本
(1) Method請求方法有多種:
GET: 常用。
在瀏覽器的地址欄中輸入網址的方式訪問網頁。
安全系數低。
POST:常用於表單的提交,用於登陸注冊界面。
該方法要求被請求服務器接受附在請求后面的數據。
比如:www.baidu.com/?name=ouyang&age=18[o1]
相對安全。
HEAD: 與GET方法幾乎是一樣的
(HEAD請求的回應部分的HTTP頭部中包含的信息與通過GET請求所得到的信息是相同的。利用這個方法,不必傳輸整個資源內容,就可以得到Request-URI所標識的資源的信息。)
常用於測試超鏈接的有效性,是否可以訪問,以及最近是否更新。
(三) 響應請求
1.在接收和解釋請求消息后,服務器返回一個HTTP響應消息
2.HTTP響應也是由四個部分組成,分別是:狀態行、消息報頭、空行、響應內容
狀態行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
例子:HTTP/1.1 200 OK (CRLF)
**:
1xx:指示信息--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
200代表 客戶端請求成功
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
400 Bad Request 客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized 請求未經授權
403 Forbidden 服務器收到請求,但是拒絕提供服務
404 Not Found 請求資源不存在
5xx:服務器端錯誤--服務器未能實現合法的請求
503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常
