五(七)層互聯(lián)網(wǎng)協(xié)議(計算機網(wǎng)絡(luò))深入淺出,看完必懂【圖文二】

接上文:五(七)層互聯(lián)網(wǎng)協(xié)議(計算機網(wǎng)絡(luò))深入淺出蹲姐,看完必懂【圖文一】

四磨取、網(wǎng)絡(luò)層

4.1 網(wǎng)絡(luò)層的由來
以太網(wǎng)協(xié)議,依靠MAC地址發(fā)送數(shù)據(jù)柴墩。理論上忙厌,單單依靠MAC地址,上海的網(wǎng)卡就可以找到洛杉磯的網(wǎng)卡了江咳,技術(shù)上是可以實現(xiàn)的逢净。

但是,這樣做有一個重大的缺點歼指。以太網(wǎng)采用廣播方式發(fā)送數(shù)據(jù)包爹土,所有成員人手一"包",不僅效率低东臀,而且局限在發(fā)送者所在的子網(wǎng)絡(luò)着饥。也就是說犀农,如果兩臺計算機不在同一個子網(wǎng)絡(luò)惰赋,廣播是傳不過去的。這種設(shè)計是合理的,否則互聯(lián)網(wǎng)上每一臺計算機都會收到所有包赁濒,那會引起災(zāi)難轨奄。
互聯(lián)網(wǎng)是無數(shù)子網(wǎng)絡(luò)共同組成的一個巨型網(wǎng)絡(luò),很像想象上海和洛杉磯的電腦會在同一個子網(wǎng)絡(luò)拒炎,這幾乎是不可能的挪拟。

因此,必須找到一種方法击你,能夠區(qū)分哪些MAC地址屬于同一個子網(wǎng)絡(luò)玉组,哪些不是。如果是同一個子網(wǎng)絡(luò)丁侄,就采用廣播方式發(fā)送惯雳,否則就采用"路由"方式發(fā)送。("路由"的意思鸿摇,就是指如何向不同的子網(wǎng)絡(luò)分發(fā)數(shù)據(jù)包石景,這是一個很大的主題,本文不涉及拙吉。)遺憾的是潮孽,MAC地址本身無法做到這一點。它只與廠商有關(guān)筷黔,與所處網(wǎng)絡(luò)無關(guān)往史。

這就導(dǎo)致了"網(wǎng)絡(luò)層"的誕生。它的作用是引進一套新的地址佛舱,使得我們能夠區(qū)分不同的計算機是否屬于同一個子網(wǎng)絡(luò)怠堪。這套地址就叫做"網(wǎng)絡(luò)地址",簡稱"網(wǎng)址"名眉。

于是粟矿,"網(wǎng)絡(luò)層"出現(xiàn)以后,每臺計算機有了兩種地址损拢,一種是MAC地址陌粹,另一種是網(wǎng)絡(luò)地址。兩種地址之間沒有任何聯(lián)系福压,MAC地址是綁定在網(wǎng)卡上的掏秩,網(wǎng)絡(luò)地址則是管理員分配的,它們只是隨機組合在一起荆姆。

網(wǎng)絡(luò)地址幫助我們確定計算機所在的子網(wǎng)絡(luò)蒙幻,MAC地址則將數(shù)據(jù)包送到該子網(wǎng)絡(luò)中的目標網(wǎng)卡。因此胆筒,從邏輯上可以推斷邮破,必定是先處理網(wǎng)絡(luò)地址诈豌,然后再處理MAC地址。

4.2 IP協(xié)議

規(guī)定網(wǎng)絡(luò)地址的協(xié)議抒和,叫做IP協(xié)議矫渔。它所定義的地址,就被稱為IP地址摧莽。
目前庙洼,廣泛采用的是IP協(xié)議第四版,簡稱IPv4镊辕。這個版本規(guī)定油够,網(wǎng)絡(luò)地址由32個二進制位組成。



習(xí)慣上征懈,我們用分成四段的十進制數(shù)表示IP地址叠聋,從0.0.0.0一直到255.255.255.255。

互聯(lián)網(wǎng)上的每一臺計算機受裹,都會分配到一個IP地址碌补。這個地址分成兩個部分,前一部分代表網(wǎng)絡(luò)棉饶,后一部分代表主機厦章。比如,IP地址172.16.254.1照藻,這是一個32位的地址袜啃,假定它的網(wǎng)絡(luò)部分是前24位(172.16.254),那么主機部分就是后8位(最后的那個1)幸缕。處于同一個子網(wǎng)絡(luò)的電腦群发,它們IP地址的網(wǎng)絡(luò)部分必定是相同的,也就是說172.16.254.2應(yīng)該與172.16.254.1處在同一個子網(wǎng)絡(luò)发乔。

但是熟妓,問題在于單單從IP地址,我們無法判斷網(wǎng)絡(luò)部分栏尚。還是以172.16.254.1為例起愈,它的網(wǎng)絡(luò)部分,到底是前24位译仗,還是前16位抬虽,甚至前28位,從IP地址上是看不出來的纵菌。

那么阐污,怎樣才能從IP地址,判斷兩臺計算機是否屬于同一個子網(wǎng)絡(luò)呢咱圆?這就要用到另一個參數(shù)"子網(wǎng)掩碼"(subnet mask)笛辟。

所謂"子網(wǎng)掩碼"功氨,就是表示子網(wǎng)絡(luò)特征的一個參數(shù)。它在形式上等同于IP地址隘膘,也是一個32位二進制數(shù)字,它的網(wǎng)絡(luò)部分全部為1杠览,主機部分全部為0弯菊。比如,IP地址172.16.254.1踱阿,如果已知網(wǎng)絡(luò)部分是前24位管钳,主機部分是后8位,那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000软舌,寫成十進制就是255.255.255.0才漆。

知道"子網(wǎng)掩碼",我們就能判斷佛点,任意兩個IP地址是否處在同一個子網(wǎng)絡(luò)醇滥。方法是將兩個IP地址與子網(wǎng)掩碼分別進行AND運算(兩個數(shù)位都為1,運算結(jié)果為1超营,否則為0)鸳玩,然后比較結(jié)果是否相同,如果是的話演闭,就表明它們在同一個子網(wǎng)絡(luò)中不跟,否則就不是。

比如米碰,已知IP地址172.16.254.1172.16.254.233的子網(wǎng)掩碼都是255.255.255.0窝革,請問它們是否在同一個子網(wǎng)絡(luò)?兩者與子網(wǎng)掩碼分別進行AND運算吕座,結(jié)果都是172.16.254.0虐译,因此它們在同一個子網(wǎng)絡(luò)。
總結(jié)一下吴趴,IP協(xié)議的作用主要有兩個菱蔬,一個是為每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網(wǎng)絡(luò)史侣。

4.3 IP數(shù)據(jù)包

根據(jù)IP協(xié)議發(fā)送的數(shù)據(jù)拴泌,就叫做IP數(shù)據(jù)包。不難想象惊橱,其中必定包括IP地址信息蚪腐。
但是前面說過,以太網(wǎng)數(shù)據(jù)包只包含MAC地址税朴,并沒有IP地址的欄位回季。那么是否需要修改數(shù)據(jù)定義家制,再添加一個欄位呢?
回答是不需要泡一,我們可以把IP數(shù)據(jù)包直接放進以太網(wǎng)數(shù)據(jù)包的"數(shù)據(jù)"部分颤殴,因此完全不用修改以太網(wǎng)的規(guī)格。這就是互聯(lián)網(wǎng)分層結(jié)構(gòu)的好處:上層的變動完全不涉及下層的結(jié)構(gòu)鼻忠。
具體來說涵但,IP數(shù)據(jù)包也分為"標頭"和"數(shù)據(jù)"兩個部分。



"標頭"部分主要包括版本帖蔓、長度矮瘟、IP地址等信息,"數(shù)據(jù)"部分則是IP數(shù)據(jù)包的具體內(nèi)容塑娇。它放進以太網(wǎng)數(shù)據(jù)包后澈侠,以太網(wǎng)數(shù)據(jù)包就變成了下面這樣。



IP數(shù)據(jù)包的"標頭"部分的長度為20到60字節(jié)埋酬,整個數(shù)據(jù)包的總長度最大為65,535字節(jié)哨啃。因此,理論上写妥,一個IP數(shù)據(jù)包的"數(shù)據(jù)"部分棘催,最長為65,515字節(jié)。前面說過,以太網(wǎng)數(shù)據(jù)包的"數(shù)據(jù)"部分,最長只有1500字節(jié)牡整。因此,如果IP數(shù)據(jù)包超過了1500字節(jié)呼猪,它就需要分割成幾個以太網(wǎng)數(shù)據(jù)包,分開發(fā)送了砸琅。

4.4 ARP協(xié)議(得到對方的MAC地址)

關(guān)于"網(wǎng)絡(luò)層"宋距,還有最后一點需要說明。

因為IP數(shù)據(jù)包是放在以太網(wǎng)數(shù)據(jù)包里發(fā)送的症脂,所以我們必須同時知道兩個地址谚赎,一個是對方的MAC地址,另一個是對方的IP地址诱篷。通常情況下壶唤,對方的IP地址是已知的(后文會解釋),但是我們不知道它的MAC地址棕所。

所以闸盔,我們需要一種機制,能夠從IP地址得到MAC地址琳省。

這里又可以分成兩種情況迎吵。第一種情況躲撰,如果兩臺主機不在同一個子網(wǎng)絡(luò),那么事實上沒有辦法得到對方的MAC地址击费,只能把數(shù)據(jù)包傳送到兩個子網(wǎng)絡(luò)連接處的"網(wǎng)關(guān)"(gateway)拢蛋,讓網(wǎng)關(guān)去處理。

第二種情況蔫巩,如果兩臺主機在同一個子網(wǎng)絡(luò)谆棱,那么我們可以用ARP協(xié)議,得到對方的MAC地址批幌。ARP協(xié)議也是發(fā)出一個數(shù)據(jù)包(包含在以太網(wǎng)數(shù)據(jù)包中)础锐,其中包含它所要查詢主機的IP地址嗓节,在對方的MAC地址這一欄荧缘,填的是FF:FF:FF:FF:FF:FF,表示這是一個"廣播"地址拦宣。它所在子網(wǎng)絡(luò)的每一臺主機截粗,都會收到這個數(shù)據(jù)包,從中取出IP地址鸵隧,與自身的IP地址進行比較绸罗。如果兩者相同,都做出回復(fù)豆瘫,向?qū)Ψ綀蟾孀约旱腗AC地址珊蟀,否則就丟棄這個包。

總之外驱,有了ARP協(xié)議之后育灸,我們就可以得到同一個子網(wǎng)絡(luò)內(nèi)的主機MAC地址,可以把數(shù)據(jù)包發(fā)送到任意一臺主機之上了昵宇。

五磅崭、傳輸層(UDP協(xié)議,TCP協(xié)議)

5.1 傳輸層的由來

有了MAC地址和IP地址瓦哎,我們已經(jīng)可以在互聯(lián)網(wǎng)上任意兩臺主機上建立通信砸喻。
接下來的問題是,同一臺主機上有許多程序都需要用到網(wǎng)絡(luò)蒋譬,比如割岛,你一邊瀏覽網(wǎng)頁,一邊與朋友在線聊天犯助。當一個數(shù)據(jù)包從互聯(lián)網(wǎng)上發(fā)來的時候蜂桶,你怎么知道,它是表示網(wǎng)頁的內(nèi)容也切,還是表示在線聊天的內(nèi)容扑媚?

也就是說腰湾,我們還需要一個參數(shù),表示這個數(shù)據(jù)包到底供哪個程序(進程)使用疆股。這個參數(shù)就叫做"端口"(port)费坊,它其實是每一個使用網(wǎng)卡的程序的編號。每個數(shù)據(jù)包都發(fā)到主機的特定端口旬痹,所以不同的程序就能取到自己所需要的數(shù)據(jù)附井。
"端口"是0到65535之間的一個整數(shù),正好16個二進制位两残。0到1023的端口被系統(tǒng)占用永毅,用戶只能選用大于1023的端口。不管是瀏覽網(wǎng)頁還是在線聊天人弓,應(yīng)用程序會隨機選用一個端口沼死,然后與服務(wù)器的相應(yīng)端口聯(lián)系。
"傳輸層"的功能崔赌,就是建立"端口到端口"的通信意蛀。相比之下,"網(wǎng)絡(luò)層"的功能是建立"主機到主機"的通信健芭。只要確定主機和端口县钥,我們就能實現(xiàn)程序之間的交流。因此慈迈,Unix系統(tǒng)就把主機+端口若贮,叫做"套接字"(socket)。有了它痒留,就可以進行網(wǎng)絡(luò)應(yīng)用程序開發(fā)了谴麦。

5.2 UDP協(xié)議
現(xiàn)在,我們必須在數(shù)據(jù)包中加入端口信息狭瞎,這就需要新的協(xié)議细移。最簡單的實現(xiàn)叫做UDP協(xié)議,它的格式幾乎就是在數(shù)據(jù)前面熊锭,加上端口號弧轧。
UDP數(shù)據(jù)包,也是由"標頭"和"數(shù)據(jù)"兩部分組成碗殷。


"標頭"部分主要定義了發(fā)出端口和接收端口精绎,"數(shù)據(jù)"部分就是具體的內(nèi)容。然后锌妻,把整個UDP數(shù)據(jù)包放入IP數(shù)據(jù)包的"數(shù)據(jù)"部分代乃,而前面說過,IP數(shù)據(jù)包又是放在以太網(wǎng)數(shù)據(jù)包之中的,所以整個以太網(wǎng)數(shù)據(jù)包現(xiàn)在變成了下面這樣:
[圖片上傳中搁吓。原茅。。(6)]
UDP數(shù)據(jù)包非常簡單堕仔,"標頭"部分一共只有8個字節(jié)擂橘,總長度不超過65,535字節(jié),正好放進一個IP數(shù)據(jù)包摩骨。

5.3 TCP協(xié)議

UDP協(xié)議的優(yōu)點是比較簡單通贞,容易實現(xiàn),但是缺點是可靠性較差恼五,一旦數(shù)據(jù)包發(fā)出昌罩,無法知道對方是否收到。
為了解決這個問題灾馒,提高網(wǎng)絡(luò)可靠性茎用,TCP協(xié)議就誕生了。這個協(xié)議非常復(fù)雜你虹,但可以近似認為绘搞,它就是有確認機制的UDP協(xié)議彤避,每發(fā)出一個數(shù)據(jù)包都要求確認傅物。如果有一個數(shù)據(jù)包遺失,就收不到確認琉预,發(fā)出方就知道有必要重發(fā)這個數(shù)據(jù)包了董饰。
因此,TCP協(xié)議能夠確保數(shù)據(jù)不會遺失圆米。它的缺點是過程復(fù)雜卒暂、實現(xiàn)困難、消耗較多的資源娄帖。
TCP數(shù)據(jù)包和UDP數(shù)據(jù)包一樣也祠,都是內(nèi)嵌在IP數(shù)據(jù)包的"數(shù)據(jù)"部分。TCP數(shù)據(jù)包沒有長度限制近速,理論上可以無限長诈嘿,但是為了保證網(wǎng)絡(luò)的效率,通常TCP數(shù)據(jù)包的長度不會超過IP數(shù)據(jù)包的長度削葱,以確保單個TCP數(shù)據(jù)包不必再分割奖亚。

六、應(yīng)用層

應(yīng)用程序收到"傳輸層"的數(shù)據(jù)析砸,接下來就要進行解讀昔字。由于互聯(lián)網(wǎng)是開放架構(gòu),數(shù)據(jù)來源五花八門首繁,必須事先規(guī)定好格式作郭,否則根本無法解讀陨囊。
"應(yīng)用層"的作用,就是規(guī)定應(yīng)用程序的數(shù)據(jù)格式夹攒。
舉例來說谆扎,TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù),比如Email芹助、WWW堂湖、FTP等等。那么状土,必須有不同協(xié)議規(guī)定電子郵件无蜂、網(wǎng)頁、FTP數(shù)據(jù)的格式蒙谓,這些應(yīng)用程序協(xié)議就構(gòu)成了"應(yīng)用層"斥季。
這是最高的一層,直接面對用戶累驮。它的數(shù)據(jù)就放在TCP數(shù)據(jù)包的"數(shù)據(jù)"部分酣倾。因此,現(xiàn)在的以太網(wǎng)的數(shù)據(jù)包就變成下面這樣谤专。


至此躁锡,整個互聯(lián)網(wǎng)的五層結(jié)構(gòu),自下而上全部講完了置侍。這是從系統(tǒng)的角度映之,解釋互聯(lián)網(wǎng)是如何構(gòu)成的。下一篇蜡坊,我反過來杠输,從用戶的角度,自上而下看看這個結(jié)構(gòu)是如何發(fā)揮作用秕衙,完成一次網(wǎng)絡(luò)數(shù)據(jù)交換的蠢甲。

參考鏈接:互聯(lián)網(wǎng)協(xié)議入門(一)-阮一峰


好看的人兒,點個喜歡? 你會更好看哦~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末据忘,一起剝皮案震驚了整個濱河市鹦牛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌若河,老刑警劉巖能岩,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異萧福,居然都是意外死亡拉鹃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膏燕,“玉大人钥屈,你說我怎么就攤上這事“颖瑁” “怎么了篷就?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長近忙。 經(jīng)常有香客問我竭业,道長,這世上最難降的妖魔是什么及舍? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任未辆,我火速辦了婚禮,結(jié)果婚禮上锯玛,老公的妹妹穿的比我還像新娘咐柜。我一直安慰自己,他們只是感情好攘残,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布拙友。 她就那樣靜靜地躺著,像睡著了一般歼郭。 火紅的嫁衣襯著肌膚如雪遗契。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天实撒,我揣著相機與錄音姊途,去河邊找鬼涉瘾。 笑死知态,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的立叛。 我是一名探鬼主播负敏,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秘蛇!你這毒婦竟也來了其做?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赁还,失蹤者是張志新(化名)和其女友劉穎妖泄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘策,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡蹈胡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罚渐。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡却汉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荷并,到底是詐尸還是另有隱情合砂,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布源织,位于F島的核電站翩伪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谈息。R本人自食惡果不足惜幻工,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黎茎。 院中可真熱鬧囊颅,春花似錦、人聲如沸傅瞻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗅骄。三九已至胳挎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溺森,已是汗流浹背慕爬。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屏积,地道東北人医窿。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像炊林,于是被迫代替她去往敵國和親姥卢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容