今天看到一篇網(wǎng)絡(luò)分層的通俗解釋——網(wǎng)絡(luò)信息怎么在網(wǎng)線中傳播的,看完之后可以參考Android 網(wǎng)絡(luò)(一) 概念 TCP/IP Socket Http Restful深入了解一下
題主的問(wèn)題非常大斗锭。其實(shí)別人再跟你講赡盘,你還是不會(huì)清楚裸燎,應(yīng)該自己去看一套完整的網(wǎng)絡(luò)基礎(chǔ)教程熬北。但是剛好我最近閑,我就給你梳理一下管行,當(dāng)然每一步都很簡(jiǎn)略本冲,因?yàn)檎f(shuō)詳細(xì)了就太長(zhǎng)了准脂。
首先要了解一點(diǎn),網(wǎng)絡(luò)是分層組織的檬洞,相鄰的層之間暴露接口給對(duì)方使用狸膏。這是計(jì)算機(jī)世界典型的組織模式。
- 舉個(gè)例子添怔,我去寄郵件湾戳,首先我要對(duì)我要郵寄的東西進(jìn)行打包贤旷,這就相當(dāng)于貨物的第一層處理;
- 之后我要叫快遞小哥砾脑,我可以叫順豐圓通韻達(dá)幼驶,交給他們就完了,這是對(duì)貨物的第二層處理拦止;
- 快遞小哥拿到貨物以后县遣,他給你的快遞上貼個(gè)地址,就交給自己的物流了汹族,這就是第三層處理;
- 物流這時(shí)候就開(kāi)始轉(zhuǎn)運(yùn)了啊其兴,比如你寄給了上海顶瞒,上海在哪里,這需要有人來(lái)定義好元旬,你的貨物需要從濟(jì)南轉(zhuǎn)運(yùn)中心到蘇州轉(zhuǎn)運(yùn)中心再到上海轉(zhuǎn)運(yùn)中心榴徐,最后到上海,這是對(duì)你貨物的第四層處理匀归,到了上海之后坑资,就是把整個(gè)過(guò)程倒過(guò)來(lái),物流把貨物交給快遞小哥穆端,快遞小哥交給收貨人袱贮,收貨人打開(kāi)包裝,收貨体啰。
我們?yōu)槭裁匆謱釉芪。驗(yàn)檫@樣這樣比較好組織,我打包的這一層不需要知道其它層怎么運(yùn)作的荒勇,我小哥也不需要關(guān)心你到底怎么打包的柒莉,物流不需要知道小哥到底怎么安排自己的取貨時(shí)間和路線。每個(gè)層相互獨(dú)立沽翔,我只要專(zhuān)心干好打包一件事情兢孝,知道打包完了交給小哥就行了,剩下的我不管了仅偎。OK跨蟹。這和網(wǎng)絡(luò)傳輸是一樣一樣的。那么哨颂,上述的送快遞的四個(gè)層喷市,大概相當(dāng)于網(wǎng)絡(luò)傳輸?shù)哪男幽兀?/p>
一、應(yīng)用層
應(yīng)用層就是產(chǎn)生貨物的那一層威恼,就相當(dāng)于我想寄貨品姓,我只要準(zhǔn)備好貨物寝并,打包好就OK了。這一層有HTTP協(xié)議腹备,F(xiàn)TP協(xié)議衬潦,SMTP協(xié)議等。分別對(duì)應(yīng)不同的應(yīng)用植酥。我們?yōu)g覽網(wǎng)頁(yè)镀岛,用的是HTTP,去FTP下載友驮,是FTP漂羊,發(fā)郵件,是SMTP卸留。就是產(chǎn)生貨物走越,并將其打包。打包后的數(shù)據(jù)就是數(shù)據(jù)包了耻瑟。然后我們開(kāi)始叫快遞小哥旨指。
二、傳輸層
貨物打包完了喳整,我就叫快遞小哥來(lái)谆构。網(wǎng)絡(luò)世界里運(yùn)送貨物的主要有兩個(gè)快遞公司,一個(gè)是TCP協(xié)議框都,一個(gè)是UDP協(xié)議搬素。就像順豐與韻達(dá)的關(guān)系吧,都是用來(lái)發(fā)送貨物的瞬项。應(yīng)用層產(chǎn)生的數(shù)據(jù)蔗蹋,交給傳輸層,傳輸層會(huì)再將數(shù)據(jù)進(jìn)行一些處理囱淋,具體就是給數(shù)據(jù)套個(gè)傳輸層的頭猪杭,頭里面包含一些傳輸層自己需要用到的數(shù)據(jù),比如說(shuō)送到天都小區(qū)8號(hào)樓6層2號(hào)妥衣。就像快遞小哥往你打包好的東西上貼個(gè)地址皂吮。之后小哥就帶著你的貨物去找自己的公司物流了。也就是數(shù)據(jù)包交付給了網(wǎng)絡(luò)層税手。
三蜂筹、網(wǎng)絡(luò)層
網(wǎng)絡(luò)層只有一個(gè)協(xié)議,就是IP協(xié)議芦倒。目前我們廣泛使用的是IPv4艺挪。IPv4協(xié)議就要講細(xì)致一點(diǎn)了,因?yàn)榕c你的問(wèn)題息息相關(guān)兵扬。這個(gè)協(xié)議負(fù)責(zé)干嘛呢麻裳?
第一:他負(fù)責(zé)編址口蝠。就像上海到底是哪個(gè)上海,在什么地方津坑。IPv4最重要的功能就是給網(wǎng)絡(luò)上的主機(jī)編號(hào)妙蔗,比如你發(fā)給百度的東西,IPv4負(fù)責(zé)給百度一個(gè)地址疆瑰,然后通過(guò)某種方式眉反,把這個(gè)地址廣而告之整個(gè)網(wǎng)絡(luò)。于是現(xiàn)在就知數(shù)據(jù)往哪里發(fā)了穆役。這就是你的問(wèn)題:“全世界的網(wǎng)絡(luò)互通的寸五,怎么確定我要發(fā)送的信息能準(zhǔn)確到達(dá)目的地》醪牵”答案的第一部分播歼,因?yàn)橹鳈C(jī)有獨(dú)立的IP地址,這個(gè)IP地址不同于公網(wǎng)上的任何其他地址掰读,因此你的數(shù)據(jù)知道往哪里發(fā)。
第二:他負(fù)責(zé)路由你的數(shù)據(jù)叭莫。路由這兩個(gè)字讀起來(lái)拗口蹈集,不如快遞的“轉(zhuǎn)運(yùn)”兩個(gè)字聽(tīng)起來(lái)好理解,其實(shí)就是規(guī)定你的數(shù)據(jù)包如何轉(zhuǎn)運(yùn)雇初。顯然你和目的主機(jī)之間沒(méi)有直接連著一根網(wǎng)線拢肆,所以你的數(shù)據(jù)包得經(jīng)過(guò)轉(zhuǎn)運(yùn),比如說(shuō)靖诗,你家里的路由上層只直接連接著小區(qū)的路由郭怪,你產(chǎn)生的流量他只能發(fā)到小區(qū)的路由,小區(qū)的路由說(shuō)刊橘,我直接連著北京的機(jī)房呢鄙才,所以把數(shù)據(jù)發(fā)到北京的機(jī)房去,北京的機(jī)房(是超級(jí)大的路由)一看促绵,這IP地址是南京的啊攒庵,我沒(méi)直接相連,不過(guò)我用光纜連著上海的機(jī)房败晴,上海的機(jī)房也告訴我他可以把我的數(shù)據(jù)發(fā)到南京浓冒,我就先發(fā)到上海的機(jī)房,上海的機(jī)房直接連著南京的機(jī)房尖坤,南京的機(jī)房連著跟你微信的小妹妹的小區(qū)的路由稳懒,小區(qū)的路由連著她家里的路由,她家里的路由連著她的手機(jī)慢味。這樣你的數(shù)據(jù)就發(fā)到目的地了场梆。顯然墅冷,你的數(shù)據(jù)不止有一條路,假如北京的機(jī)房和蘇州的機(jī)房也相連辙谜,蘇州也跟你的路由說(shuō)送南京的數(shù)據(jù)我也能送啊俺榆,北京的路由就有可能選擇把數(shù)據(jù)發(fā)到蘇州機(jī)房轉(zhuǎn)運(yùn)。
路由之間通過(guò)某種協(xié)議來(lái)交換自己能到達(dá)的主機(jī)的信息装哆。這樣你的數(shù)據(jù)包有了地址以后罐脊,就可以在網(wǎng)絡(luò)世界傳送了。
這就是你的問(wèn)題:“全世界的網(wǎng)絡(luò)互通的蜕琴,怎么確定我要發(fā)送的信息能準(zhǔn)確到達(dá)目的地萍桌。”答案的第二部分凌简,因?yàn)槁酚善髦g可以相互交換自己能夠連接的主機(jī)的信息上炎,所以數(shù)據(jù)能夠到達(dá)目的地,但到達(dá)和準(zhǔn)確到達(dá)其實(shí)還有點(diǎn)距離雏搂。意思是傳輸中可能出現(xiàn)一些異常情況藕施,導(dǎo)致數(shù)據(jù)無(wú)法到達(dá)或者傳輸出錯(cuò)。IP層也部分處理這種情況凸郑。
第三:他負(fù)責(zé)處理網(wǎng)絡(luò)的一些異常情況裳食。網(wǎng)絡(luò)世界是一個(gè)松散的組織,你很難保證你數(shù)據(jù)包在傳輸中不出錯(cuò)芙沥,比如說(shuō)光纜受到了干擾诲祸,這都可能使你的數(shù)據(jù)包出錯(cuò),IPv4還提供了一個(gè)簡(jiǎn)單的校驗(yàn)功能而昨,如果計(jì)算出來(lái)發(fā)現(xiàn)數(shù)據(jù)包在傳輸中出錯(cuò)了救氯,他就丟掉,這是丟包的一個(gè)原因歌憨;另外着憨,假如說(shuō)一段互聯(lián)網(wǎng)線路特別繁忙,就像一個(gè)高速公路躺孝,本來(lái)一小時(shí)只能傳輸1000噸貨物享扔,你現(xiàn)在發(fā)了1500噸的東西過(guò)來(lái),路由器來(lái)不及發(fā)送植袍,他就把多余的貨物存在自己的存儲(chǔ)空間里惧眠,但你還接著發(fā),發(fā)了2000噸貨物于个,把存儲(chǔ)空間都撐滿了氛魁,你再發(fā)送的數(shù)據(jù),路由器就直接丟棄了,這是丟包的第二個(gè)原因秀存。
發(fā)熱發(fā)沒(méi)了這種事情其實(shí)也不是不可能存在捶码,就是傳輸中數(shù)據(jù)出錯(cuò)了唄,或者直接就在路上翻車(chē)了或链,永遠(yuǎn)沒(méi)有到達(dá)下一個(gè)路由惫恼。那你可能會(huì)說(shuō),這怎么辦呢澳盐?有很多辦法祈纯,比如說(shuō)目的地的快遞小哥一直等不到包裹,就跟北京說(shuō)叼耙,這哥們貨物怕是丟了腕窥,這時(shí)候北京的小哥會(huì)再發(fā)一份包裹出去;或者北京的小哥一直等不到目的地的小哥說(shuō)自己收到貨了筛婉,他猜是弄丟了簇爆,于是就重發(fā)了一份(反正網(wǎng)絡(luò)數(shù)據(jù)可以復(fù)制嘛),這是傳輸層糾錯(cuò)爽撒;也可以是你寄貨的發(fā)現(xiàn)入蛆,我擦怎么都發(fā)出去500ms了怎么小姐姐還還沒(méi)收到,我再發(fā)一份硕勿,這是應(yīng)用層糾錯(cuò)安寺。
四、物理層
網(wǎng)絡(luò)搞清楚發(fā)到哪里首尼、怎么轉(zhuǎn)運(yùn)以后,就交給物理層來(lái)具體發(fā)送數(shù)據(jù)言秸。
還以上文的例子繼續(xù)講软能,北京的機(jī)房說(shuō)我發(fā)到上海去,然后就把數(shù)據(jù)轉(zhuǎn)換為光信號(hào)或者電信號(hào)举畸,甚至說(shuō)不定通過(guò)衛(wèi)星中繼的還可以是無(wú)線(電磁)信號(hào)查排,發(fā)出去了。到底怎么轉(zhuǎn)的抄沮,你可以自己去查一下跋核。這就相當(dāng)于我發(fā)到南京的包裹,網(wǎng)絡(luò)層負(fù)責(zé)告知要通過(guò)上海轉(zhuǎn)運(yùn)叛买,但怎么發(fā)到上海去砂代,可以像順豐,有自己的飛機(jī)率挣,也可以是陸運(yùn)用車(chē)?yán)桃粒傊@就是物理層的功能,負(fù)責(zé)最底層的貨物運(yùn)送。
所以捶箱,你的問(wèn)題“咱們上網(wǎng)的各種信息轉(zhuǎn)換為電信號(hào)或者光信號(hào)在網(wǎng)線里傳播嗎智什?”,基本上可以認(rèn)為丁屎,是的荠锭。你可能會(huì)疑問(wèn),那光電信號(hào)怎么承載信息呢晨川,這就是二進(jìn)制如何編碼為不同文件的問(wèn)題证九,可以自行了解。
至此础爬,你就知道網(wǎng)絡(luò)數(shù)據(jù)到底是怎么從一個(gè)主機(jī)傳送到另外一個(gè)主機(jī)了甫贯。送到目的地之后的事,不過(guò)是把上面的過(guò)程倒過(guò)來(lái)再走一次看蚜。
“既然全世界網(wǎng)絡(luò)互通的叫搁,怎么實(shí)現(xiàn)的各種限制”。不知道你想說(shuō)的限制是什么供炎。限速渴逻?用戶認(rèn)證?問(wèn)題不清楚就沒(méi)有答案音诫。
“理論上是不我有一根聯(lián)網(wǎng)的網(wǎng)線是不就能截獲各種信息惨奕,比如某人的密碼,銀行工作流水等等”竭钝。從上文你也看到了梨撞,網(wǎng)絡(luò)數(shù)據(jù)可能并不路過(guò)你有掌控權(quán)的主機(jī),因此這部分?jǐn)?shù)據(jù)你是無(wú)法截獲的香罐。就像你在自己家門(mén)口的路上蹲著等快遞卧波,從紐約發(fā)往華盛頓的東西你是不可能截獲的一樣。但是你是否就一定不能獲取從紐約發(fā)往華盛頓的東西呢庇茫?也不盡然港粱,你可以安排一個(gè)眼線,蹲在紐約到華盛頓的高速公路上旦签,把貨物劫了再發(fā)到你家門(mén)口查坪,這也是截獲的一種,或者說(shuō)你在網(wǎng)上扯著嗓子喊宁炫,說(shuō)我這里是華盛頓偿曙,萬(wàn)一有哪個(gè)路由信了,就把數(shù)據(jù)發(fā)給你了淋淀。但是顯然網(wǎng)絡(luò)工程師不是傻子遥昧,他們也設(shè)計(jì)了很多方法來(lái)保證你截獲不了數(shù)據(jù)覆醇,比如你能掌握聯(lián)通北京機(jī)房的控制權(quán)嗎?當(dāng)然很難炭臭,防火墻什么的都是白弄得嗎永脓?就算你截獲了,打開(kāi)一看鞋仍,貨物是本天書(shū)常摧,都是加密過(guò)的,你不知道密碼威创,也看不懂落午;你在門(mén)口高喊我是華盛頓,快遞小哥聽(tīng)到后心想肚豺,就你還有資格把這里定義成華盛頓溃斋?直接不理你,你的聲音都傳不出你家門(mén)口那條路吸申。