把這三個協議放到一塊兒學習是由於這三個協議處於同一層,ARP協議用來找到目標主機的Ethernet網卡Mac地址,IP則承載要發送的消息。數據鏈路層能夠從ARP獲得數據的傳送信息,而從IP獲得要傳輸的數據信息。緩存
IP協議是TCP/IP協議的核心,全部的TCP,UDP,IMCP,IGCP的數據都以IP數據格式傳輸。要注意的是,IP不是可靠的協議,這是說,IP協議沒有提供一種數據未傳達之後的處理機制--這被認爲是上層協議--TCP或UDP要作的事情。因此這也就出現了TCP是一個可靠的協議,而UDP就沒有那麼可靠的區別。這是後話,暫且不提網絡
如圖所示工具
挨個解釋它是教科書的活計,我感興趣的只是那八位的TTL字段,還記得這個字段是作什麼的麼?這個字段規定該數據包在穿過多少個路由以後纔會被拋棄(這裏就體現出來IP協議包的不可靠性,它不保證數據被送達),某個ip數據包每穿過一個路由器,該數據包的TTL數值就會減小1,當該數據包的TTL成爲零,它就會被自動拋棄。這個字段的最大值也就是255,也就是說一個協議包也就在路由器裏面穿行255次就會被拋棄了,根據系統的不一樣,這個數字也不同,通常是32或者是64,Tracerouter這個工具就是用這個原理工做的,tranceroute的-m選項要求最大值是255,也就是由於這個TTL在IP協議裏面只有8bit。學習
如今的ip版本號是4,因此也稱做IPv4。如今還有IPv6,並且運用也愈來愈普遍了。spa
當一個IP數據包準備好了的時候,IP數據包(或者說是路由器)是如何將數據包送到目的地的呢?它是怎麼選擇一個合適的路徑來"送貨"的呢?code
最特殊的狀況是目的主機和主機直連,那麼主機根本不用尋找路由,直接把數據傳遞過去就能夠了。至因而怎麼直接傳遞的,這就要靠ARP協議了,後面會講到。router
稍微通常一點的狀況是,主機經過若干個路由器(router)和目的主機鏈接。那麼路由器就要經過ip包的信息來爲ip包尋找到一個合適的目標來進行傳遞,好比合適的主機,或者合適的路由。路由器或者主機將會用以下的方式來處理某一個IP數據包接口
這再一次證實了,ip包是不可靠的。由於它不保證送達。生命週期
IP地址的定義是網絡號+主機號。可是如今全部的主機都要求子網編址,也就是說,把主機號在細分紅子網號+主機號。最終一個IP地址就成爲 網絡號碼+子網號+主機號。例如一個B類地址:210.30.109.134。通常狀況下,這個IP地址的紅色部分就是網絡號,而藍色部分就是子網號,綠色部分就是主機號。至於有多少位表明子網號這個問題上,這沒有一個硬性的規定,取而代之的則是子網掩碼,校園網相信大多數人都用過,在校園網的設定裏面有一個255.255.255.0的東西,這就是子網掩碼。子網掩碼是由32bit的二進制數字序列,形式爲是一連串的1和一連串的0,例如:255.255.255.0(二進制就是11111111.11111111.11111111.00000000)對於剛纔的那個B類地址,由於210.30是網絡號,那麼後面的109.134就是子網號和主機號的組合,又由於子網掩碼只有後八bit爲0,因此主機號就是IP地址的後八個bit,就是134,而剩下的就是子網號碼--109。ip
還記得數據鏈路層的以太網的協議中,每個數據包都有一個MAC地址頭麼?咱們知道每一塊以太網卡都有一個MAC地址,這個地址是惟一的,那麼IP包是如何知道這個MAC地址的?這就是ARP協議的工做。
ARP(地址解析)協議是一種解析協議,原本主機是徹底不知道這個IP對應的是哪一個主機的哪一個接口,當主機要發送一個IP包的時候,會首先查一下本身的ARP高速緩存(就是一個IP-MAC地址對應表緩存),若是查詢的IP-MAC值對不存在,那麼主機就向網絡發送一個ARP協議廣播包,這個廣播包裏面就有待查詢的IP地址,而直接收到這份廣播的包的全部主機都會查詢本身的IP地址,若是收到廣播包的某一個主機發現本身符合條件,那麼就準備好一個包含本身的MAC地址的ARP包傳送給發送ARP廣播的主機,而廣播主機拿到ARP包後會更新本身的ARP緩存(就是存放IP-MAC對應表的地方)。發送廣播的主機就會用新的ARP緩存數據準備好數據鏈路層的的數據包發送工做。
一個典型的arp緩存信息以下,在任意一個系統裏面用「arp -a」命令:
Interface: 192.168.11.3 --- 0x2 Internet Address Physical Address Type 192.168.11.1 00-0d-0b-43-a0-2f dynamic 192.168.11.2 00-01-4a-03-5b-ea dynamic
都會獲得這樣的結果。
這樣的高速緩存是有時限的,通常是20分鐘(伯克利系統的衍生系統)。