最近我在作前端面試題總結系列,感興趣的朋友能夠添加關注,歡迎指正、交流。前端
HTTP 的全稱是 Hyper Text Transfer Protocol,翻譯過來就是「超文本傳輸協議」。nginx
HTTP 是一個簡單的請求-響應協議,它一般運行在 TCP 之上。它指定了客戶端可能發送給服務器什麼樣的消息以及獲得什麼樣的響應。git
HTTP 詳細規定了瀏覽器和萬維網(WWW = World Wide Web)服務器之間互相通訊的規則,經過因特網傳送萬維網文檔的數據傳送協議。面試
自 Tim Berners-Lee 博士和他的團隊在 1989-1991 年間創造出 HTTP 以來,HTTP 已經發生了太多的變化,在保持協議簡單性的同時,不斷擴展其靈活性。現在,HTTP已經從一個只在實驗室之間交換文件的早期協議進化到了能夠傳輸圖片,高分辨率視頻和3D效果的現代複雜互聯網協議。編程
HTTP 是應用層的協議,經過 TCP,或者是 TLS -加密的TCP鏈接來發送,理論上任何可靠的傳輸協議均可以使用。瀏覽器
同其餘應用層協議同樣,HTTP 協議是爲了實現某一類具體應用的協議,並由某一運行在用戶空間的應用程序來實現其功能。服務器
HTTP 是一種協議規範,這種規範記錄在文檔上,爲真正經過 HTTP 進行通訊的 HTTP 的實現程序。markdown
由於其良好的擴展性,時至今日,它不只被用來傳輸超文本文檔,還用來傳輸圖片、視頻或者向服務器發送如 HTML 表單這樣的信息。HTTP 還能夠根據網頁需求,僅獲取部分 Web 文檔內容更新網頁。網絡
HTTP 的服務器端實現程序有 httpd、nginx 等。架構
其客戶端的實現程序主要是 Web 瀏覽器,例如 Firefox、Google Chrome、Safari、Opera 等。
Web 服務是基於 TCP 的,所以爲了可以隨時響應客戶端的請求,Web 服務器須要監聽在 80/TCP 端口,這樣客戶端瀏覽器和 Web 服務器之間就能夠經過 HTTP 進行通訊了。
HTTP 是一個標準的客戶端服務器模型。
客戶端和服務端經過交換各自的消息(與數據流正好相反)進行交互。由像瀏覽器這樣的客戶端發出的消息叫作 requests,被服務端響應的消息叫作 responses。
請求和響應消息的頭以 ASCII 形式給出;而消息內容則具備一個相似 MIME 的格式。這個簡單模型是早期 Web 成功的有功之臣,由於它使開發和部署很是地直截了當。
它是在 Web 上進行數據交換的基礎,是一種 client-server 協議。
請求經過一個實體被髮出,實體也就是用戶代理。大多數狀況下,這個用戶代理都是指瀏覽器,固然它也多是任何東西,好比一個爬取網頁生成維護搜索引擎索引的機器爬蟲。
也就是說,請求一般是由像瀏覽器這樣的接受方發起的。一個完整的Web 文檔一般是由不一樣的子文檔拼接而成的,像是文本、佈局描述、圖片、視頻、腳本等等。
HTTP 不提供任何方式的數據加密,若是攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就能夠直接讀懂其中的信息,所以,HTTP 協議不適合傳輸一些敏感信息,好比:信用卡號、密碼等支付信息。
HTTP 是一種運行於 TCP 協議上的應用層協議。
~
~ 本文完,感謝閱讀!
~
學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!
你們好,我是〖編程三昧〗的做者 隱逸王,個人公衆號是『編程三昧』,歡迎關注,但願你們多多指教!
你來,懷揣指望,我有墨香相迎! 你歸,不管得失,惟以餘韻相贈!
知識與技能並重,內力和外功兼修,理論和實踐兩手都要抓、兩手都要硬!