HTTP協議概述 基本概念說明

2021-09-25 19:37:36 字數 3913 閱讀 6263

web內容是儲存在web伺服器上的,web伺服器所使用的是http協議,因此經常會被稱為http伺服器,所以說,http伺服器是使用http協議訪問的伺服器,tcp伺服器使用tcp協議訪問的伺服器;

網際網路上有數千種不同的資料型別,http使用mime來描述並標記多**內容,最初mime(multipurpose internet mail extension,多用途網際網路郵件擴充套件)是為了解決不同電子郵件系統之間搬移報文時存在的問題。http伺服器會為所有http物件資料附加乙個mime型別,當web瀏覽器從伺服器中取回乙個物件是會檢視相關的mime型別,來判斷它應該如何處理這個物件。

mime型別是一種文字標記,表示一種主要的物件型別和乙個特定的子型別,中間由一條斜槓來分隔。

html格式的文字:text/html

jpeg格式:image/jpeg

等等uri(uniform resource identifer)統一資源識別符號,類似於現實中的位址一樣,用於標記網路中的資源資訊。uri有兩種形式,分別稱為url和urn。

url

url(uniform resource locator)統一資源定位符,是uri中最常見的形式,它描述了一台特定的伺服器上某種資源的特定位置。

格式為: 協議://主機名/資源路徑

現在,幾乎所有的url都是uri。

urn

uri的第二種形式是統一資源名(urn)

http中的事務是由一條從客戶端發往伺服器的請求命令和乙個從伺服器發回客戶端的響應結果組成。這種通訊是通過名為http 報文的格式化資料塊組成。

http支援幾種不同的請求命令,這些命令被稱為http方法(http method)。每條 http請求報文都包含乙個方法,這個方法會告訴伺服器需要至此那個什麼動作。

每條http響應報文返回時都會攜帶乙個狀態碼。狀態碼是乙個三位數字的**,告知客戶端是否請求成功,或者是否需要採取其他動作。

常見的狀態碼:

200    ok,正確返回

302    redirect(重定向),請到其他地方去獲取資源。

404    not found(沒找到),無法找到這個資源。

http報文包括以下三個部分:起始行,首部字段(請求頭,header),主體(請求體)

tcp/ip

http是個應用層協議,http無需操心網路通訊的具體細節,它把聯網的細節都交給通用可靠的網際網路傳輸協議tcp/ip協議(

tcp協議提供了:

說明:tcp/ip 不是tcp協議 + ip協議,它是乙個協議族,包含多個協議,如tcp協議,ip協議,udp協議等。其中tcp協議是傳輸層協議。

http協議與tcp協議的關係

用網路術語來說,http協議位於tcp協議的上層,http使用tcp來傳輸其報文資料,與之類似,tcp 則位於ip的上層。

如下:連線、ip位址及埠號

在http客戶端想伺服器傳送報文之前,需要用網際協議(internet protocol,ip)位址和埠號在客戶端與伺服器端建立一條tcp/ip連線。

在tcp中,你需要知道伺服器的ip位址,以及與伺服器上執行的特定軟體相關的tcp埠號。那麼怎麼獲得http伺服器的ip位址和埠號呢?當然是通過url。(說明:瀏覽器是通過url中的主機名/ip位址和埠號,與伺服器建立tcp連線。)

對於: 這個url來說,它沒有使用數字形式的ip位址,它使用的是文字形式的網域名稱,或者稱為主機名。主機名就是ip位址比較人性化的別稱。可以通過一種稱為網域名稱服務的(domain name service,dns)的機制,方便的將主機名轉換為ip位址。同樣的,我們觀察到它還沒有埠號。當,http的url中沒有埠號時,我們可以假設預設埠號是80。

基本的瀏覽器連線處理流程:

步驟如下:

乙個使用telnet的例項

由於http使用了tcp/ip傳輸協議,而且它是基於文字的,沒有使用那些難以理解的二進位制格式,因此很容易直接與web伺服器進行對話。

telnet程式可以將鍵盤連線到某個目標tcp埠,並將此tcp埠的輸出會送到顯示屏上。telnet常用於遠端終端會話。而且它幾乎可以連線幾乎所有的tcp伺服器,包括http伺服器。

可以通過telnet程式直接與web伺服器進行對話。通過telnet,可以開啟一條到某台機器上某個埠的tcp連線。然後直接向那個埠輸入一些字元。web伺服器會將telnet程式作為乙個web客戶端來處理,所有回送給tcp連線的資料都會顯示在螢幕上。

要明確的是,telnet可以很好地模擬http客戶端,但是不能作為伺服器使用。類似的工具還有nc(netcat),它比telnet更方便。

http/0.9只支援get方法,不支援多**內容的mime型別,各種http首部(請求頭,header)或者版本號。

http/1.0乙個得到廣泛使用的http版本

http/1.0+ 非正式的http擴充套件版

http/1.1 當前使用的版本,它校正了http設計中的結構性缺陷,明確語義,引入重要的效能優化措施,並刪除了一些不好的特性。

web瀏覽器和web伺服器都是web應用程式,除此之外,還有一些其他的,比較重要的應用程式:

**:位於客戶端和伺服器之間的http中間實體

快取:http的倉庫,使常用頁面的副本可以儲存在離客戶端更近的地方。

閘道器:連線其他應用程式的特殊web伺服器。

隧道:對http通訊報文進行盲**的特殊**。

agent**:發起自動http請求的半智慧型web客戶端。

**

http**伺服器,是web安全、應用整合及效能優化的重要組成模組。**位於客戶端與伺服器之間,接收所有客戶端的http請求,並將這些請求**給伺服器(可能會對請求進行修改之後**)。對使用者來說,這些應用程式就是乙個**,代表使用者訪問伺服器。

快取

web快取或**快取是一種特殊的http**伺服器,可以將經過**傳送的常用文件複製儲存起來,下次請求同一文件的客戶端就可以直接從快取中獲取了。

閘道器

閘道器(gateway)是一種特殊的伺服器,作為其他伺服器的中間實體使用。通常用於將http流量轉換成其他的協議。閘道器接收請求時就好像自己是資源的源端伺服器一樣。客戶端可能並不知自己正在與乙個閘道器進行通訊。

比如,乙個http/ftp閘道器會接收http客戶端發來的http請求(實際請求是傳送給ftp伺服器的),然後通過ftp協議到ftp伺服器獲取文件,並封裝成http報文,傳送給客戶端。

隧道

隧道(tunnel)是建立起來之後,就會在兩條連線之間,對原始資料進行盲**的http應用程式。http隧道通常用來在一條或多條http連線上**非http資料,**時不會窺探資料(盲字的含義就**於此)。

http隧道的一種常見用途是通過http連線承載加密的安全套接字(ssl,secure sockets layer)流量,這樣ssl流量就可以穿過只允許web流量通過的防火牆了。http/ssl隧道收到一條http請求,要求建立一條到目的位址和埠的輸出連線,然後在http通道上通過隧道傳輸加密的ssl流量,這樣就可以將其盲**到目的伺服器上去了。

使用者agent**(或者簡稱為agent**)是代表使用者發起http請求的客戶端程式。所有發布web請求的應用程式都是http agent**,到目前為止,我們只提到過一種http agent**:web瀏覽器,但是使用者agent**還有很多其他型別,比如爬蟲。

概述(基本概念)

作業系統是管理計算機所有資源的程式,在使用者和計算機之間起媒介作用,給程式提供執行環境,也名核心kerner 計算機系統組成結構分類 單處理器系統 只有乙個通用cpu,執行有限的指令集。對一些裝置可以有專用的微型處理器。多處理器系統並行系統 parallelsystem 或緊藕合系統 tightly...

Http基本概念

1 http請求的過程 1 建立tcp連線 2 web傳送請求 3 web客戶端傳送請求的頭部資訊 4 伺服器應答 5 伺服器傳送應答頭資訊 6 伺服器向web客戶端傳送資料 7 伺服器關閉tcp連線2 請求和響應 向伺服器返送叫做請求,伺服器返回的資訊的過程叫做相應 1請求一般分為四個部分 1.方...

HuaWei BGP協議基本概念

1 自治系統as autonomous system as是指在乙個實體管轄下的擁有相同選路策略的ip網路,bgp網路中的每個as都被分配乙個唯一的as號,用於區分不同的as,as號分為2位元組as號和4位元組as號,其中2位元組as號的範圍1至65 535 2 16 4位元組as號的範圍為1至4 ...