小林coding網(wǎng)站通道:入口
本篇文章摘抄應(yīng)付面試的重點(diǎn)內(nèi)容,詳細(xì)內(nèi)容還請(qǐng)移步:
應(yīng)用層(Application Layer)
我們的電腦或手機(jī)使用的應(yīng)用軟件都是在應(yīng)用層實(shí)現(xiàn)。應(yīng)用層只需要專注于為用戶提供應(yīng)用功能,不用去關(guān)心數(shù)據(jù)是如何傳輸?shù)?/strong>。
而且應(yīng)用層是工作在操作系統(tǒng)中的用戶態(tài),傳輸層及以下則工作在內(nèi)核態(tài)。因?yàn)閼?yīng)用層往往負(fù)責(zé)處理眾多邏輯,比如文件傳輸、名稱查詢、網(wǎng)絡(luò)管理等等,如果應(yīng)用層也在內(nèi)核中實(shí)現(xiàn),會(huì)使內(nèi)核變得非常龐大。
應(yīng)用層協(xié)議有ping、telnet、OSPF、DNS。
傳輸層(Transport Layer)
傳輸層服務(wù)好應(yīng)用即可,讓其作為應(yīng)用間數(shù)據(jù)傳輸?shù)拿浇?,幫助?shí)現(xiàn)應(yīng)用到應(yīng)用的通信。
傳輸層兩個(gè)最主要的協(xié)議TCP、UDP。
TCP協(xié)議為應(yīng)用層提供可靠的、面向連接的、基于流的服務(wù)。
TCP 相比 UDP 多了很多特性,比如流量控制、超時(shí)重傳、擁塞控制等,這些都是為了保證數(shù)據(jù)包能可靠地傳輸給對(duì)方。
UDP協(xié)議與TCP協(xié)議完全相反,它為應(yīng)用層提供不可靠、無連接和基于數(shù)據(jù)報(bào)的服務(wù)。
UDP 相對(duì)來說就很簡(jiǎn)單,簡(jiǎn)單到只負(fù)責(zé)發(fā)送數(shù)據(jù)包,不保證數(shù)據(jù)包是否能抵達(dá)對(duì)方,但它實(shí)時(shí)性相對(duì)更好,傳輸效率也高。當(dāng)然,UDP 也可以實(shí)現(xiàn)可靠傳輸,把 TCP 的特性在應(yīng)用層上實(shí)現(xiàn)就可以,不過要實(shí)現(xiàn)一個(gè)商用的可靠 UDP 傳輸協(xié)議,也不是一件簡(jiǎn)單的事情。
TCP段(TCP Segment)
應(yīng)用需要傳輸?shù)臄?shù)據(jù)可能會(huì)非常大,如果直接傳輸就不好控制,因此當(dāng)傳輸層的數(shù)據(jù)包大小超過 MSS(TCP 最大報(bào)文段長(zhǎng)度) ,就要將數(shù)據(jù)包分塊,這樣即使中途有一個(gè)分塊丟失或損壞了,只需要重新發(fā)送這一個(gè)分塊,而不用重新發(fā)送整個(gè)數(shù)據(jù)包。
當(dāng)設(shè)備作為接收方時(shí),傳輸層則要負(fù)責(zé)把數(shù)據(jù)包傳給應(yīng)用,但是一臺(tái)設(shè)備上可能會(huì)有很多應(yīng)用在接收或者傳輸數(shù)據(jù),因此需要用一個(gè)編號(hào)將應(yīng)用區(qū)分開來,這個(gè)編號(hào)就是端口。
比如 80 端口通常是 Web 服務(wù)器用的,22 端口通常是遠(yuǎn)程登錄服務(wù)器用的。而對(duì)于瀏覽器(客戶端)中的每個(gè)標(biāo)簽欄都是一個(gè)獨(dú)立的進(jìn)程,操作系統(tǒng)會(huì)為這些進(jìn)程分配臨時(shí)的端口號(hào)。
由于傳輸層的報(bào)文中會(huì)攜帶端口號(hào),因此接收方可以識(shí)別出該報(bào)文是發(fā)送給哪個(gè)應(yīng)用。
網(wǎng)絡(luò)層(Internet Layer)
網(wǎng)絡(luò)層實(shí)現(xiàn)數(shù)據(jù)包的選路和轉(zhuǎn)發(fā),大家可能會(huì)認(rèn)為傳輸層負(fù)責(zé)將數(shù)據(jù)從一個(gè)設(shè)備傳輸?shù)搅硪粋€(gè)設(shè)備,事實(shí)上它并不負(fù)責(zé)
網(wǎng)絡(luò)層最核心的協(xié)議是我們的IP協(xié)議,IP 協(xié)議會(huì)將傳輸層的報(bào)文作為數(shù)據(jù)部分,再加上 IP 包頭組裝成 IP 報(bào)文,如果 IP 報(bào)文大小超過 MTU(以太網(wǎng)中一般為 1500 字節(jié))就會(huì)再次進(jìn)行分片,得到一個(gè)即將發(fā)送到網(wǎng)絡(luò)的 IP 報(bào)文。
IP協(xié)議的尋址能力
將 IP 地址分成兩種意義:
- 一個(gè)是網(wǎng)絡(luò)號(hào),負(fù)責(zé)標(biāo)識(shí)該 IP 地址是屬于哪個(gè)「子網(wǎng)」的;
- 一個(gè)是主機(jī)號(hào),負(fù)責(zé)標(biāo)識(shí)同一「子網(wǎng)」下的不同主機(jī);
怎么分的呢?這需要配合子網(wǎng)掩碼才能算出 IP 地址 的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。
舉個(gè)例子,比如 10.100.122.0/24,后面的/24表示就是 255.255.255.0 子網(wǎng)掩碼,255.255.255.0 二進(jìn)制是「11111111-11111111-11111111-00000000」,大家數(shù)數(shù)一共多少個(gè)1?不用數(shù)了,是 24 個(gè)1,為了簡(jiǎn)化子網(wǎng)掩碼的表示,用/24代替255.255.255.0。
知道了子網(wǎng)掩碼,該怎么計(jì)算出網(wǎng)絡(luò)地址和主機(jī)地址呢?
將 10.100.122.2 和 255.255.255.0 進(jìn)行按位與運(yùn)算,就可以得到網(wǎng)絡(luò)號(hào)。
也就是說網(wǎng)絡(luò)號(hào)是:10.100.122.2。那么在尋址的過程中,先匹配到相同的網(wǎng)絡(luò)號(hào)(表示要找到同一個(gè)子網(wǎng)),才會(huì)去找對(duì)應(yīng)的主機(jī)。
IP協(xié)議的路由能力
除了尋址能力, IP 協(xié)議還有另一個(gè)重要的能力就是路由。實(shí)際場(chǎng)景中,兩臺(tái)設(shè)備并不是用一條網(wǎng)線連接起來的,而是通過很多網(wǎng)關(guān)、路由器、交換機(jī)等眾多網(wǎng)絡(luò)設(shè)備連接起來的,那么就會(huì)形成很多條網(wǎng)絡(luò)的路徑,因此當(dāng)數(shù)據(jù)包到達(dá)一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),就需要通過路由算法決定下一步走哪條路徑。
路由器尋址工作中,就是要找到目標(biāo)地址的子網(wǎng),找到后進(jìn)而把數(shù)據(jù)包轉(zhuǎn)發(fā)給對(duì)應(yīng)的網(wǎng)絡(luò)內(nèi)。
IP 協(xié)議的尋址作用是告訴我們?nèi)ネ乱粋€(gè)目的地該朝哪個(gè)方向走,路由則是根據(jù)「下一個(gè)目的地」選擇路徑。尋址更像在導(dǎo)航,路由更像在操作方向盤。
數(shù)據(jù)鏈路層(Link Layer)
生成了 IP 頭部之后,接下來要交給網(wǎng)絡(luò)接口層(Link Layer)在 IP 頭部的前面加上 MAC 頭部,并封裝成數(shù)據(jù)幀(Data frame)發(fā)送到網(wǎng)絡(luò)上。
數(shù)據(jù)鏈路層實(shí)現(xiàn)了網(wǎng)卡接口的網(wǎng)絡(luò)驅(qū)動(dòng)程序,以處理數(shù)據(jù)在物理媒介上的傳輸。最常用的兩個(gè)協(xié)議是ARP協(xié)議和RARP協(xié)議。他們**實(shí)現(xiàn)了IP地址和機(jī)器物理地址(通常是MAC地址,以太網(wǎng)、令牌環(huán)和802.11無線網(wǎng)絡(luò)都使用MAC地址)**之間的相互轉(zhuǎn)換。
什么是以太網(wǎng)?
電腦上的以太網(wǎng)接口,Wi-Fi接口,以太網(wǎng)交換機(jī)、路由器上的千兆,萬兆以太網(wǎng)口,還有網(wǎng)線,它們都是以太網(wǎng)的組成部分。以太網(wǎng)就是一種在「局域網(wǎng)」內(nèi),把附近的設(shè)備連接起來,使它們之間可以進(jìn)行通訊的技術(shù)。
所以說,網(wǎng)絡(luò)接口層主要為網(wǎng)絡(luò)層提供「鏈路級(jí)別」傳輸?shù)姆?wù),負(fù)責(zé)在以太網(wǎng)、WiFi 這樣的底層網(wǎng)絡(luò)上發(fā)送原始數(shù)據(jù)包,工作在網(wǎng)卡這個(gè)層次,使用 MAC 地址來標(biāo)識(shí)網(wǎng)絡(luò)上的設(shè)備。
總結(jié)
文章來源:http://www.zghlxwxcb.cn/news/detail-847934.html
網(wǎng)絡(luò)接口層的傳輸單位是幀(frame),IP 層的傳輸單位是包(packet),TCP 層的傳輸單位是段(segment),HTTP 的傳輸單位則是消息或報(bào)文(message)。但這些名詞并沒有什么本質(zhì)的區(qū)分,可以統(tǒng)稱為數(shù)據(jù)包。文章來源地址http://www.zghlxwxcb.cn/news/detail-847934.html
到了這里,關(guān)于小林coding圖解計(jì)算機(jī)網(wǎng)絡(luò)|基礎(chǔ)篇01|TCP/IP網(wǎng)絡(luò)模型有哪幾層?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!