最近工作有點閑。一直想著充實下自己。正好在知乎上有人推薦了HTTP權(quán)威指南這本書。
之所以選擇學(xué)習(xí)HTTP,是因為某種程度上工作需要罷了。最近一段時間一直在自學(xué)Python,需要寫爬蟲搜集各大招聘網(wǎng)站的招聘信息。但是我本人對網(wǎng)絡(luò)的機(jī)理一無所知,導(dǎo)致經(jīng)常知其然而不知其所以然。數(shù)學(xué)專業(yè)出身的我,最討厭的就是這點了。
HTTP,簡單點說,是應(yīng)用層的協(xié)議,基于TCP所在的傳輸層。按照書中的總結(jié):TCP負(fù)責(zé),1)無差錯的數(shù)據(jù)傳輸,2)按序傳輸,3)未分段的數(shù)據(jù)流。而HTTP呢?我的理解是,感覺就像是兩國之間的貿(mào)易公司。要么你下單,我按照你的要求發(fā)送貨物。要么我下單,你按照我的要求來發(fā)送貨物。而TCP協(xié)議則是航運(yùn)公司,只負(fù)責(zé)運(yùn)輸貨物。
在現(xiàn)實中,貿(mào)易公司下單,發(fā)貨,雙方需要填寫訂單,發(fā)貨清單。同理,在網(wǎng)絡(luò)中,雙方也需要遵循類似的流程,用來規(guī)范雙方。這個流程就是請求和響應(yīng)的報文。
HTTP報文是由一行一行的字符串組成的[就像我們平常會把文字和數(shù)字區(qū)分開來一樣,計算機(jī)語言也會有相似的區(qū)分。一般是字符串(既文本),整數(shù),浮點數(shù)(小數(shù))等]。
HTTP的報文格式如下:
請求報文:
- GET /writer#/notebokks/88888/notes.txt HTTP/1.0
- Accept:text/*
- Accept-Language:en,fr
響應(yīng)報文:
- HTTP/1.0 200 OK
- Content-type:text/plain
- Content-length:19
- Hi! Welcome to my Blog!
我們首先看請求報文。請求報文一般是客戶端,也就是你的瀏覽器發(fā)送給服務(wù)器的報文。GET很好理解哈。這是一個請求的命令。好比意思是說:“XXX,我文件丟在這個地方( /writer#/notebokks/88888/notes.txt)了,你把它發(fā)給我。記得是掃描后快遞給我(HTTP/1.0),記得是文字哈(text),英文或者法文版的(en,fr)。不要拍照片給我哈。謝謝啦”。
當(dāng)然,除開GET,還有許多其他請求命令。比如POST,PUT,DELETE,HEAD。 不過,比較常用的是GET和POST。
POST就是:你突然接到一個電話,是你老婆打來的,“老公,我最近看上了一個包包,有點兒貴。那個,你卡號是多少來著?” 。 “那個,咳,對,我卡號是多少來著?你讓我想想哈。喂!喂!你聽的到嗎?喂!嘟!嘟!嘟!”
言歸正傳哈,畢竟是你老婆,卡號還是要給的。畢竟你老婆是你的,她的包也是你的,不過是左手和右手的關(guān)系。這么想,心情是不是突然好一點兒了啦。
言歸正傳2.0
HTTP服務(wù)器(支持HTTP協(xié)議的服務(wù)器)接受到來自你的請求后,當(dāng)然不能坐視不理,只能立馬按照你的要求將你需要的資源(文本,圖片,視頻等)按照你要求的協(xié)議版本(HTTP/1.0)發(fā)給你。這就是所謂的響應(yīng)報文.
那個,咳,Hi! Welcome to my Blog! 這就是服務(wù)器快遞給你的作業(yè)內(nèi)容,雖然是英文的,但是也忒簡單了點吧?也就比Hello World稍微復(fù)雜點。你英語老師是教體育的吧?
好吧!這就是HTTP權(quán)威指南的第一章。
難道第一章就這么點內(nèi)容嗎?
當(dāng)然不是。
雖然第一章的標(biāo)題叫HTTP概述,但是:
我的這個叫Preview of HTTP概述。