2.圖解HTTP-HTTP協議

来源:http://www.cnblogs.com/cs19860814/archive/2017/12/19/8067660.html
-Advertisement-
Play Games

1.HTTP簡介 http是用於客戶端與服務端之間的通信 實際情況中客戶端與服務端角色有可能互換,但從一條通信線路來說伺服器端和客戶端角色是確定的,http協議知道那個是服務端那個是客戶端呢。 http協議規定,請求從客戶端發出,服務端響應請求並返回。服務端沒有接受請求時是不會發送響應。 客戶端發送 ...


1.HTTP簡介

http是用於客戶端與服務端之間的通信

image

實際情況中客戶端與服務端角色有可能互換,但從一條通信線路來說伺服器端和客戶端角色是確定的,http協議知道那個是服務端那個是客戶端呢。

http協議規定,請求從客戶端發出,服務端響應請求並返回。服務端沒有接受請求時是不會發送響應。

image

客戶端發送給伺服器端的請求報文中內容

image

GET:請求類型,稱之為方法(method);

/index.htm:請求的資源對象,也叫作URI(request-URI);

HTTP/1.1:http的版本號

image

伺服器端相應內容如下

image

image

2.HTTP是無狀態協議

http協議不保存請求和響應信息

image

      每當有新的請求發送時,就會有對應的新響應產生,協議本身不保留之前一切的請求或響應報文的信息,這是為了更快的處理大量事務,確保協議的可伸縮性,而特意把HTTP協議涉及成如此簡單的。

     雖然HTTP協議是無狀態協議,但是為了實現期望的保持狀態功能,於是引入了Cookie技術,有了Cookie就可以管理狀態了。

3.HTTP協議的方法

GET:獲取資源

GET方法用來請求訪問已被URI識別的資源,指定的資源經伺服器端解析後返回相應內容。

image

image

POST:傳輸實體主體

post方法用來傳輸實體的主體,雖然get方法也可以傳輸實體的主體,但是一般情況不使用get方法傳輸,而是使用post方法傳輸。post的功能和get很相似,但是post的主要目的並不是獲取響應的主體內容。

image

image

PUT:傳輸文件

put方法用來傳輸文件,就像FTP協議的文件上傳一樣,要求請求報文的主體中包含文件內容,然後保存到請求的URI指定的位置。但是由於HTTP/1.1的PUT方法自身不帶驗證機制,任何人都可以上傳文件,存在安全性問題,因此一般WEB網站不使用該方法。若配合WEB應用程式的驗證機制,或架構設計採用REST(REpresentational State Transfer,表徵狀態轉移)標準的同類Web網站,就可能開發使用PUT方法。

image

image

HEAD:獲得報文首部

head方法和get方法一樣,知識不返回報文主體部分,用於確認URI的有效性及資源更新的日期時間等。

image

DELETE:刪除文件

delete方法與put方法相反,用於請求刪除指定文件,情況與put方法一樣。

image

image

OPTIONS:詢問支持的方法

options方法用來查詢針對請求URI的資源支持的方法。

image

TRACE:追蹤路徑

trace方法是讓web伺服器端將之前的請求通信環回給客戶端的方法。發送請求時,在Max-Forwards首部欄位中填入數值,沒經過一個伺服器端就將該數字減1,當數值剛好減到0時,就停止繼續傳輸,最後接收到請求的伺服器端則放回狀態碼200OK的響應。

客戶端通過trace方法可以查詢發出的請求時怎樣被加工修改/竄改的,但是它容易引發XST攻擊,通常不會用到。

image

CONNECT:要求用隧道協議連接代理

它要求在於代理伺服器通信是建立隧道,實現用隧道協議進行TCP通信,主要使用SSL(安全套接字)和TLS(傳輸層安全)協議把通信內容加密後經網路隧道傳輸

connect方法格式:

image

 

 

 

image

image

3.持久連接節省通信量

image

之前通信情況都是傳輸較小的文本,所以問題不大,隨著HTTP的普及,文檔中包含大量圖片的情況多了起來,比如一個瀏覽器瀏覽一個包含多張圖片的頁面時,也會請求html頁面中包含的其他資源,每次請求都會造成無謂的TCP連接的建立和斷開,增加通信量的開銷。

image

為瞭解決上述TCP連接的問題,HTTP/1.1提出了持久連接的方法。持久連接的特點就是,只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態。

image

管線化

持久連接是的多數請求以管線化方式發送成為可能。之前發送請求後需等待並受到響應才能發送下一個請求,管線化技術出現後不用等待響應可直接發送下一個請求。這樣就可以做到同時並行發送多個請求,而不需要一個接一個的等待響應。

image

4.Cookie狀態管理

Cookie技術通過請求和響應報文中寫入Cookie信息來控制客戶端的狀態

Cookie通過響應報文中的Set-Cookie的首部欄位信息,通知客戶端保存Cookie,當下次客戶端再次發往伺服器請求時,客戶端會自動在請求報文中加入cookie值。伺服器端發現客戶端發送來得Cookie後,檢查從哪個客戶端發來的連接請求,然後對比伺服器的記錄,最後得到狀態信息。

image

image

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • let mview = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) //獲取delegate let delegate = UIAp ...
  • 用JdbcTemplate的方法完成, 查詢資料庫表,把用戶表sw_user所有數據以List<User>集合返回 在JdbcTemplateDemo類中增加查詢返回所有對象集合的方法queryAllObject() 數據源DriverManagerDataSource不變 jdbcTemplate ...
  • 在EF 中使用mysql關聯取數據時,如果當前實體中包含另一個實體的list成員,而這個成員為空的話,在json序列化的時候就會報錯: '((System.Data.Entity.DynamicProxies.T_Module_FA775BC9946D7E533F86AFE9B59A3A33C411 ...
  • 1.中文亂碼問題 利用ef更新數據到mysql資料庫中,中文就會變成亂碼"???",就算把mysql的資料庫的編碼設置為"utf8"也會變成亂碼,從網上查詢了下, 在數據連接字元串後面加上:Character Set=utf8;即可,這樣插入mysql的中文就不會變成亂碼了。 2.HTML文本亂碼問 ...
  • 一.什麼是I/0流? 英文翻譯:Inout/Output,在程式里簡單的理解為讀寫數據操作數據的意思。流操作是為瞭解決體積大數據占用太多的記憶體,就是分段進行操作。就跟我們吃飯一樣,一口一口的吃,還沒見過誰直接一口吃完的。流就是細水長流。 在我們強大的Net中,就是微軟為了簡化我們的工作,為了我們能對 ...
  • 關於貪吃蛇,一直都想做一個,但一直以來奈何總是沒有任何思路,經過這幾天的思索,總算是給弄出來了 主要用到的是 Graphics 現在來看這張圖,這張圖假定每一個單元格是10*10的,那麼在這張圖裡,蛇的每一節就是10*10的大小 可以看出當前蛇的長度是"3"節,假定這一個單元格是10像素的話, 這3 ...
  • 在 ...
  • Unity3d 4及之前的版本中動畫的播放用的animation,可直接獲取其播放持續長度。但5.x及以後的版本中都是用animator來播放動畫了。 https://docs.unity3d.com/Manual/AnimationOverview.html While Mecanim is re ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...