Http協議(超文本傳輸協議)是位於TCP/IP結構中的應用層的一種傳輸協議,規定了萬維網服務器之間相互通信的規則。比如比較常見的Web瀏覽器客戶端與應用服務器的通信!萬維網服務器之間互相通信的時候往往需要其它協議的配合才能完成整個通信的作業,比如應用層的DNS協議,網絡層的IP協議等眾多協議。然而,為什么網絡通信需要規定那么多協議呢?原因終歸於網絡體系的分層,大家都知道標准的OSI有7層,而當下使用的是TCP/IP結構有4層,那么在各層的通信當中,就需要規定各自的規則,使通信成為可能!Http協議就是應用層其中的一種協議!那么在網絡體系中到底什么是Http協議,Http協議規定了什么,怎么通過Http協議來進行網絡通信的?下面我將會簡要說明,具體詳細在后續的文章會一一介紹!
一、什么是Http協議
在解釋Http協議之前,大家首先必須了解實體與對等實體。實體指在網絡體系中,每一層用於實現該層功能的活動元素稱為實體(包括該層的硬軟件);對等實體指不同機器上位於同一層次、完成相同功能的兩個實體。那么Http協議就是兩個對等實體之間在應用層有效地通信所遵守的規則集合。協議由語法、語義和語序三大要素構成。語法包括數據格式,信號電平等;語義指協議語法成分的含義,包括協議用的控制信息和差錯管理;語序包括時序控制和速度匹配關系。在后續的介紹中,會不斷的介紹這三大要素的內容!
二、Http協議規定了什么
Http協議在Http通信過程中,規定了如何進行網絡連接、交換的信息格式、如何傳輸信息的規則!
三、如何通過Http協議來通信
在回答這個問題之前,大家首先得了解以下幾個概念:
- Web客戶端和服務器:Web客戶端可以發送Http請求,比如瀏覽器;服務器能夠響應Http請求
- Web資源:所有能夠提供Web內容的東西都是Web資源
媒體格式:在因特網中有數千種不同的數據類型即MIME,用來描述並標記Web資源。比如text/html 為HTML格式的文本,image/gif為GIF格式的圖片
URI(URL,URN):統一資源標識符,URI有URL,URN2種形式,其中URL描述資源的特定位置(已廣泛使用),而URN描述資源的唯一名稱(處於試驗階段)
- 事務:Http事務由一條請求命令和一個響應結果組成
方法:描述請求的命令,通過這些命令來告訴服務器要執行什么動作,比如GET,PUT,DELETE,POST,HEAD
狀態碼:描述響應的狀態,通過這些狀態來告訴客戶端請求的狀態,比如200,302,404
- 報文:描述傳輸的數據,包括請求報文和響應報文,報文包括以下格式
起始行:報文的第一行,在請求報文中說明要做些什么,在響應報文中說明請求的狀態
首部字段:起始行后面有零個或多個首部字段,首部以一個空格結束。比如Content-Length:300,表示響應主體的長度
主體:請求主體包含要發送給服務器的數據,響應主體包含要返回給客戶端的數據,如下圖
- 連接:創建客戶端與服務器端的一個網絡連接,Http協議建立的是TCP連接
通過了解這以上幾個概念,相信大家已經大概知道HTTP協議是怎么進行通信的了。Http協議是通過創建TCP連接,通過URI來定位Web資源,Web客戶端發起Http請求並攜帶請求,服務器將響應報文返回給Web客戶端的一種請求/響應模式的一種通信。
四、Http的發展歷史
HTTP/0.9:1991年的版本,僅支持GET請求方法,不支持多媒體內容的MIME類型,各種HTTP首部,版本號
HTTP/1.0:添加了版本號,各種HTTP首部
HTTP/1.0+:添加了持久的keep-alive連接,虛擬主機支持,以及代理連接
HTTP/1.1::主要引入重要的性能優化措施,這個版本也正是我們現在使用的HTTP版本
HTTP-NG/2.0::將來....
五、Http通信的支撐
Http通信的支撐主要包括代理、緩存、網關、隧道以及Agent代理,有了這些支撐,能使通信更加安全,性能更高,更智能。在后續會不斷介紹。
六、總結
通過這篇Http協議概要,我們主要了解了什么是Http協議、Http協議的組成部分比如報文及一些輔助HTTP通信的協議比如DNS,簡要的描述了Http協議在應用層是如何通信等內容。