不得不說相互監(jiān)督,對不熱愛學(xué)習(xí)、不勤于總結(jié)的孩子劲弦,是一種有效激勵。
最近幾天看了《圖解HTTP》前五章醇坝,所以今天的文章是一篇總結(jié)文邑跪,對http的工作流程以及http相關(guān)協(xié)議的工作協(xié)調(diào)的總結(jié),http結(jié)構(gòu)的詳細(xì)描述要過幾天才能更呼猪,今天的總結(jié)更偏向初階画畅。PS:圖解HTTP是一本易懂,知識點章節(jié)劃分合理的書宋距,請盡量擠時間看這本書夜赵,你會收獲很多。
正文開始
1 計算機(jī)網(wǎng)絡(luò)是具有五層協(xié)議的體系結(jié)構(gòu)乡革。(謝希仁版)
計算機(jī)網(wǎng)絡(luò)是計算機(jī)科學(xué)專業(yè)的必修課寇僧,做前端的你可以不知道計算機(jī)網(wǎng)絡(luò)中有多少協(xié)議,計算機(jī)網(wǎng)絡(luò)是怎么搭建網(wǎng)絡(luò)拓?fù)浞邪妫趺唇蟹纸M交換等等嘁傀,但是你一定要至少知道計算機(jī)網(wǎng)絡(luò)第一章里的 ‘計算機(jī)網(wǎng)絡(luò)是具有五層協(xié)議的體系結(jié)構(gòu)’,這五層包括物理層视粮、數(shù)據(jù)鏈路層细办、網(wǎng)絡(luò)層、運(yùn)輸層蕾殴、應(yīng)用層笑撞。你還要知道每一層的用途如下(來自計算機(jī)網(wǎng)絡(luò)書本):
運(yùn)輸層:負(fù)責(zé)兩個主機(jī)的進(jìn)程之間的通信(封裝成報文),tcp協(xié)議荡灾,UDT協(xié)議
網(wǎng)絡(luò)層:負(fù)責(zé)分組交換(將報文分組加首部)瓤狐,IP協(xié)議
數(shù)據(jù)鏈路層:將01信號轉(zhuǎn)變成高低電頻(功能)
2 Http和它的小伙伴們是怎么一起踢足球的
應(yīng)用層的發(fā)送端(客戶端)是一個嶄新的足球瞬铸,里面裝著HTTP報文,報文請求進(jìn)球础锐,足球滾到傳輸層嗓节,遇到TCP,TCP踢了一腳皆警,上面留下了TCP首部的腳印拦宣,隨后滾到網(wǎng)絡(luò)層,IP在上面留下了IP首部的腳印(這里IP是網(wǎng)際協(xié)議信姓,不是IP地址)恢着,繼續(xù)到鏈路層,鏈路層得到了作為通信目的地的MAC地址财破,并留下以太網(wǎng)首部的腳印,有了目的地从诲,足球到了服務(wù)端的MAC地址左痢,擦掉自己的腳印,給網(wǎng)絡(luò)層系洛,網(wǎng)絡(luò)層擦掉了網(wǎng)絡(luò)層的腳印俊性,給傳輸層,傳輸層擦掉傳輸層腳印描扯,此時干凈足球到了球門定页,服務(wù)器收到足球,或許進(jìn)了或許沒進(jìn)绽诚,但它會把足球重新踢回去典徊,里面裝的是響應(yīng)包,首部會有狀態(tài)碼等等恩够,表達(dá)在球門發(fā)生的具體事件卒落。
解說到這里,我們先中場暫停蜂桶,我們聊聊它的小伙伴TCP儡毕、IP、DNS的表現(xiàn)
應(yīng)用層的DNS(Domain Name System)是解析客戶端的域名為IP地址扑媚,可以通過域名查找IP地址腰湾,也可以通過IP反查域名。
傳輸層的TCP是提供可靠傳輸用的協(xié)議疆股,可靠是因為建立連接時费坊,三次握手,斷開連接時四次揮手的策略旬痹。我們在HTTP1.1和部分HTTP1.0中使用持久連接的TCP連接葵萎,降低通信量的開銷导犹,具體在一開始建立鏈接,除非明確提出斷開連接羡忘,否則一直保持了解谎痢。
網(wǎng)絡(luò)層的IP是邊發(fā)送邊中轉(zhuǎn),IP間通信依賴MAC地址卷雕,而APR地址解析協(xié)議就是它的好幫手节猿,把IP地址給它,它就給你對應(yīng)的MAC地址漫雕,問題來了滨嘱,那如果ARP的表中沒有IP對應(yīng)的MAC地址怎么辦,APR會廣播尋找這個IP地址浸间,找到后把對應(yīng)的MAC地址放在表中太雨,并把地址給IP,不停中轉(zhuǎn)魁蒜,最終中轉(zhuǎn)到目的MAC地址囊扳。
3 Http和它協(xié)作的Web服務(wù)器們
Http平時除了和用戶使用的客戶端有交集,與數(shù)據(jù)庫交互的服務(wù)器有聯(lián)系外兜看,http還和一些用于通信數(shù)據(jù)轉(zhuǎn)發(fā)的應(yīng)用程序聯(lián)系緊密锥咸。如“中間人”——代理,因為一般來說细移,因為客戶端和服務(wù)端之間的距離較長搏予,并且網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,所以為了使請求相應(yīng)過程更快更有效率弧轧,也更加安全雪侥,但總歸來說,它還是扮演了中間人的角色精绎,代理基本按兩種基準(zhǔn)分類校镐,一種是是否適用緩存,一種是是否會修改報文捺典。透明代理不對報文做任何加工鸟廓,只起到了客戶端和服務(wù)器間的轉(zhuǎn)發(fā)功能;緩存代理往往會保存服務(wù)器發(fā)來的響應(yīng)的副本襟己,當(dāng)它下一次再遇到相同的請求引谜,可以不用轉(zhuǎn)發(fā)給服務(wù)器,直接將之前的緩存的資源作為相應(yīng)返回擎浴。網(wǎng)關(guān)和代理類似员咽,但網(wǎng)關(guān)能使通信線路上的服務(wù)器提供非Http服務(wù),再轉(zhuǎn)化為http響應(yīng)發(fā)回給客戶端贮预。隧道大家應(yīng)該都不陌生贝室,感覺面試時經(jīng)常被問到契讲,HTTP和HTTPS的區(qū)別是什么,SSL層有了解過嗎滑频?諸如此類的問題捡偏,這就和隧道有關(guān)系了,書上說峡迷,隧道可以按要求建立起一條與其他服務(wù)器的通信線路银伟,屆時使用SSL等加密手段進(jìn)行通信。當(dāng)然最終是為了讓通信更加安全绘搞,畢竟很多時候客戶端和服務(wù)器之間距離較遠(yuǎn)彤避,此外SSL層在運(yùn)輸層哦小伙伴們,要記缀幌健琉预!關(guān)于這里涉及的HTTP緩存的具體總結(jié),我會在總結(jié)HTTP結(jié)構(gòu)時一并總結(jié)蒿褂。
明天更新HTTP結(jié)構(gòu)的具體總結(jié)圆米,蹦床造成的脖子疼真的疼,明天見