HTTP協議深入

1.了解web和網絡基礎

  • 有客戶端和服務端雙方參與交互

  • 客戶端發送請求:request

  • 服務端根據請求給出響應:response

  • 請求通過URL來指定要獲取都得資源

  • 響應內容可以是HTML網頁,或者用json表示的數據或者其他二進制文件內容

  • Web使用一種名為HTTP的協議作為規范,完成從客戶端到服務端的一系列運作流程,而協議是指定規則的約定。Web是建立在HTTP協議上的通信。

1.1 web萬維網和HTTP協議

1.1.1 www萬維網誕生

誕生于:1989年3月,蒂姆·伯納斯-李 博士的一篇論文,提出了讓遠隔兩地的研究者們共享知識的設想。

最初的理念:借助多文檔之間的相關聯形成超文本(HyperText),連成可互相參閱的WWW(World Wide Web,萬維網)。

HTTP:HyperText Transfer Protocol,超文本傳輸協議。 HTML:HyperText Markup Language,超文本標記語言。 URL:Uniform Resource Locator,統一資源定位符。

1.2 HTTP的歷史和版本

1.3 當下http協議的使用現狀

  • 場景:除了網頁,承載更多的互聯網應用場景

  • 前端:不再依賴瀏覽器,可以是手機app,客戶端或者一另個服務器

  • 傳輸方式:Ajax的興起改變了原本的同步請求模式

  • 傳輸內容:HTML網頁,二進制文件以外也可以依靠Json表示更廣泛的內容

  • 數據安全:HTTP+SSL組成HTTPS協議,同時擴展更多的密碼學能力

2.與http相關的的協議

2.1 TCP/IP協議族

2.1.1 IP網際協議

  • IP(Internet Protocol)協議位于網絡層,負責將數據包遞給對方。

  • 任何一個參與到網絡上的設備都會用到IP協議,為系統分配對應的IP地址。

  • IP協議和IP地址不是一回事,IP地址是表明網絡中每個設備的標簽。

  • IP地址需要轉換成網卡的物理地址(MAC地址)才能真正完成數據通信。實際上網絡中數據傳輸是異常復雜的,沒有人能夠完全跟蹤整個傳輸過程,網絡中大小網絡、廣域網、城域網、局域網等嵌套,需要路由才能真正傳輸到目的地。

  • IP地址目前分為 IPV4 和 IPV6兩個版本。

2.1.2 TCP協議

  • TCP位于傳輸層,提供可靠的字節流服務。

  • 將大的數據分割成報文段,并將數據可靠的傳輸給對方。

  • 保證可靠----三次握手策略

2.2DNS協議

讓IP地址更容易被記住的DNS協議

  • DNS(Domain Name System)域名服務,與HTTP一樣,位于TCP/IP分層的應用層的協議,它負責提供域名到IP地址的解析服務。

  • 域名:www.baidu.com, pic.baidu.com, sports.sina.com.cn

  • 根域名: com cn com.cn org tech info me

  • 級域名:baidu.com sina.com.cn qq.com 163.com 12306.cn

  • 子域名:pic.baidu.com sports.sina.com.cn news.qq.com

  • 如果要使用域名完成網絡通訊,必須先從域名服務器獲取域名對應的IP地址。

相關網絡協議---各協議之間的關系圖

2.3SSL,HTTPS協議

HHTP協議安全性不足

  • 公開。HTTP是一個公開的協議,任何人都可以隨時了解協議的細節,并可以模仿、模擬、偽造HTTP請求獲取服務端資源。

  • 網絡。HTTP是為網絡數據傳輸而生的,根本職責就是傳輸數據,那么網絡上任何一個 傳輸節點,包括代理、網管、路由器等都可以隨時知道HTTP傳輸的內容。

  • 明文。HTTP/1.1協議本身沒有加密規則,所以整個報文體都是明文在網絡上流轉。

HTTP協議安全性的解決辦法

SSL/TSL安全傳輸
  • SSL(Secure Socket Layer) 安全 套接層

  • TSL(Transport Layer Security)安全傳輸層協議

  • HTTP與SSL或TSL組合使用,建立安全通路

    • SSL+HTTP = HTTPS

    • HTTPS(HTTP Secure)超文本傳輸安全協議

  • SSL通路與TCP一樣,為了安全和完整性都犧牲了一些效率

加密報文體

  • HTTP協議的報文分為:報文頭、報文體

  • 針對報文體的明文內容,結合密碼學相關技術

  • 只將報文體的內容進行加密,保證數據安全

  • 這種方式需要客戶端、服務端單獨支持,提高了系統實現的復雜度

  • 而密鑰和加密算法可以完全私有化,安全性相對較高

實際應用中,已經更多采用兩種方式結合,即加密通訊又加密報文體

3.HTTP協議

HTTP是什么?

HyperText Transfer Protocol ,超文本傳輸協議

  • 協議

    • 有兩個或者多個參與者

    • 定義了交互的約定和規范

  • 傳輸

    • http是一個專門用來在兩點之間傳輸內容的協議

    • 包括請求方和響應方

  • 超文本

    • http不僅可以傳輸文本

    • 還可以傳輸音頻、視頻、文件

HTPP不是什么?

  • 不是瀏覽器、不是操作系統

    • http只是瀏覽器等客戶端傳輸數據時使用的規范

  • 不是HTML

    • http和html經常一起出現但是他們不一樣

    • html是超文本的載體,傳輸的內容

  • 不是編程語言

    • http不是java、python這種編程語言

    • 但是可以用語言來模擬http請求

3.1 URI與URL

URI(Uniform Resource Identifier),統一資源標識符

URL(Uniform Resource Locator),統一資源定位符,也就是網址

3.2 http報文結構

一個例子

3.3 請求方法

3.4 響應狀態碼

3.5 http請求頭

Http首部

重要的HTTP首部參數

3.6 無狀態與身份認證

4.HTTP協議總結

HTTP協議特點

  • 靈活可擴展、首部、內容、狀態碼都可自定義

  • 可靠的傳輸協議、基于TCP協議

  • 是一個應用層協議,與ftp、smtp相比應用更廣泛

  • 采用請求應答通訊模式,客戶端和服務端(C/S)

  • 無狀態的協議

  • 實體數據可分段、可壓縮、支持多語言、靈活編碼

HTTP/1.1的優點

  • 簡單、靈活、容易擴展

  • 應用廣泛、不受編程語言、軟件、硬件的約束

  • 無狀態減輕服務器的壓力、更容易組成服務器集群

  • 明文傳輸讓協議更容易理解、更直觀、調試更容易

HTTP/1.1的缺點

  • 無狀態需要Cookie技術支持

  • 明文傳輸讓數據毫無隱私可言、不安全

  • 沒有客戶身份驗證、容易偽裝、篡改

  • 請求應答模式、對高并發網絡傳輸有挑戰

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39165.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39165.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39165.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jEasyUI 添加分頁組件

jEasyUI 添加分頁組件 jEasyUI(jQuery EasyUI)是一個基于jQuery的用戶界面插件集合,它為用戶提供了一系列的UI組件,如菜單、窗口、數據網格等,以簡化Web頁面的開發。分頁組件是jEasyUI中的一個重要部分,它允許用戶在處理大量數據時,將數據分頁顯示,提高用戶體驗和數據…

AI與大模型工程師證書研修班報名啦!

人工智能大模型是指擁有超大規模參數(通常在十億個以上)、超強計算資源的機器學習模型,能夠處理海量數據,完成各種復雜任務,如自然語言處理、圖像識別等。計算機硬件性能不斷提升,深度學習算法快速優化&…

ESP32CAM物聯網教學03

ESP32CAM物聯網教學03 物聯網小車 小智突發奇想:要是我在點燈物聯APP中多增加幾個按鈕,控制小車的行駛方向,不就可以做成遙控小車了嗎? 點燈物聯控制小車的行駛方向 我們可以重新編輯點燈物聯APP中的設備控件界面,如…

自定義控件之動畫篇(六)——聯合動畫的代碼及xml實現

在Android中,聯合動畫(即組合多種類型的動畫)可以通過編寫Java/Kotlin代碼或XML資源文件來實現。這里我們將分別展示如何通過這兩種方式來實現一個簡單的自定義控件動畫,該動畫將包含平移和縮放效果。 1. XML 資源文件實現 首先…

AI學習指南機器學習篇-梯度提升樹模型應用與Python實踐

AI學習指南機器學習篇-梯度提升樹模型應用與Python實踐 機器學習領域中的梯度提升樹(Gradient Boosting Tree)模型是一種非常強大且廣泛應用的模型,它在各種數據類型和問題類型上都表現出色。在本篇博客中,我們將介紹如何使用Pyt…

開關電源中強制連續FCCM模式與輕載高效PSM,PFM模式優缺點對比筆記

文章目錄 前言一、連續FCCM模式優點:缺點: 二,輕載高效PSM,PFM優點:缺點: 總結 前言 今天我們來學習下開關電源中,強制連續FCCM模式與輕載高效PSM,PFM模式優缺點對比 一、連續FCCM模式 優點: …

mac中如何恢復因為破解腳本導致的IDEA無法啟動的問題

問題 為了在mac中安裝免費的2024版idea,導致下載了一個腳本,使用這個腳本后,但是發現idea還沒有破解,相反導致idea無法啟動,每次點擊,都會彈出“cannot start IDE…” 問題排查 在訪達中點擊mac的應用程…

docker -run hello-world超時

主要原因就是嘗試拉取庫的時候沒有從阿里云鏡像里拉&#xff0c;所以設置一下就好了 這里使用的是ubuntu系統&#xff08;命令行下逐行敲就行了&#xff09; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&quo…

什么是生成式人工智能

什么是生成式人工智能 生成式人工智能生成式人工智能的特點生成式人工智能的工作原理生成式人工智能的類型生成式人工智能面臨的挑戰數據要求訓練復雜性控制輸出道德問題監管障礙 生成式人工智能 生成式人工智能是指旨在生成書面文本、音頻、圖像或視頻形式的新內容的人工智能…

Adobe Acrobat添加時間戳服務器

文章目錄 前言一、Adobe Acrobat添加時間戳服務器1.打開Adobe Acrobat軟件2.點擊【菜單】→ 【首選項】3.點擊【安全性】→【更多】4.點擊【新建】5.輸入【名稱】→【服務器URL】 前言 一、Adobe Acrobat添加時間戳服務器 1.打開Adobe Acrobat軟件 2.點擊【菜單】→ 【首選項…

模擬退火算法1——簡介

模擬退火算法來源于固體退火原理&#xff0c;將固體加溫至充分高&#xff0c;再讓其徐徐冷卻&#xff0c;加溫時&#xff0c;固體內部粒子隨溫升變為無序狀&#xff0c;內能增大&#xff0c;而徐徐冷卻時粒子漸趨有序&#xff0c;在每個溫度都達到平衡態&#xff0c;最后在常溫…

[C++][設計模式][訪問器]詳細講解

目錄 1.動機2.模式定義3.要點總結4.代碼感受1.代碼一2.代碼二 1.動機 在軟件構件過程中&#xff0c;由于需求的變化&#xff0c;某些類層次結構中常常需要增加新的行為(方法)&#xff0c;如果直接在基類中做這樣的更改&#xff0c; 將會給子類帶來很繁重的變更負擔&#xff0c…

加密基本知識:密鑰、簽名、證書

一、密碼(clpher) 是一種用于加密或者解密的算法 密碼學中的密碼&#xff08;cipher&#xff09;和我們日常生活中所說的密碼不太一樣&#xff0c;計算機術語『密碼 cipher』是一種用于加密或者解密的算法&#xff0c;而我們日常所使用的『密碼 password』是一種口令&#xff…

數據恢復篇:5 款最佳 Mac 數據恢復軟件

說到保護我們的數字生活&#xff0c;數據恢復軟件的重要性怎么強調都不為過。無論您是意外刪除了假期照片的普通用戶&#xff0c;還是面臨硬盤損壞的專業人士&#xff0c;隨之而來的恐慌都是普遍存在的。幸運的是&#xff0c;數據恢復工具可以緩解這些壓力。在Mac用戶可用的眾多…

搜維爾科技:使用Manus VR手套和ART光學追蹤功能實現虛擬場景工業仿真操作

&#xff1a;使用Manus VR手套和ART光學追蹤功能實現虛擬場景工業仿真操作 搜維爾科技&#xff1a;使用Manus VR手套和ART光學追蹤功能實現虛擬場景工業仿真操作

Android C++系列:JNI中的線程操作

Java中創建線程三種方式: 繼承Thread類創建線程類;通過Runnable接口創建線程類;通過Callable和Future創建線程。Native 中支持的線程標準是 POSIX 線程,它定義了一套創建和操作線程的 API 。 我們可以在 Native 代碼中使用 POSIX 線程,就相當于使用一個庫一樣,首先需要包…

android中獲取視頻的預覽圖

1.將視頻導入raw文件中&#xff08;轉為bitmap圖像&#xff09; MediaMetadataRetriever 類主要用于從本地文件或者網絡上的文件獲取元數據信息&#xff0c;例如視頻的幀圖像、持續時間等&#xff0c;并不支持直接從網絡地址獲取視頻幀 MediaMetadataRetriever retriever new…

zabbix小白入門:從SNMP配置到圖形展示——以IBM服務器為例

作者 樂維社區&#xff08;forum.lwops.cn&#xff09;許遠 在運維實踐中&#xff0c;Zabbix作為一款強大的開源監控工具&#xff0c;被廣泛應用于服務器、網絡設備和應用程序的監控&#xff0c;成為保障業務連續性和高效運行的關鍵。然而&#xff0c;對于Zabbix的初學者來說&a…

FactoryBean 原理簡介

FactoryBean 首先是一個工廠類&#xff0c;它可以生產指定的Bean&#xff0c;特殊之處在于它可以向Spring容器中注冊兩個Bean&#xff0c;一個是它本身&#xff0c;一個是FactoryBean.getObject()方法返回值所代表的Bean。通過實現 FactoryBean 接口&#xff0c;你可以控制某個…

線程和進程的區別及應用場景

線程和進程的區別及應用場景 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討計算機中兩個重要的概念&#xff1a;線程和進程。這兩者在操作系…