HTTP—一個應(yīng)用級協(xié)議

搬磚,翻譯自原文https://dev.opera.com/articles/http-basic-introduction/

介紹

在不丹,當人們見面是,他們通常打招呼的方式是“你身體好嗎?”在日本他們獲取會鞠躬,視情況而定。在阿曼,人們經(jīng)常在握手后輕吻對方的鼻子。在柬埔寨和泰國,他們雙手合十像祈禱那樣。所有這些通信(交流)協(xié)議,一個簡單的代碼序列都是有意義和準備方進行有意義的交換。

在網(wǎng)絡(luò)上,我們有一個非常有小的應(yīng)用協(xié)議,他為世界各地的電腦準備有意義的交換:超文本傳輸協(xié)議(Hypertext Transfer Protocol)。HTTP是一個在TCP/IP之上的應(yīng)用級的協(xié)議,一個通信(交流)協(xié)議。在教web設(shè)計和開發(fā)時,HTTP似乎經(jīng)常被遺忘,這是一個遺憾:理解它將有主意定義更好的用戶交互,實現(xiàn)更好的站點性能,并未管理網(wǎng)絡(luò)上的消息創(chuàng)建有效的工具。

這是一系列文章的第一篇,目的是教HTTP基礎(chǔ)和我們怎樣更有效的使用它。在這片文章我們將要看看HTTP適合于用在網(wǎng)絡(luò)機器哪里。

什么是一個通信協(xié)議?

在了解詳細之前,我們想象一下一個基本的交流情景。為了能夠交流,需要兩個部分(軟件,設(shè)備,人等等):

  • 語法(數(shù)據(jù)格式和編碼)
  • 語義(控制信息和錯誤處理)
  • 時間(速度匹配和排序)

當2個人見面時,他們使用一種通信(交流)協(xié)議:例如,在日本,一個人會用身體做出具體的姿勢。其中一種姿勢就是鞠躬,這就是交互中用到的“語法”。在日本文化中,鞠躬的姿勢于問候某人的“語義”相關(guān)。最后當一個人向另一個人鞠躬時,在特定的“時間內(nèi)”已經(jīng)在兩者之間建立了一系列的時間。


通信(交流)的協(xié)議

一個在線的通信協(xié)議包含一樣的元素。語法是字符的序列,比如我們用于編寫協(xié)議的關(guān)鍵字,語義是與這些關(guān)鍵字相關(guān)聯(lián)的意義,最后時間是兩個或多個實體交換這些關(guān)鍵字的順序。

HTTP適用于機器的什么地方呢?

HTTP 運行于其他協(xié)議之上。等連接到到一個網(wǎng)站時,比如www.example.org,用戶代理使用TCP/IP協(xié)議套件,TCP/IP模型設(shè)計與1970,有四個不同的層面:

  1. Link 描述了對物理媒介的訪問(如:使用網(wǎng)卡)
  2. Internet 描述了對數(shù)據(jù)的封裝和路由 — 它是怎么包裝的(IP)
  3. Transport 描述數(shù)據(jù)從起點傳遞到最終目的地的方式(TCP,UDP)
  4. Application 描述了傳輸?shù)男畔⒌囊饬x或者格式(HTTP)

HTTP 是一個位于通信協(xié)議之上的應(yīng)用協(xié)議(application protocol)。記住這一點很重要。將模型分離為獨立的層有助于發(fā)展平臺的各個部分,而不必重寫所有內(nèi)容。比如,TCP,一個傳輸協(xié)議,可以不用去修改應(yīng)用協(xié)議HTTP就能發(fā)展。在實踐中,當我們追求高性能通信時,這些細節(jié)變得有點難看。在前幾篇HTTP文章中,我們將重點討論在TCP/IP模型中定義的層的分離。HTTP被定義為通過HTTP消息在兩個軟件之間通信信息。我們塑造和設(shè)計這些消息的方式會對客戶端(例如瀏覽器)、服務(wù)器(web站點)及其中介(代理)產(chǎn)生影響。

讓我們訪問服務(wù)器

端口80是連接到Web服務(wù)器的默認端口.我們可以自己用shell試試。打開命令行,用一下的命令,嘗試打開一個連接到www.opera.com 的80端口
telnet www.opera.com 80
你會得到像下面的輸出:

Trying 195.189.143.147...
Connected to front.opera.com.
Escape character is '^]'.
Connection closed by foreign host

我們可以看到終端正在嘗試與位于IP地址195.189.143.147的服務(wù)器進行通信。如果我們不做任何其他事情,服務(wù)器將自己關(guān)閉連接。使用不同的端口和不同的通信協(xié)議是完全可能的,但這些是最常見的。

讓我們講一點HTTP

步驟1:用win + r 打開cmd
步驟2:在cmd中執(zhí)行www.opera.com 80, 然后可以看到一個黑色的框框
步驟3: 然后按 ctrl + ], 退出, 結(jié)果為:

歡迎使用 Microsoft Telnet Client
Escape 字符是 'CTRL+]'
Microsoft Telnet>

步驟4: 然后按enter, 進入到輸入框, 又是黑漆漆的一片
步驟5:輸入如下內(nèi)容(有時間限制, 所以最好是先寫好, 然后整體拷貝進去)

GET / HTTP/1.1
Host: www.opera.com

這個消息指定了:

  • GET:我們希望去獲取消息的代表。
  • /:我們希望獲取存在站點根目錄下的信息。
  • HTTP/1.1 我們使用的是HTTP 1.1版本。
  • 我正在嘗試訪問一個具體的網(wǎng)站。
  • www.opera.com :網(wǎng)站的名稱

步驟6:然后連續(xù)按兩下enter鍵盤, 得到的結(jié)果為:

HTTP/1.1 200 OK
Date: Wed, 23 Nov 2011 19:41:37 GMT
Server: Apache
Content-Type: text/html; charset=utf-8
Set-Cookie: language=none; path=/; domain=www.opera.com; expires=Thu, 25-Aug-2011 19:41:38 GMT
Set-Cookie: language=en; path=/; domain=.opera.com; expires=Sat, 20-Nov-2021 19:41:38 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked

<!DOCTYPE html>
<html lang="en">
…

這里服務(wù)器說:“我說的是HTTP 1.1版本。你的請求成功了,所以我回復(fù)了代碼200。OK字符串是可選的,用來解釋這段代碼對人類的意義——在這種情況下,一切正常,我們的消息被接受了。然后發(fā)送一系列HTTP頭來描述消息是什么,以及應(yīng)該如何理解它。最后,包含位于站點根目錄的頁面內(nèi)容,以<!DOCTYPE html >。下面幾篇文章將解釋HTTP謂詞和代碼列表。


HTTP request and response
總結(jié)

我們剛剛談了HTTP -它是如此簡單!我們發(fā)送了一個信息(就像寫信一樣),我們收到了一個答復(fù),因為我們的信息被理解了。下次我們將詳細探討這些標題的含義以及它們可以用于什么

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容