醉里方休 回復于:2003-06-25 15:34:43 |
上個世紀的東東??!第一章呢? |
solstice 回復于:2003-06-25 15:36:21 |
第三章 ARP和RARP
目標 通過本章學習,你將會掌握: l 定義地址解析 l 能描述獲得目標主機的以太網地址的過程 l 能夠描述系統啟動時的網絡配置過程 l 能夠描述用來配置網絡接口的配置文件和腳本 介紹 本章的目的是來描述局域網中的主機如何通過網絡地址來發送信息。解釋獲得目的地址的機制,和系統如何自動配置網絡接口。 Address Resolution ——以太幀的封裝 我們先回憶一下在數據被發送之前如何被封裝到一個以太幀的過程。以太幀由地址信息段,數據段,數據類型段及錯誤校驗段組成。 發送數據的主機必須完成幀的各個段的填寫。發送主機了解它所要發送的數據,所使用的網絡和傳輸協議,并能自動的計算一個CRC。 然而,發送主機還沒有目標主機的地址…… IP頭,是以太幀中的數據段的一部分,它必須包括源主機地址和目標主機地址的信息。發送主機最初通過本地數據庫文件 /etc/inet/hosts來獲取本機地址。 發送主機通過參考目標主機的 /etc/inet/hosts 文件或通過一個網絡表(hosts,如果命名服務允許的話)來獲得目標主機的地址。 發送主機完成了以太幀頭的源和目標地址段。源地址很容易獲取,因為它永久性的存在于本機的系統內核列表中(system kernel table)。 以太幀就要準備全了,所缺的就是目標主機的MAC地址了。 發送主機使用地址解析協議(Address Resolution Protocol(ARP))來獲得目標主機的MAC地址。 地址解析協議(ARP) ARP是一個在網絡層和網絡接口層建立地址連接的過程。主機用它來準備一個網絡傳輸信息單元。 ——ARP 列表(ARP Table) ARP列表存于內存中,它存放那些被頻繁請求的地址。準備傳輸的幀每次調用目標主機的地址時,都要查閱ARP列表。 ——ARP請求(ARP Request) 如果一個MAC地址不存在于ARP列表,發送主機將它解析成一個IP地址。發送主機在本地網上發送一個廣播類型的ARP請求來獲取這個主機地址,與這個IP地址相符的主機響應它的MAC地址。 例如: #snoop –v arp Using device /dev/le (promiscuous mode) Ether: ------------- Ether Header ------------- Ether: Ether: Packet 1 arrived at 16:15:29.64 Ether: Packet size=42 bytes Ether: Destination=ff:ff:ff:ff:ff:ff, (broadcast) Ehter: Source =8:0:20:75:6e:6f, Sun Ether: Ethertype=0806(ARP) Ether: ARP: --------- ARP /RARP Frame -------- ARP: ARP: Hardware type = 1 ARP: Protocol type =0800 (IP) ARP: Length of hardware address = 6 bytes ARP: Length of protocol address = 4 bytes ARP: Opcode 1 (ARP Request) ARP: Sender’s hardware address=8:0:20:75:6e:6f ARP: Sender’s protocol address =128.50.1.2, bear ARP: Target hardware address=? ARP: Target protocol address= 128.50.1.5, skunk 在這個例子中,請求主機向子網上所有使用廣播地址為ff:ff:ff:ff:ff:ff的主機廣播ARP請求。 包類型是一個ARP請求,它包括屬于目標主機skunk(Tartget protocol address)的被請求的MAC地址(Target hardware address)。 ——ARP 應答(ARP Reply) 在子網上的每個主機都接收到ARP的請求包,只有匹配目標IP地址的唯一一臺主機才給源MAC地址一個應答。 #snoop –v arp Using device /dev/le (promiscuous mode) Ether: ------------- Ether Header ------------- Ether: Ether: Packet 1 arrived at 16:15:29.64 Ether: Packet size=60 bytes Ether: Destination=8:0:20:75:6e:6f, Sun Ehter: Source =8:0:20:75:8b:59, Sun Ether: Ethertype=0806(ARP) Ether: ARP: --------- ARP /RARP Frame -------- ARP: ARP: Hardware type = 1 ARP: Protocol type =0800 (IP) ARP: Length of hardware address = 6 bytes ARP: Length of protocol address = 4 bytes ARP: Opcode 2 (ARP Reply) ARP: Sender’s hardware address=8:0:20:75:8b:59 ARP: Sender’s protocol address =128.50.1.5, skunk ARP: Target hardware address=8:0:20:75:6e:6f ARP: Target protocol address= 128.50.1.2, bear ARP: 在這個例子中,應答主機發送這個ARP應答包給目標主機bear在同一子網。 包類型為ARP Reply,它包括發送主機的硬件地址,8:0:20:75:8b:59 而請求主機則使用這些信息來更新它的ARP列表。 ——ARP應答緩存 請求主機接受一個ARP應答,并把它存放在一個由系統內核進行管理的臨時ARP列表中,一個應答ARP請求的主機也同進更新它的請求主機的IP地址和MAC地址。 完整的入口映射IP地址到硬件(MAC)地址。不完整的入口則只包括IP地址。完整的入口有一個TTL值,是一個時間段,如果在這個有效的時間內,ARP列表的入口不能被使用,則,這個入口將被自動舍棄。 主機使用ARP列表中的這個信息來向目標主機發送包,可以避免再次向網絡發送一個ARP廣播包。 ——ARP表管理 arp 命令顯示和控制ARP表中的IP地址到MAC地址的映射的入口情況。 例如: *要查看ARP表中的所有入口,可以: # arp –a Net to Media Table Device IP Address Mask Flags Phys Addr Le0 skunk 255.255.255.255 08:00:20:75:8b:59 Le0 bear 255.255.255.255 SP 08:00:20:75:6e:6f Le0 zebra 255.255.255.255 U Le0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00 各字段的意義是: l Device——網絡設備(接口) l IP Address——請求的IP地址 l Mask——應用的子網掩碼,這將在后繼章節討論 l Flags——ARP入口的狀態,以下是幾個常用的狀態列表: * S——一個被永久保存的入口 *P——一個已發布的入口 *M——這是一個多址傳輸的入口,多址傳輸將在下一節介紹 *U——不可被解析或不完整的入口 * 要查看一個特定的ARP表入口,可以: # arp hostname hostname 可以是一個主機名,也可以是一個主機的IP地址。 *要增加一個永久性的ARP表入口,可以: # arp –a hostname ethernet_address 它創建了一個永久性的入口而不管ARP表的默認的TTL值,手工填加一個ARP列表可以減少ARP 的廣播包,并可以在一個負載很重的網絡(如子網的路由器在極為繁忙的骨干網上進行IP包轉發)有效的降低網絡流量。 *要增加一個臨時的ARP入口,可以: # arp –s hostname ethernet_address temp 3到4分鐘后,這個入口會死掉。 *要增加一個已發布的ARP入口,可以: # arp –s hostname ethernet_address pub 當一個主機應答另一個主機的ARP請求時,使用一個已發布的ARP入口。這是一個很有用的選項在一個不能對ARP請求進行應答的交互式環境。這個入口將永久保存下去除非使用temp關鍵字在命令中。 *要刪除一個ARP入口,可以 # arp –a hostname hostname可以是一個主機名也可以是一個主機的IP地址。 *從一個文件增加一個ARP入口,可以: # arp –f filename 文件中的入口應該這樣被顯示在表中: hostname ethernet_address [temp] [pub] 網絡接口配置 正確的配置主機的網絡接口對網絡連接是非常重要的。主機使用ARP更新網絡接口,去監聽接收和發送信息。 ——接口配置 Solaris系統環境使用本地或網絡數據庫自動配置主機的網絡接口。這個進程是系統啟動過程的一部分,并通過系統內核進行管理,也就是:init進程,和它的配置文件/etc/inittab,關聯到系統運行級別的腳本。 /kernel/unix | 1.系統從UNIX內核啟動,它所運行的其中一個進程是/sbin/init /sbin/init | 2./sbin/init 進程讀取配置文件 /etc/inittab。它運行其它腳本/sbin/init /sbin/rcs | 3./sbin/rcs腳本設置系統為單一用戶模式,包括/etc/init.d/rootusr /etc/init.d/rootusr 4./etc/init.d/rootusr 腳本配置以太及loopback接口,另外,把/usr文件系統作為只讀系統掛接。 ——/etc/init.d/rootusr 文件/etc/init.d/rootusr腳本在系統啟動的單一用戶階段執行, 調用文件/etc/hostname.interface和/etc/hostname。文件/etc/hostname.interface標識網絡接口的主機名,文件/etc/inet/host標識主機的IP地址和主機名。命令ifconfig參考這些文件來配置網絡接口和各自的IP地址。 即使在單用戶的模式下,網絡接口仍然監聽,接收和發送幀。 主機bear的文件/etc/hostname.le0的內容: #cat /etc/hostname.le0 bear 主機flipper的/etc/inet/hosts文件內容: # cat /etc/hosts 127.0.0.1 localhost loghost 128.50.1.2 bear 反向地址解析 ——反向地址解析協議 ——無盤系統 無盤系統就是沒有本地硬盤。它們使用網絡接口和網絡服務(NFS)來存取文件/etc/inet/hosts。 一個無盤系統初始化必須使用反向地址解析協議(RARP)來獲得它的IP地址。RARP是一個在網絡接口層和網絡層建立地址鏈接的過程。ARP的調用過程是已知的目標主機IP地址和未知的MAC地址。RARP則反向這個過程,即,由一個已知的MAC地址開始到一個未知的IP地址。 ——啟動系統(JumpStart System) JumpStart System是一個簡單的無盤客戶端,他們依賴于另一個主機提供服務來安裝。JumpStart客戶使用RARP從服務器上開始安裝進程。 ——RARP 請求 一個RARP請求是由一個啟動的無盤客戶端產生的一個廣播包。 例如: # snoop –v rarp Using device /dev/le (promiscuous mode) ETHER: ------- Ether Header ------- ETHER: Packet 1 arrived at 16:29:55.70 ETHER: Packet size = 64 bytes ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast) ETHER: Source =8:0:20:75:8b:59, Sun ETHER: Ethertype = 8035 (RARP) ETHER: ARP: ---------- ARP/RARP Frame -------- ARP: ARP: Hardware type = 1 ARP: Protocol type = 0800 (IP) ARP: Length of hardware address = 6 bytes ARP: Length of protocol address = 4 bytes ARP: Opcode 3 (REVARP Request) ARP: Sender’s hardware address = 8:0:20:75:8b:59 ARP: Sender’s protocol address = 255.255.255.255, BROADCAST ARP: Target hardware address = 8:0:20:75:8b:59 ARP: Target protocol address = ? ARP: 在這個例子里,無盤客戶端由發送者的MAC地址8:0:20:75:8b:59來標識,并由RARP的廣播請求包中的請求它的IP地址信息開始它的啟動過程。 服務器bear和客戶端在同一子網,它被配置來監聽和響應客戶端的RARP請求。 ——RARP應答服務器 一個RARP應答包由同一子網上的被配置為應答RARP請求的主機產生。服務進程 in.rarpd響應RARP請求。它必須由root用戶運行,并且是支持無盤系統的服務器的啟動的一部分。 精靈進程根據MAC到IP地址的映射產生了一個RARP應答。它使用本地數據庫(/etc/inet/host和/etc/ethers)或者網絡列表(ethers和hosts)來創建一個應答。啟動的機器必須在數據庫中列出:in.rarpd,來定位它的IP地址,否則,in.rarpd將不會響應。 ——RARP應答 例子: # snoop –v rarp ETHER: ------------ Ether Header ---------- ETHER: ETHER: Packet 2 arrived at 16:29:58.78 ETHER: Packet size = 42 bytes ETHER: Destination = 8:0:20:75:8b:59, Sun ETHER: Source =8:0:20:75:6e:6f, Sun ETHER: Ethertype = 8035 (RARP) ETHER: ARP: ARP: ------------ ARP/RARP Frame ---------- ARP: Hardware type = 1 ARP: Protocol type = 0800 (IP) ARP: Length of hardware address = 6 bytes ARP: Length of protocol address = 4 bytes ARP: Opcode 4 (REVARP Reply) ARP: Sender’s hardware address = 8:0:20:75:6e:6f ARP: Sender’s protocol address = 128.50.1.2, bear ARP: Target hardware address = 8:0:20:75:8b:59 ARP: Target protocol address = 128.50.1.5, skunk ARP: 繼續上一個過程,RARP應答服務器bear返回一個RARP應答包給無盤客戶端的物理地址(8:0:20:75:8b:59)并返回客戶的IP地址,128.50.1.5 客戶端繼續它的無盤啟動過程。 ——維護in.rarpd 服務器 如果一個無盤客戶服務器第一次進行設置時,在服務器上啟用以下的客戶腳本來執行: # /etc/init.d/nfs.server start 如果客戶不啟動,進行以下檢查: *執行 snoop –v rarp 在同一子網的第三方機器上,如果不能看到無盤客戶站的RARP請求,則可能是網絡的硬件有問題。 *如果可以看到無盤客戶端的RARP請求,但不能看到服務器端的RARP應答在客戶的啟動服務器上,檢查以下項目: *檢查 /etc/inet/hosts文件(或者NIS/NIS+等)的客戶主機名和IP地址。 *檢查 /etc/ethers 文件中的客戶主機名和MAC地址。 *檢查 in.rarpd進程是否啟用。 總結 *能描述在一個局域網上主機如何使用和獲取MAC地址來發送信息 *描述自動網絡配置進程 *描述配置網絡過程中,文件和腳本的使用 *用ifconfig 命令來配置網絡接口 |
solstice 回復于:2003-06-25 15:37:07 |
老大,第0章和第一章在上一個貼子里啊! |
南非蜘蛛 回復于:2003-06-25 15:57:22 |
99年就這么強了,我還在念大學拿,郁悶 |
solstice 回復于:2003-06-25 16:13:13 |
我倒,吱豬這么年輕,
唉,偶已經是老東東了, 翻譯的東東也是老東西了! |