目錄
第一層:物理層
第二層(數(shù)據(jù)鏈路層)
第三層(網(wǎng)絡(luò)層)
第四層(傳輸層)
第五層(應(yīng)用層)
網(wǎng)絡(luò)模型有好幾種,其中最常討論的有倆種:OSI七層參考模型、TCP/IP四層參考模型。OSI模型是國際標(biāo)準(zhǔn)模型,結(jié)構(gòu)分的很細(xì),然而既復(fù)雜又不實(shí)用,我們這篇文章來講已經(jīng)得到廣泛應(yīng)用的TCP/IP模型,同時(shí)也是面試也問的比較多的。
很多人可能會(huì)有個(gè)疑問,TCP/IP模型到底是分了四層還是五層,有些資料說四層,有些資料說五層。其實(shí)TCP/IP模型是分四層的,應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層。由于講解的時(shí)候想要把網(wǎng)絡(luò)接口層闡述清楚,通常會(huì)把網(wǎng)絡(luò)接口層分成數(shù)據(jù)鏈路層與物理層來講解,TCP/IP模型中的網(wǎng)絡(luò)接口層也正對(duì)應(yīng)OSI模型中的數(shù)據(jù)鏈路層與物理層,所以也就有了TCP/IP五層模型。TCP/IP模型與OSI模型對(duì)應(yīng)關(guān)系如下圖:
下面我以TCP/IP五層模型來講解。
第一層:物理層
我記得大一開學(xué)的時(shí)候我跟幾個(gè)室友興高采烈的帶了筆記本電腦去宿舍,結(jié)果發(fā)現(xiàn)宿舍沒網(wǎng),一圈打聽下來是學(xué)校不給大一的學(xué)生開通網(wǎng)絡(luò),那電腦不能白帶啊,我們就整了個(gè)集線器,把幾臺(tái)電腦連接起來,配置這幾臺(tái)電腦的 IP 地址、子網(wǎng)掩碼,要想兩臺(tái)電腦能夠通信,必須配置成為一個(gè)網(wǎng)段,否則是不通的,這幾臺(tái)電腦已經(jīng)構(gòu)成了一個(gè)很小的局域網(wǎng),也即 LAN??梢酝媛?lián)機(jī)局域網(wǎng)游戲啦,比如魔獸爭(zhēng)霸!集線器的作用就是將自己收到的每一個(gè)字節(jié)都廣播出去,這是第一層物理層聯(lián)通的方案。悄悄告訴你,如果只有倆臺(tái)電腦,集線器都不用,一根網(wǎng)線就行了。
第二層(數(shù)據(jù)鏈路層)
?如果只有物理層,所有的消息都廣播給所有人,那就麻煩了,比如你廣播的一個(gè)消息包只對(duì)張三有用,李四收到這個(gè)消息包打開一看,發(fā)現(xiàn)對(duì)自己沒用,過了一會(huì)又來了一個(gè)消息包,李四拆了半天發(fā)現(xiàn)又是對(duì)自己沒用的,李四就很惱火了,這就產(chǎn)生了一個(gè)問題:這個(gè)包是發(fā)給誰的?誰應(yīng)該接收?就像你去寄快遞,快遞員都會(huì)讓你填上接收人信息。這里用到一個(gè)物理地址,叫作鏈路層地址。但是因?yàn)榈诙又饕鉀Q媒體接入控制的問題,所以它常被稱為MAC(Media Access Control) 地址,第二層有時(shí)候也會(huì)被稱為MAC層。
那么又有個(gè)問題誕生了,我怎么知道別的電腦的MAC地址呢?吼啊,在宿舍中大聲一吼,張三,你的MAC地址是多少,張三聽到了就會(huì)說:我的MAC地址是xxx,你說:好了我知道了,過了一會(huì)你又要發(fā)送消息包給張三,你又吼一聲,張三,你的MAC地址是多少?這樣是不是有點(diǎn)不合適?張三可能會(huì)說你有毛病啊,我剛剛才告訴你了,俗話說好記性不如爛筆頭,張三第一次告訴你的時(shí)候,就先記下來,下次用直接查就好了。
在第二層有個(gè)協(xié)議叫ARP協(xié)議,他就是解決已知ip求mac地址的問題,在一個(gè)局域網(wǎng)里面,當(dāng)知道了 IP 地址,不知道 MAC 怎么辦呢?靠“吼”。廣而告之,發(fā)送一個(gè)廣播包,誰是這個(gè) IP 誰來回答,為了避免每次都用 ARP 請(qǐng)求,機(jī)器本地也會(huì)進(jìn)行 ARP 緩存(打開cmd 輸入arp -a 命令可以查看)。當(dāng)然機(jī)器會(huì)不斷地上線下線,IP 也可能會(huì)變,所以 ARP 的 MAC 地址緩存過一段時(shí)間就會(huì)過期。
消息包中有了MAC地址,李四收到消息包發(fā)現(xiàn)MAC不是他的,那就不管他了,直接丟棄,也不用去管里面數(shù)據(jù)是不是對(duì)他有用了。
這種組網(wǎng)的方法,對(duì)一個(gè)宿舍來說沒有問題,但是一旦機(jī)器數(shù)目增多,問題就出現(xiàn)了。因?yàn)榧€器(Hub) 是廣播的,不管某個(gè)接口是否需要,所有的 Bit 都會(huì)被發(fā)送出去,然后讓主機(jī)來判斷是不是需要。把不需要的包轉(zhuǎn)發(fā)過去,純屬浪費(fèi)??磥砑€器這種不管三七二十一都轉(zhuǎn)發(fā)的設(shè)備是不行了,需要點(diǎn)兒智能的。因?yàn)槊總€(gè)口都只連接一臺(tái)電腦,這臺(tái)電腦又不怎么換 IP 和 MAC 地址,只要記住這臺(tái)電腦的 MAC 地址,如果目標(biāo) MAC 地址不是這臺(tái)電腦的,這個(gè)口就不用轉(zhuǎn)發(fā)了。正因?yàn)檫@個(gè)需求,二層設(shè)備——交換機(jī)誕生了。
一臺(tái) MAC1 電腦將一個(gè)包發(fā)送給另一臺(tái) MAC2 電腦,當(dāng)這個(gè)包到達(dá)交換機(jī)的時(shí)候,一開始交換機(jī)也不知道 MAC2 的電腦在哪個(gè)口,所以沒辦法,它只能將包轉(zhuǎn)發(fā)給除了來的那個(gè)口之外的其他所有的口。但是,這個(gè)時(shí)候,交換機(jī)會(huì)干一件非常聰明的事情,就是交換機(jī)會(huì)記住,MAC1 是來自一個(gè)明確的口。以后有包的目的地址是 MAC1 的,直接發(fā)送到這個(gè)口就可以了。當(dāng)交換機(jī)作為一個(gè)關(guān)卡一樣,過了一段時(shí)間之后,就有了整個(gè)網(wǎng)絡(luò)的一個(gè)結(jié)構(gòu)了,這個(gè)時(shí)候,基本上不用廣播了,全部可以準(zhǔn)確轉(zhuǎn)發(fā)。當(dāng)然,每個(gè)機(jī)器的 IP 地址會(huì)變,所在的口也會(huì)變,因而交換機(jī)上的學(xué)習(xí)的結(jié)果,我們稱為轉(zhuǎn)發(fā)表,是有一個(gè)過期時(shí)間的。有了交換機(jī),一般來說,你接個(gè)幾十臺(tái)、上百臺(tái)機(jī)器打游戲,應(yīng)該沒啥問題。
第三層(網(wǎng)絡(luò)層)
網(wǎng)絡(luò)層也被稱為IP層。大一比較可惜,大伙興高采烈的帶了電腦來學(xué)校經(jīng)過一番折騰還是只能玩玩局域網(wǎng)游戲,連愛情武打片都看不了,時(shí)間也過得很快,不知不覺到了大二了。學(xué)校給每個(gè)宿舍分配了一個(gè)網(wǎng)口,這個(gè)網(wǎng)口是開通網(wǎng)絡(luò)了的,可是我們有三四臺(tái)電腦,只有一個(gè)網(wǎng)口咋辦呢,我跟舍友們商量了一番合資買了個(gè)家庭路由器,路由器有內(nèi)網(wǎng)網(wǎng)口跟外網(wǎng)網(wǎng)口,外網(wǎng)網(wǎng)口連接學(xué)校的網(wǎng)口,內(nèi)網(wǎng)網(wǎng)口連接我們的電腦,這樣我們一直開著路由器就大家都能上網(wǎng)了,能夠愉快的玩網(wǎng)游和看愛情武打片了。
那么路由器扮演了什么角色,干了什么活呢。
路由器,有時(shí)也稱為三層設(shè)備。
當(dāng)一臺(tái)機(jī)器去訪問一個(gè)IP地址的時(shí)候,都會(huì)先去判斷這個(gè)IP跟它自己是不是在同一個(gè)網(wǎng)段里面,怎么判斷呢?將IP與子網(wǎng)掩碼按位與,可獲得網(wǎng)絡(luò)號(hào)。 CIDR確定網(wǎng)絡(luò)號(hào)長度,如192.168.0.1/24,24表示網(wǎng)絡(luò)號(hào)是24位,意味著子網(wǎng)掩碼應(yīng)該為255.255.255.0 即前三個(gè)字節(jié)全1,最后字節(jié)全0。與IP做與操作,就可以去掉主機(jī)號(hào),得到網(wǎng)絡(luò)號(hào),如果網(wǎng)絡(luò)號(hào)相同,就在同一個(gè)網(wǎng)段。
如果是同一個(gè)網(wǎng)段,例如,你訪問你室友兄弟的電腦,那就沒網(wǎng)關(guān)什么事情,直接將源地址和目標(biāo)地址放入 IP 頭中,然后通過 ARP 獲得 MAC 地址,將源 MAC 和目的 MAC 放入 MAC 頭中,發(fā)出去就可以了。
如果不是同一網(wǎng)段,例如,你要訪問你們校園網(wǎng),該怎么辦?這就需要發(fā)往默認(rèn)網(wǎng)關(guān) Gateway。Gateway 的地址一定是和源 IP 地址(也就是你的IP)是一個(gè)網(wǎng)段的。往往不是第一個(gè),就是第二個(gè)。例如 192.168.1.0/24 這個(gè)網(wǎng)段,Gateway 往往會(huì)是 192.168.1.1/24 或者 192.168.1.2/24。
這里的網(wǎng)關(guān)通常就是路由器,路由器中有路由表,根據(jù)消息包里面的目標(biāo)IP可以在路由表中找到下一跳的路由IP,地鐵線路圖都看過吧,可以把路由表想象成地鐵線路圖,你知道目的地,你根據(jù)地鐵圖就能查到對(duì)應(yīng)的路線。當(dāng)走到最后一跳的時(shí)候,路由器發(fā)現(xiàn)包里的目標(biāo)IP就是我這個(gè)網(wǎng)段的,然后通過ARP協(xié)議獲取目標(biāo)IP的MAC地址,修改消息包里的目標(biāo)MAC地址后發(fā)過去,最終目標(biāo)機(jī)器就能收到這個(gè)消息包了。
第四層(傳輸層)
傳輸層也是比較重要的一層,主要負(fù)責(zé)向兩個(gè)主機(jī)中進(jìn)程之間的通信提供服務(wù)。而且面試經(jīng)常問,傳輸層里比較重要的兩個(gè)協(xié)議,一個(gè)是 TCP,一個(gè)是 UDP。是不是經(jīng)常被問到TCP跟UDP有什么區(qū)別?很多人會(huì)回答TCP是面向連接的,UDP是面向無連接的。那么TCP為什么要三次握手去建立連接,我UDP也可以發(fā)三個(gè)包玩玩??!
欲知詳情,請(qǐng)參閱我的另一篇文章:
詳解TCP/UDP網(wǎng)絡(luò)協(xié)議
第五層(應(yīng)用層)
應(yīng)用層給我們提供了很多協(xié)議,比如HTTP、HTTPS、DNS、FTP等等,最常用的就是HTTP了,這里我就介紹HTTP,請(qǐng)參閱我的另一篇文章:
詳解HTTP協(xié)議文章來源:http://www.zghlxwxcb.cn/news/detail-445956.html
到這里,TCP/IP五層網(wǎng)絡(luò)模型就介紹完了,寫的不好的地方還請(qǐng)多多包涵,歡迎指教。文章來源地址http://www.zghlxwxcb.cn/news/detail-445956.html
到了這里,關(guān)于詳解TCP/IP網(wǎng)絡(luò)模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!