走近HTTP協議之一 基本網路概念與理解

来源:http://www.cnblogs.com/ACFLOOD/archive/2016/05/26/5533022.html
-Advertisement-
Play Games

當今的技術領域,開發者人數最為之多的群體便是web領域,與之相關崗位的包括前端工程師,後臺工程師,移動端開發工程師等等。然而由於受時代浮躁氛圍的影響,許多開發者對最為基礎的HTTP協議都不甚瞭解,這也正是本篇文章的目的--簡單總結一下 瞭解HTTP協議之前你需要掌握的一些基礎知識,基本術語等等。 基 ...


當今的技術領域,開發者人數最為之多的群體便是web領域,與之相關崗位的包括前端工程師,後臺工程師,移動端開發工程師等等。然而由於受時代浮躁氛圍的影響,許多開發者對最為基礎的HTTP協議都不甚瞭解,這也正是本篇文章的目的--簡單總結一下 瞭解HTTP協議之前你需要掌握的一些基礎知識,基本術語等等

 

  1. 基本概念

 

  • 協議

"協議定義了兩個或多個通信實體間交換報文的格式和次序,以及在報文傳輸/接收或其他方面所採取的動作。"--《電腦網路--自頂向下方法》 我們可以把協議理解為規則的集合

(圖:人類交流的協議與網路協議對比)

 

  • HTTP

HyperText Transfer Protocol(超文本傳輸協議)的縮寫,是建立在web應用層的核心協議。

 

  • HTML

HyperText Markup Language(超文本標記語言)的縮寫,web頁面是由對象組成的,對象可以說就是文件,大多數web頁麵包含一個基本HTML文件,可以通過URL來定址。

 

  • Web Browser(瀏覽器)

瀏覽器通過發送請求,獲取伺服器資源,實現了HTTP的客戶端,可以稱作客戶端(Client)。其實現在許多的客戶端也是web客戶端轉制的,包括PC端和移動端。

 

  • Web Server(伺服器)

用於存儲web對象,每個對象由URL定址,web伺服器實現了HTTP的伺服器端(Server)。

 

  • TCP

Translation Control Protocol(傳輸控制協議)的縮寫,是面向連接(Connection-oriented)的傳輸層協議,HTTP協議建立在TCP協議之上,TCP協議為HTTP協議提供可靠數據傳輸服務。運行在不同機器上的進程通過向Socket(套接字)發送報文來進行通信。

 

  • Socket

socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的介面供應用層調用已實現進程在網路中通信。

 

 

  • URL

Uniform Resource Locator(統一資源定位符)的縮寫,不僅標識了Web 資源,還指定了操作或者獲取方式,同時指出了主要訪問機制和網路位置。

主要格式:<協議><特定協議部分>

 

  • URI

Uniform REsource Identifier(統一資源標識符)的縮寫,是以統一的標準化方式標示資源的字元串。

 

  • URN

Uniform Resource Name(統一資源名稱)的縮寫,是URI的一種,用特定命名空間的名字標識資源。使用URN可以在不知道其網路位置及訪問方式的情況下討論資源。

 

  • GET

HTTP協議客戶端對伺服器的請求方法之一。從指定的伺服器中獲取數據

 

  • POST

HTTP協議客戶端對伺服器的請求方法之一。提交數據給指定的伺服器處理

 

學習HTTP協議,大家要瞭解的最基本,最核心的概念就是以上這些,這些概念我會在後面的系列中逐步深入講解和分析,分享一些自己的學習經驗。

 

    2. 辨析與理解

 

  • 辨析URL URI URN

明白這三者,你只需要知道以下幾點:

  • URL和URN都是URI的子集,是URI的一種形式
  • 引入URI的目的是標準化方式標識資源
  • 引入URL是為了便於確定具體的網路位置和訪問方式
  • 引入URN的目的是唯一標識一個實體

 

  • 辨析GET POST

看過好多網上的博客,都在講POST方法比GET方法安全,POST方法會加密等等。這些可以說是錯誤的說法!!

辨析GET與POST,你要明白以下幾點

  • HTTP是應用層上的協議,HTTP協議的四個方法恰好對應了增刪查改功能
  • POST是添加,DELETE是刪除,PUT是修改,GET是查詢。所以POST並不能說比GET安全,兩者功能是不同的。
  • POST和GET傳輸的都是明文,區別是GET能在URL上直接訪問,但本質上都沒有加密。
  • 另外,GET是冪等的,請求1次和請求n次相同,所以一些不是冪等的操作(文件上傳,修改數據等)不能使用GET方法,用POST。

 

 

3. 總結


本文主要總結和分析了網路尤其是WEB開發者需要掌握的一些核心概念,為今後深入瞭解HTTP協議,網路編程,以及對伺服器端的優化,打下良好的基礎。當然,掌握這些還遠遠算不上打好基礎,要想真正掌握好電腦網路,你還需要閱讀相關技術書籍以及大量的編程實踐,加油吧!


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

-Advertisement-
Play Games
更多相關文章
  • 還是從HelloWorld開始說吧... #include <stdio.h> int main(int argc, char* argv[]) { printf("Hello World!\n"); return 0; } 從源文件Hello.cpp編譯鏈接成Hello.exe,需要經歷如下步驟: ...
  • 給初學者之一:淺談java及應用學java 不知不覺也已經三年了 從不知java為何物到現在一個小小的j2ee項目經理雖說不上此道高手,大概也算有點斤兩了吧每次上網,泡bbs逛論壇,沒少去java相關的版面總體感覺初學者多,高手少,精通的更少由於我國高等教育制度教材陳舊,加上java自身發展不過十年 ...
  • 1 二叉樹的鏈式存儲 1.1 鏈式存儲 順序存儲對空間利用率較低,所以,二叉樹一般採用鏈式存儲結構,用一個鏈表來存儲一顆二叉樹。二叉鏈表至少包含3個域:數據域data,左指針域lchild和右指針域rchild,如果再加上一個指向雙親結點的指針就變成了三叉鏈表。 二叉樹的鏈式存儲結構如下: 根據完全 ...
  • C/C++ 預處理元編程 從一個問題開始 以下代碼存在結構性重覆,如何消除? ~~~cpp // EventId.h enum EventId { setupEventId = 0x4001, cfgEventId, recfgEventId, releaseEventId // ... }; ~~ ...
  • I am using `&`: why isn't the process running in the background? No problem. We won't show you that ad again. Why didn't you like it? Uninteresting Mi ...
  • 1.安裝方法1:Mac電腦上面安裝很簡單,直接下載需要的版本解壓即可: 下載網址 https://www.mongodb.com/download-center?jmp=nav#community 方法2: brew install mongodb 2. mongodb 數據預設存在/data/db ...
  • 上篇對python中的字元串進行了列舉和簡單說明,但這些方法太多,逐一背下效率實在太低,下麵我來對這些方法安裝其功能進行總結: 1.字母大小寫相關(中文無效) 1.1 S.upper() -> string 返回一個字母全部大寫的副本 1.2 S.lower() -> string 返回一個字母全是 ...
  • 當我們創建一個集合以後,可以直接使用system.out.println()來列印這個集合,但是,我們需要可以對每個元素進行操作,所以,這裡需要使用迭代器來遍歷集合 迭代器其實就是集合取出元素的方式 調用List對象的iterator()方法,得到Iterator對象,這個類是個介面類型,因此可以知 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...