計算機網路要點---Http
計算機網路要點---Http
1、工作流程
一次HTTP操作稱為一個事務,其工作過程可分為四步:
- 首先客戶機與伺服器需要建立 TCP 連線。只要單擊某個超級連結,HTTP的工作開始。
- 建立連線後,客戶機發送一個請求給伺服器,請求方式的格式為:統一資源識別符號(URL)、協議版本號,後邊是MIME資訊包括請求修飾符、客戶機資訊和可能的內容。
- 伺服器接到請求後,給予相應的響應資訊,其格式為一個狀態行,包括資訊的協議版本號、一個狀態碼,後邊是MIME資訊包括伺服器資訊、實體資訊和可能的內容。
- 客戶端接收伺服器所返回的資訊通過瀏覽器顯示在使用者的顯示屏上,然後客戶機與伺服器斷開 TCP 連線。
如果在以上過程中的某一步出現錯誤,那麼產生錯誤的資訊將返回到客戶端,有顯示屏輸出。對於使用者來說,這些過程是由HTTP自己完成的,使用者只要用滑鼠點選,等待資訊顯示就可以了。
2、狀態碼
狀態程式碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:
1xx:指示資訊--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤--伺服器未能實現合法的請求
常見狀態碼:
其他詳細參照: Http 詳細狀態碼
3、常用的HTTP方法有哪些?
- GET: 用於請求訪問已經被URI(統一資源識別符號)識別的資源,可以通過URL傳參給伺服器
- POST:用於傳輸資訊給伺服器,主要功能與GET方法類似,但一般推薦使用POST方式。
- PUT: 傳輸檔案,報文主體中包含檔案內容,儲存到對應URI位置。
- HEAD: 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效。
- DELETE:刪除檔案,與PUT方法相反,刪除對應URI位置的檔案。
- OPTIONS:查詢相應URI支援的HTTP方法。
4、GET 和 POST 方法都是安全和冪等的嗎?
先說明下安全和冪等的概念:
- 在 HTTP 協議裡,所謂的「安全」是指請求方法不會「破壞」伺服器上的資源。
- 所謂的「冪等」,意思是多次執行相同的操作,結果都是「相同」的。
那麼很明顯 GET 方法就是安全且冪等的,因為它是「只讀」操作,無論操作多少次,伺服器上的資料都是安全的,且每次的結果都是相同的。
POST 因為是「新增或提交資料」的操作,會修改伺服器上的資源,所以是不安全的,且多次提交資料就會建立多個資源,所以不是冪等的。
5、GET 和 POST 方法的區別?
1、GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的資料放在HTTP包的Body中.
2、GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制.
3、GET方式需要使用Request.QueryString來取得變數的值,而POST方式通過Request.Form來獲取變數的值。
4、GET方式提交資料,會帶來安全問題,比如一個登入頁面,通過GET方式提交資料時,使用者名稱和密碼將出現在URL上,如果頁面可以被快取或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該使用者的賬號和密碼.
6、HTTP 和 HTTP 的區別?
- HTTP 是超文字傳輸協議,資訊是明文傳輸,存在安全風險的問題。HTTPS 則解決 HTTP 不安全的缺陷,在 TCP 和 HTTP 網路層之間加入了 SSL/TLS 安全協議,使得報文能夠加密傳輸。
- HTTP 連線建立相對簡單, TCP 三次握手之後便可進行 HTTP 的報文傳輸。而 HTTPS 在 TCP 三次握手之後,還需進行 SSL/TLS 的握手過程,才可進入加密報文傳輸。
- HTTP 的埠號是 80,HTTPS 的埠號是 443。
- HTTPS 協議需要向 CA(證書權威機構)申請數字證書,來保證伺服器的身份是可信的。
HTTPS 解決了 HTTP 的哪些痛點?
HTTP 由於是明文傳輸,所以安全上存在以下三個風險:
- 竊聽風險,比如通訊鏈路上可以獲取通訊內容,使用者號容易沒。
- 篡改風險,比如強制入垃圾廣告,視覺汙染,使用者眼容易瞎。
- 冒充風險,比如冒充淘寶網站,使用者錢容易沒。
HTTPS 在 HTTP 與 TCP 層之間加入了 SSL/TLS
協議,可以很好的解決了上述的風險:
- 資訊加密:互動資訊無法被竊取,但你的號會因為「自身忘記」賬號而沒。
- 校驗機制:無法篡改通訊內容,篡改了就不能正常顯示,但百度「競價排名」依然可以搜尋垃圾廣告。
- 身份證書:證明淘寶是真的淘寶網,但你的錢還是會因為「剁手」而沒。
可見,只要自身不做「惡」,SSL/TLS 協議是能保證通訊是安全的。
HTTPS 是如何解決上面的三個風險的?
- 混合加密的方式實現資訊的機密性,解決了竊聽的風險。
- 摘要演算法的方式來實現完整性,它能夠為資料生成獨一無二的「指紋」,指紋用於校驗資料的完整性,解決了篡改的風險。
- 將伺服器公鑰放入到數字證書中,解決了冒充的風險。