http全稱是超文字傳輸協議,字面意思上來看,就是用來傳輸超文字這個東西的。那麼,我們可能需要知道『超文字』究竟是什麼東西呢?其實在web應用網路上傳輸的所有資料都可以被稱為超文字,在內容上可以是二進位制或者八進位制的資料,但在表現形式上可以是我們能夠理解的文字,比如英文或者中文。具體來講,可以分為請求報文和響應報文。因為這份協議是老外發明的,所有自然這兩份報文的表現格式就是用英文的形式。但我們可以在響應報文中的資料段中加入我們熟悉的中文。所謂的web應用網路並不是平常我們所說的網路,而是基於客戶端/伺服器端的應用網路,簡單來講,就是你用瀏覽器上網所使用的網路,而我們稱在這個網路中所傳輸的資料為超文字。
談到網路就肯定要涉及資料傳輸,如果乙個網路中沒有進行資料傳輸,那麼這個網路是沒有意義的。http協議幹的就是你在web應用網路上傳輸資料時所用遵循的一些規範。舉個例子,你是客戶端瀏覽器,你想要訪問某個頁面,比如『www.baidu.com』這個頁面。當你在瀏覽器中輸入這個**並按回車鍵之後,你的瀏覽器應用程式會生成乙份報文,我們稱之為——請求報文。這份報文都會報些什麼東西呢?我們來看這樣乙份報文:
那麼我們可能會問,為什麼瀏覽器要生成這份報文呢?這份報文有什麼用呢?其實這就是http協議起作用的地方。http協議規定,你的客戶端瀏覽器如何想要和伺服器打交道,那就得有這麼乙份報文才行,而且報文還得按它要求的格式來,就像上面的格式一樣。因為只有這樣伺服器才能知道你要幹嘛,如果大家的瀏覽器都不遵循同乙個協議,今天你說你的請求方式叫get,明天他說他的請求方式叫make,後天又有個人說他的請求方式叫want,那豈不是亂套了。伺服器哪知道你們究竟都要幹嘛,所以大家都遵循乙個協議,定個規矩,請求方法統一都叫get,而這個協議我們就稱之為http協議,當然http協議中你的請求報文還包含很多其他的東西。
瀏覽器生成的這份報文通過套接字介面傳輸給伺服器,因為傳輸就跟http協議沒什麼關係了,而是跟tcp協議有關。套接字介面就相當於http到tcp的一扇門,通過這道門你才能把應用層的請求報文送到傳輸層中的tcp協議當中去。話不多說,傳輸層不是本文的重點。當伺服器通過網路接收到你的請求報文後,它同樣也會發回給你乙份報文,我們稱之為響應報文。這份響應報文是怎麼寫的呢?我們來看:
這份報文第一行我們稱之為狀態行,接下來那幾行我們稱之為首部行,而最後面那個(data)我們稱之為實體或者響應體。而這些內容同樣也是http協議規定的,關於具體內容的具體含義我這裡不展開講,有興趣可以查閱相關資料,其實看名字也能知道個大概。伺服器通過它那邊的套接字介面把這份報文傳輸給我們,然後我們的瀏覽器就可以解析這份報文,從而形成我們所能看到的網頁。這基本上就是我們按回車之後,在網路上瀏覽器和伺服器所發生的一切。
寫到這,我突然對我所定義的超文字持保留意見。可能超文字僅僅只是響應報文中響應體那部分或者請求報文中用post方式所提交的請求體那部分,並不是整個請求報文或者響應報文。這裡我還不清晰,有興趣的朋友可以查閱有關資料。
講到這,我的http協議講解就已經結束了,你可能還不是很清晰,因為我也不是很清晰,這只是目前為止我的理解而已,但如果這博文能稍微幫助到你對於該協議理解,我就很滿足了。一言以蔽之,http協議是客戶端瀏覽器與伺服器打交道所必須遵循的協議,這份協議規定了你需要通過報文來進行相互應答,以及規定了你的報文所應當遵循的格式。
計算機網路 應用層
運輸層為應用程序提供了端到端的通訊服務。但不同的網路應用程序之間,還需要有不同的通訊規則。因此在運輸層協議之上,還需要有應用層協議。應用程序之間的通訊必須遵守嚴格的規則。應用層的協議應當定義 1 網域名稱系統dns 網域名稱到ip位址的解析是由分布在網際網路上的許多網域名稱伺服器程式共同完成的。網域...
計算機網路 應用層
計算機網路分層 應用層是網路應用程式和及應用層協議存留的地方。應用層協議分布在多個端系統上,乙個端系統中的應用程式使用協議與另乙個端系統中的應用程式交換資訊的分組。該層資訊被稱為報文。常用的應用層協議有 http,smtp,ftp,dns 1.基本概念 執行在不同端系統的程式的通訊是通過程序完成的。...
計算機網路 應用層
我們現在已經了解了運輸層為應用程式提供了端到端的通訊服務,但是不同的應用程序之間,還需要不同的通訊協議,因此在運輸層協議上方還有應用層協議,這是因為每個應用層協議都是為了解決一類問題,而問題的解決又要通過不同主機的多個應用程序之間通訊和協同工作來完成,應用程序之間的通訊需要遵守嚴格的規則,應用層的具...