《TCP/IP详解》学习笔记(三):IP协议、ARP协议
把這三個(gè)協(xié)議放到一起學(xué)習(xí)是因?yàn)檫@三個(gè)協(xié)議處于同一層,ARP 協(xié)議用來找到目標(biāo)主機(jī)的 Ethernet 網(wǎng)卡 Mac 地址,IP 則承載要發(fā) 送的消息。數(shù)據(jù)鏈路層可以從 ARP 得到數(shù)據(jù)的傳送信息,而從 IP 得到要傳輸?shù)臄?shù)據(jù)信息。
?
IP 協(xié)議
IP 協(xié)議是 TCP/IP 協(xié)議的核心,所有的 TCP,UDP,IMCP,IGCP 的數(shù)據(jù)都以 IP 數(shù)據(jù)格式傳輸。要注意的是,IP 不是可靠的協(xié)議,這是 說,IP 協(xié)議沒有提供一種數(shù)據(jù)未傳達(dá)以后的處理機(jī)制--這被認(rèn)為是上層協(xié)議--TCP 或 UDP 要做的事情。所以這也就出現(xiàn)了 TCP 是一個(gè)可靠的協(xié)議,而 UDP 就沒有那么可靠的區(qū)別。這是后話,暫且不提。
?
1IP 協(xié)議頭
如圖所示:
?
挨個(gè)解釋它是教科書的活,我感興趣的只是那八位的 TTL 字段,還記得這個(gè)字段是做什么的么?這個(gè)字段規(guī)定該數(shù)據(jù)包在穿過 多少個(gè)路由之后才會被拋棄 (這里就體現(xiàn)出來 IP 協(xié)議包的不可靠性,它不保證數(shù)據(jù)被送達(dá)),某個(gè) ip 數(shù)據(jù)包每穿過一個(gè)路由器,該數(shù) 據(jù)包的 TTL 數(shù)值就會減少1,當(dāng)該數(shù)據(jù)包的 TTL 成 為零,它就會被自動(dòng)拋棄。這個(gè)字段的最大值也就是255,也就是說一個(gè)協(xié)議包也就 在路由器里面穿行255次就會被拋棄了,根據(jù)系統(tǒng)的不同,這個(gè)數(shù)字也不一 樣,一般是32或者是64,Tracerouter 這個(gè)工具就是用這個(gè) 原理工作的,tranceroute 的-m 選項(xiàng)要求最大值是255,也就是因?yàn)檫@個(gè) TTL 在 IP 協(xié)議里面只有8bit。
現(xiàn)在的 ip 版本號是4,所以也稱作 IPv4。現(xiàn)在還有 IPv6,而且運(yùn)用也越來越廣泛了。
?
2IP 路由選擇
當(dāng)一個(gè) IP 數(shù)據(jù)包準(zhǔn)備好了的時(shí)候,IP 數(shù)據(jù)包(或者說是路由器)是如何將數(shù)據(jù)包送到目的地的呢?它是怎么選擇一個(gè)合適的路 徑來"送貨"的呢?
最特殊的情況是目的主機(jī)和主機(jī)直連,那么主機(jī)根本不用尋找路由,直接把數(shù)據(jù)傳遞過去就可以了。至于是怎么直接傳遞的,這 就要靠 ARP 協(xié)議了,后面會講到。稍微一般一點(diǎn)的情況是,主機(jī)通過若干個(gè)路由器(router)和目的主機(jī)連接。那么路由器就要通過 ip 包的信息來為 ip 包尋找到一 個(gè)合適的目標(biāo)來進(jìn)行傳遞,比如合適的主機(jī),或者合適的路由。
路由器或者主機(jī)將會用如下的方式來處理某一個(gè) IP 數(shù)據(jù)包:
- ?如果IP數(shù)據(jù)包的TTL(生命周期)已到,則該IP數(shù)據(jù)包就被拋棄。
- 搜索路由表,優(yōu)先搜索匹配主機(jī),如果能找到和IP地址完全一致的目標(biāo)主機(jī),則將該包發(fā)向目標(biāo)主機(jī)
- 搜索路由表,如果匹配主機(jī)失敗,則匹配同子網(wǎng)的路由器,這需要“子網(wǎng)掩碼”的協(xié)助。如果找到路由器,則將該包發(fā)向路由器。
- 搜索路由表,如果匹配同子網(wǎng)路由器失敗,則匹配同網(wǎng)絡(luò)路由器,如果找到路由器,則將該包發(fā)向路由器。 搜索路由表,如果以上都失敗了,就搜索默認(rèn)路由,如果默認(rèn)路由存在,則發(fā)包
- 如果都失敗了,就丟掉這個(gè)包。
這再一次證明了,ip 包是不可靠的。因?yàn)樗槐WC送達(dá)。
?
3子網(wǎng)尋址
IP 地址的定義是網(wǎng)絡(luò)號+主機(jī)號。但是現(xiàn)在所有的主機(jī)都要求子網(wǎng)尋址,也就是說,把主機(jī)號在細(xì)分成子網(wǎng)號+主機(jī)號。最終一個(gè)IP 地址就成為 網(wǎng)絡(luò)號碼+子網(wǎng)號+主機(jī)號。例如一個(gè) B 類地址:210.30.109.134。一般情況下,這個(gè) IP 地址的紅色部分就是網(wǎng)絡(luò)號, 而藍(lán)色部分就是子網(wǎng)號,綠色部分就是主機(jī)號。至于有多少位代表子網(wǎng)號這個(gè)問題上,這沒有一個(gè)硬性的規(guī)定,取而代之的則是子網(wǎng) 掩碼, 校園網(wǎng)相信大多數(shù)人都用過,在校園網(wǎng)的設(shè)定里面有一個(gè)255.255.255.0的東西,這就是子網(wǎng)掩碼。子網(wǎng)掩碼是由32bit 的二進(jìn) 制數(shù)字序列,形式 為是一連串的1和一連串的0,例如:255.255.255.0(二進(jìn)制就是11111111.11111111.11111111.00000000) 對于剛才 的那個(gè) B 類地址,因?yàn)?10.30是網(wǎng)絡(luò)號,那么后面的109.134就是子網(wǎng)號和主機(jī)號的組合,又因?yàn)樽泳W(wǎng)掩碼只有后八 bit 為0,所以主 機(jī)號 就是 IP 地址的后八個(gè) bit,就是134,而剩下的就是子網(wǎng)號碼--109。
ARP 協(xié)議
還記得數(shù)據(jù)鏈路層的以太網(wǎng)的協(xié)議中,每一個(gè)數(shù)據(jù)包都有一個(gè) MAC 地址頭么?我們知道每一塊以太網(wǎng)卡都有一個(gè) MAC 地址,這個(gè) 地址是唯一的,那么 IP 包是如何知道這個(gè) MAC 地址的?這就是 ARP 協(xié)議的工作。
ARP(地址解析)協(xié)議是一種解析協(xié)議,本來主機(jī)是完全不知道這個(gè) IP 對應(yīng)的是哪個(gè)主機(jī)的哪個(gè)接口,當(dāng)主機(jī)要發(fā)送一個(gè) IP 包的 時(shí)候,會首先查一下自 己的 ARP 高速緩存(就是一個(gè) IP-MAC 地址對應(yīng)表緩存),如果查詢的 IP-MAC 值對不存在,那么主機(jī)就向網(wǎng)絡(luò) 發(fā)送一個(gè) ARP 協(xié)議廣播包,這個(gè)廣播包 里面就有待查詢的 IP 地址,而直接收到這份廣播的包的所有主機(jī)都會查詢自己的 IP 地址,如 果收到廣播包的某一個(gè)主機(jī)發(fā)現(xiàn)自己符合條件,那么就準(zhǔn)備好一個(gè)包 含自己的 MAC 地址的 ARP 包傳送給發(fā)送 ARP 廣播的主機(jī),而廣播 主機(jī)拿到 ARP 包后會更新自己的 ARP 緩存(就是存放 IP-MAC 對應(yīng)表的地方)。發(fā)送 廣播的主機(jī)就會用新的 ARP 緩存數(shù)據(jù)準(zhǔn)備好數(shù)據(jù)鏈 路層的的數(shù)據(jù)包發(fā)送工作。
一個(gè)典型的 arp 緩存信息如下,在任意一個(gè)系統(tǒng)里面用“arp -a”命令:
?
都會得到這樣的結(jié)果。這樣的高速緩存是有時(shí)限的,一般是20分鐘(伯克利系統(tǒng)的衍生系統(tǒng))。
總結(jié)
以上是生活随笔為你收集整理的《TCP/IP详解》学习笔记(三):IP协议、ARP协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kendns.exe是什么进程 ken
- 下一篇: 1.Intro to Deep Lear