定位技術(shù)
2020年02月15日
在網(wǎng)絡(luò)通信的過(guò)程中,將發(fā)出數(shù)據(jù)的主機(jī)稱為源主機(jī),接收數(shù)據(jù)的主機(jī)稱為目的主機(jī)。當(dāng)源主機(jī)發(fā)出數(shù)據(jù)時(shí),數(shù)據(jù)在源主機(jī)中從上層向下層傳送。源主機(jī)中的應(yīng)用進(jìn)程先將數(shù)據(jù)交給應(yīng)用層,應(yīng)用層加上必要的控制信息就成了報(bào)文流,向下傳給傳輸層。傳輸層將收到的數(shù)據(jù)單元加上本層的控制信息,形成報(bào)文段、數(shù)據(jù)報(bào),再交給網(wǎng)際層。網(wǎng)際層加上本層的控制信息,形成IP數(shù)據(jù)報(bào),傳給網(wǎng)絡(luò)接口層。網(wǎng)絡(luò)接口層將網(wǎng)際層交下來(lái)的IP數(shù)據(jù)報(bào)組裝成幀,并以比特流的形式傳給網(wǎng)絡(luò)硬件(即物理層),數(shù)據(jù)就離開(kāi)源主機(jī)。
鏈路層
以太網(wǎng)協(xié)議規(guī)定,接入網(wǎng)絡(luò)的設(shè)備都必須安裝網(wǎng)絡(luò)適配器,即網(wǎng)卡,數(shù)據(jù)包必須是從一塊網(wǎng)卡傳送到另一塊網(wǎng)卡。而網(wǎng)卡地址就是數(shù)據(jù)包的發(fā)送地址和接收地址,有了MAC地址以后,以太網(wǎng)采用廣播形式,把數(shù)據(jù)包發(fā)給該子網(wǎng)內(nèi)所有主機(jī),子網(wǎng)內(nèi)每臺(tái)主機(jī)在接收到這個(gè)包以后,都會(huì)讀取首部里的目標(biāo)MAC地址,然后和自己的MAC地址進(jìn)行對(duì)比,如果相同就做下一步處理,如果不同,就丟棄這個(gè)包。 所以鏈路層的主要工作就是對(duì)電信號(hào)進(jìn)行分組并形成具有特定意義的數(shù)據(jù)幀,然后以廣播的形式通過(guò)物理介質(zhì)發(fā)送給接收方。
網(wǎng)絡(luò)層
IP協(xié)議
網(wǎng)絡(luò)層引入了IP協(xié)議,制定了一套新地址,使得我們能夠區(qū)分兩臺(tái)主機(jī)是否同屬一個(gè)網(wǎng)絡(luò),這套地址就是網(wǎng)絡(luò)地址,也就是所謂的IP地址。IP協(xié)議將這個(gè)32位的地址分為兩部分,前面部分代表網(wǎng)絡(luò)地址,后面部分表示該主機(jī)在局域網(wǎng)中的地址。如果兩個(gè)IP地址在同一個(gè)子網(wǎng)內(nèi),則網(wǎng)絡(luò)地址一定相同。為了判斷IP地址中的網(wǎng)絡(luò)地址,IP協(xié)議還引入了子網(wǎng)掩碼,IP地址和子網(wǎng)掩碼通過(guò)按位與運(yùn)算后就可以得到網(wǎng)絡(luò)地址。
ARP協(xié)議
即地址解析協(xié)議,是根據(jù)IP地址獲取MAC地址的一個(gè)網(wǎng)絡(luò)層協(xié)議。其工作原理如下:ARP首先會(huì)發(fā)起一個(gè)請(qǐng)求數(shù)據(jù)包,數(shù)據(jù)包的首部包含了目標(biāo)主機(jī)的IP地址,然后這個(gè)數(shù)據(jù)包會(huì)在鏈路層進(jìn)行再次包裝,生成以太網(wǎng)數(shù)據(jù)包,最終由以太網(wǎng)廣播給子網(wǎng)內(nèi)的所有主機(jī),每一臺(tái)主機(jī)都會(huì)接收到這個(gè)數(shù)據(jù)包,并取出標(biāo)頭里的IP地址,然后和自己的IP地址進(jìn)行比較,如果相同就返回自己的MAC地址,如果不同就丟棄該數(shù)據(jù)包。ARP接收返回消息,以此確定目標(biāo)機(jī)的MAC地址;與此同時(shí),ARP還會(huì)將返回的MAC地址與對(duì)應(yīng)的IP地址存入本機(jī)ARP緩存中并保留一定時(shí)間,下次請(qǐng)求時(shí)直接查詢ARP緩存以節(jié)約資源。
路由協(xié)議
首先通過(guò)IP協(xié)議來(lái)判斷兩臺(tái)主機(jī)是否在同一個(gè)子網(wǎng)中,如果在同一個(gè)子網(wǎng),就通過(guò)ARP協(xié)議查詢對(duì)應(yīng)的MAC地址,然后以廣播的形式向該子網(wǎng)內(nèi)的主機(jī)發(fā)送數(shù)據(jù)包;如果不在同一個(gè)子網(wǎng),以太網(wǎng)會(huì)將該數(shù)據(jù)包轉(zhuǎn)發(fā)給本子網(wǎng)的網(wǎng)關(guān)進(jìn)行路由。網(wǎng)關(guān)是互聯(lián)網(wǎng)上子網(wǎng)與子網(wǎng)之間的橋梁,所以網(wǎng)關(guān)會(huì)進(jìn)行多次轉(zhuǎn)發(fā),最終將該數(shù)據(jù)包轉(zhuǎn)發(fā)到目標(biāo)IP所在的子網(wǎng)中,然后再通過(guò)ARP獲取目標(biāo)機(jī)MAC,最終也是通過(guò)廣播形式將數(shù)據(jù)包發(fā)送給接收方。而完成這個(gè)路由協(xié)議的物理設(shè)備就是路由器,路由器扮演著交通樞紐的角色,它會(huì)根據(jù)信道情況,選擇并設(shè)定路由,以最佳路徑來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包。
所以,網(wǎng)絡(luò)層的主要工作是定義網(wǎng)絡(luò)地址、區(qū)分網(wǎng)段、子網(wǎng)內(nèi)MAC尋址、對(duì)于不同子網(wǎng)的數(shù)據(jù)包進(jìn)行路由。
傳輸層
鏈路層定義了主機(jī)的身份,即MAC地址,而網(wǎng)絡(luò)層定義了IP地址,明確了主機(jī)所在的網(wǎng)段,有了這兩個(gè)地址,數(shù)據(jù)包就從可以從一個(gè)主機(jī)發(fā)送到另一臺(tái)主機(jī)。但實(shí)際上數(shù)據(jù)包是從一個(gè)主機(jī)的某個(gè)應(yīng)用程序發(fā)出,然后由對(duì)方主機(jī)的應(yīng)用程序接收。而每臺(tái)電腦都有可能同時(shí)運(yùn)行著很多個(gè)應(yīng)用程序,所以當(dāng)數(shù)據(jù)包被發(fā)送到主機(jī)上以后,是無(wú)法確定哪個(gè)應(yīng)用程序要接收這個(gè)包。因此傳輸層引入了UDP協(xié)議來(lái)解決這個(gè)問(wèn)題,為了給每個(gè)應(yīng)用程序標(biāo)識(shí)身份。
UDP協(xié)議
UDP協(xié)議定義了端口,同一個(gè)主機(jī)上的每個(gè)應(yīng)用程序都需要指定唯一的端口號(hào),并且規(guī)定網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包必須加上端口信息,當(dāng)數(shù)據(jù)包到達(dá)主機(jī)以后,就可以根據(jù)端口號(hào)找到對(duì)應(yīng)的應(yīng)用程序了。UDP協(xié)議比較簡(jiǎn)單,實(shí)現(xiàn)容易,但它沒(méi)有確認(rèn)機(jī)制,數(shù)據(jù)包一旦發(fā)出,無(wú)法知道對(duì)方是否收到,因此可靠性較差,為了解決這個(gè)問(wèn)題,提高網(wǎng)絡(luò)可靠性,TCP協(xié)議就誕生了。
TCP協(xié)議
TCP即傳輸控制協(xié)議,是一種面向連接的、可靠的、基于字節(jié)流的通信協(xié)議。簡(jiǎn)單來(lái)說(shuō)TCP就是有確認(rèn)機(jī)制的UDP協(xié)議,每發(fā)出一個(gè)數(shù)據(jù)包都要求確認(rèn),如果有一個(gè)數(shù)據(jù)包丟失,就收不到確認(rèn),發(fā)送方就必須重發(fā)這個(gè)數(shù)據(jù)包。為了保證傳輸?shù)目煽啃?,TCP協(xié)議在UDP基礎(chǔ)之上建立了三次對(duì)話的確認(rèn)機(jī)制,即在正式收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接。TCP數(shù)據(jù)包和UDP一樣,都是由首部和數(shù)據(jù)兩部分組成,唯一不同的是,TCP數(shù)據(jù)包沒(méi)有長(zhǎng)度限制,理論上可以無(wú)限長(zhǎng),但是為了保證網(wǎng)絡(luò)的效率,通常TCP數(shù)據(jù)包的長(zhǎng)度不會(huì)超過(guò)IP數(shù)據(jù)包的長(zhǎng)度,以確保單個(gè)TCP數(shù)據(jù)包不必再分割。
傳輸層的主要工作是定義端口,標(biāo)識(shí)應(yīng)用程序身份,實(shí)現(xiàn)端口到端口的通信,TCP協(xié)議可以保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
應(yīng)用層
理論上講,有了以上三層協(xié)議的支持,數(shù)據(jù)已經(jīng)可以從一個(gè)主機(jī)上的應(yīng)用程序傳輸?shù)搅硪慌_(tái)主機(jī)的應(yīng)用程序了,但此時(shí)傳過(guò)來(lái)的數(shù)據(jù)是字節(jié)流,不能很好的被程序識(shí)別,操作性差,因此,應(yīng)用層定義了各種各樣的協(xié)議來(lái)規(guī)范數(shù)據(jù)格式,常見(jiàn)的有http,ftp,smtp等,在請(qǐng)求Header中,分別定義了請(qǐng)求數(shù)據(jù)格式Accept和響應(yīng)數(shù)據(jù)格式Content-Type,有了這個(gè)規(guī)范以后,當(dāng)對(duì)方接收到請(qǐng)求以后就知道該用什么格式來(lái)解析,然后對(duì)請(qǐng)求進(jìn)行處理,最后按照請(qǐng)求方要求的格式將數(shù)據(jù)返回,請(qǐng)求端接收到響應(yīng)后,就按照規(guī)定的格式進(jìn)行解讀。 [4]
所以應(yīng)用層的主要工作就是定義數(shù)據(jù)格式并按照對(duì)應(yīng)的格式解讀數(shù)據(jù)。
聲明:以上內(nèi)容來(lái)源于互聯(lián)網(wǎng),如有侵權(quán)請(qǐng)聯(lián)系刪除,出于分享信息及學(xué)習(xí)之目的,不代表本網(wǎng)站的觀點(diǎn)、本站不對(duì)其真實(shí)性負(fù)責(zé)。