讓我們設(shè)想這么一個場景摘投,某天盟庞,我想向某家攝影雜志要一張精美的照片。雜志社提供信件索取服務(wù)败明,我可以寫信過去面哼,附上現(xiàn)金野宜,就可以拿到某張沖洗出來的照片。我決定用寫信的方式精绎。于是我寫了一下的信件寄給這家攝影雜志社速缨。
尊敬的XX攝影雜志社主編:
你好。我是一位攝影愛好者代乃。我在你們2016年11月份的雜志上第20頁看到了一張很精美的照片旬牲,
希望得到這張照片沖洗出來的實物仿粹。以下附上現(xiàn)金。
致謝原茅!
某某
2016年11月15日
然后雜志社收到我的信后吭历,給我回信,并且附上我要的照片擂橘。
尊敬的某某先生:
你好晌区。我是XX攝影雜志社主編。這是你要的照片通贞。感謝你對我們的支持朗若!
致謝!
XX雜志社主編
2016年11月17日
我們上網(wǎng)瀏覽網(wǎng)頁的過程和上面寄信昌罩、回信的過程很類似哭懈。
首先,網(wǎng)站的各種信息資源(比如html代碼文件茎用、圖片遣总、音頻、視頻等)都存放在了一臺大型的電腦上轨功,可以認(rèn)為這臺電腦就是服務(wù)器旭斥。
然后我們用戶通過瀏覽器去訪問服務(wù)器上的資源,比如請求獲取一個html代碼文件古涧、加載圖片垂券、下載視音頻等≥锕樱可以認(rèn)為我們用戶的電腦就是客戶端圆米。
當(dāng)我們在瀏覽器頂部的地址欄輸入一個網(wǎng)址,按下鍵盤上的回車鍵以后啄栓,瀏覽器就會生成一個叫做request(請求)的東西娄帖,通過網(wǎng)絡(luò)傳送給我們訪問的資源所在的服務(wù)器。這個request包含著我們訪問資源需要的信息昙楚,比如請求方法近速、URL,編碼格式堪旧、有時候還需要用戶名削葱、密碼之類的。
服務(wù)器收到我們發(fā)送的request以后淳梦,也生成一個 叫response(響應(yīng))的玩意析砸,通過網(wǎng)絡(luò)傳送回到我們用戶的電腦上。這個response包含著一些狀態(tài)信息爆袍,大多數(shù)情況下還會附帶我們訪問的資源首繁、比如文件作郭、圖片、視音頻弦疮。
request就是上面寄信夹攒、回信例子中我寄給攝影雜志社的請求信,說明了我要做的事(要一張照片)胁塞,包含我要的資源的位置信息咏尝,還附帶了沖洗費(fèi)用。response就是雜志社發(fā)回來的回信啸罢,說明我的請求通過了编检,并附帶了我要的資源(沖洗出來的照片)。
那么這一切有何HTTP有什么關(guān)系伺糠?
還是那寄信蒙谓、回信為例。我們?nèi)祟愔g通過信件互相交流時训桶,信件是要遵守一些約定成俗的格式的——開頭是收信人的姓名(或者頭銜)、第一句話打個招呼酣倾、正文開始說你想說的事情舵揭、臨近結(jié)尾最好加點祝語、最后署名并且寫明日期——這個是人類寫信時遵守的格式躁锡。
可以認(rèn)為午绳,HTTP就是客戶端寫request和服務(wù)器寫response時遵守的格式。
HTTP全稱HyperText Transfer Protocol(超文本傳輸協(xié)議)映之,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議拦焚。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn),設(shè)計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法杠输。
當(dāng)對HTTP的本質(zhì)有了初步了解后赎败,可以從下面幾個部分去了解HTTP。
首先可以粗略看一下TCP/IP協(xié)議族的全貌輪廓蠢甲,這是互聯(lián)網(wǎng)相關(guān)的各類協(xié)議的總稱(協(xié)議就是大家都遵循的一套格式僵刮、規(guī)則)○信#互聯(lián)網(wǎng)分為應(yīng)用層搞糕、傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路蹭曼追。HTTP協(xié)議是在應(yīng)用層應(yīng)作用的協(xié)議(FTP窍仰、DNS也屬于這一層)。
接著可以了解一下客戶端告知服務(wù)器意圖的HTTP方法礼殊。HTTP方法就是指客戶端希望服務(wù)器做那些事情驹吮。按照人類的信件有邀請鲫忍、索取(某物)钥屈、發(fā)送(某物)悟民、指令等類型的信件(文件?)篷就。HTTP方法可認(rèn)為是指定了request的類型射亏,你是希望從服務(wù)器訪問資源呢(GET方法)、還是希望想服務(wù)器傳遞一些信息呢(PUT方法)竭业、亦或是要求服務(wù)器刪除一些文件呢(DELETE方法)智润,還是其他呢?
此外還可以了解一下response的狀態(tài)碼未辆。當(dāng)客戶端發(fā)給服務(wù)器一個請求后窟绷,服務(wù)器那里處理成功了嗎?如果沒有成功咐柜,會是什么原因造成的兼蜈?這些都可以通過response帶有的狀態(tài)碼窺知一二。常見的狀態(tài)碼有200(處理成功)拙友、404(服務(wù)器找不到資源)为狸、403(服務(wù)器禁止該客戶端訪問)等。
然后可以了解一下request和response的報文結(jié)構(gòu)遗契。HTTP報文就是指HTTP協(xié)議交互的信息辐棒。報文結(jié)構(gòu)大致可以分為報文首部(headers)和報文主體。報文首部一般是一些屬性信息牍蜂、比如HTTP方法漾根、URL、編碼格式鲫竞、語言辐怕、IP地址之類的,報文主體則是客戶端向服務(wù)器傳遞的數(shù)據(jù)贡茅、或者服務(wù)器向客戶端發(fā)送的資源秘蛇。
報文頭部、亦即headers顶考,是HTTP協(xié)議的重點之一赁还。報文頭部可以分為通用首部、請求首部(request獨有)驹沿、響應(yīng)首部(response獨有)艘策、實體首部、其他首部等渊季。重要的header有Date朋蔫、Request-URL罚渐、User-Agent、Referer驯妄、Host荷并、Transfer-Encoding、Cookie等青扔。學(xué)習(xí)這些header可以通過百度一個一個去搜索源织,這個不急,慢慢來微猖。
各種學(xué)習(xí)資源:
1谈息、《圖解HTTP》,上野宣(入門級)
2凛剥、《HTTP權(quán)威指南》侠仇, David Gourley/ Brian Totty (縱向進(jìn)階篇)
3、《TCP/IP協(xié)議詳解(卷一)》犁珠,Lawrence Berkeley(橫向進(jìn)階篇)