.\" 版權所有:1999 Matthew Wilcox。發佈任何修改拷貝時,必須包含此處原文, .\" 並將修改人和修改日期,加在這裏 .\" 中文版版權所有 Alian Yao, BitBIRD www.linuxforum.net 2000 .\" 修改1:June 1999 Andi Kleen .TH ARP 7 "3 Jun 1999" "Linux Man Page" "Linux 程序員手冊" .SH NAME arp \- Linux的ARP核心模塊 .SH 描述 這個核心協議模塊實現RFC826中定義的 Address Resolution Protocol [譯註:即TCP/IP的第三層到第一層的地址轉換協議], 用於在直接相連的網絡中換第二層硬件地址和 Ipv4 協議地址之間的轉換。 用戶除非想對其進行配置,否則一般不會直接操作這個模塊。 實際上,它提供對核心中其它協議的服務。 用戶進程可以使用 .BR packet (7) 的 sockets,收到 ARP 包(譯註:一譯分組)。 還有一種機制是使用 .BR netlink (7) sockets,在用戶空間管理 ARP 緩存的機制。 我們也可以通過 .B ioctl (2) 控制任意 .B PF_INET socket上的 ARP 表 ARP 模塊維護一個硬件地址到協議地址映射的緩存。這個緩存有大小限制,所以 不常用的和舊的記錄(Entry)將被垃圾收集器清除(garbage-collected), 垃圾收集器永遠不能刪除標爲永久的記錄。我們可以使用ioctls直接操縱緩衝, 並且其性狀可以用下面定義的 sysctl 調節。 如果在限定的時間(見下面的sysctl)內,一條現存映射沒有肯定反饋時, 則認爲相鄰層的緩存記錄失效。 爲了再次向目標發送數據,ARP將首先試着詢問本地arp進程 .B app_solicit 次,獲取更新了的 MAC(介質訪問控制)地址。 如果失敗,並且舊的MAC地址是已知的,則發送 .B ucast_solicit 次的 unicast probe。如果仍然失敗,則將向網絡廣播一個新的ARP請求,此時要 有待發送數據的隊列 如果 Linux 接到一個地址請求,而且該地址指向 Linux 轉發的地址, 並且接收接口打開了代理 arp 時,Linux 將自動添加一條非永久的 代理 arp 記錄;如果存在拒絕到目標的路由,則不添加代理 arp 記錄。 .SH IOCTLS 有三個 ioctl 可以用於所有 .B PF_INET 的 sockets 中。它們以一個指向 .B struct arpreq 的指針作爲它們的參數。 .nf .ta 4 20 33 struct arpreq { struct sockaddr arp_pa; /* 協議地址(protocol address)*/ struct sockaddr arp_ha; /* 硬件地址(hardware address) */ int arp_flags; /* 標誌(flags) */ struct sockaddr arp_netmask; /* 協議地址的網絡掩碼(netmask of protocol address)*/ char arp_dev[16]; }; .fi .BR SIOCSARP ", " SIOCDARP " 和 " SIOCGARP 可分貝設置、刪除和獲取 ARP 映射。設置和刪除 ARP 映射是特許操作, 只有擁有 .B CAP_NET_ADMIN 權限的進程或有效UID爲0的進程可以執行。 .I arp_pa 必須是 .B AF_INET socket,並且 .I arp_ha 必須有和 .IR arp_dev . 指定的設備相同的類型。 .I arp_dev 是個以null結束的設備名字符串。 .TS tab(:) allbox; c s l l. \fIarp_flags\fR 標誌(flag):含義(meaning) ATF_COM:查找完成(Lookup complete) ATF_PERM:永久記錄(Permanent entry) ATF_PUBL:張貼記錄(Publish entry) ATF_USETRAILERS:要求使用後綴(Trailers requested) ATF_NETMASK:使用網絡掩碼(Use a netmask) ATF_DONTPUB:不回覆(Don't answer) .TE .PP 如果設置了 .B ATF_NETMASK 標誌,那麼 .I arp_netmask 必須有效。 Linux 2.2 不支持代理網絡 ARP 記錄,因此,要設成0xffffffff或者0, 以刪除現存代理arp記錄。這裏不使用 現存代理arp記錄。 .B ATF_USETRAILERS 已經過時了,不應該繼續使用。 .SH SYSCTLS ARP 支持一個 sysctl 接口,可以用以配置全局參數或逐個網絡接口地進行配製。 該 sysctl 可以通過 .B /proc/sys/net/ipv4/neigh/*/* 文件或者使用 .BR sysctl (2) 接口來訪問。系統中每個接口都在 /proc/sys/net/ipv4/neigh/. 中有自己的目錄。`default'目錄中的設置用於所有新建的設備。 sysctl 相關的時間是以秒爲單位,除非特別聲明過. .TP .B anycast_delay 對 IPv6 相鄰請求信息的回覆的最大延遲時間; 目前還不支持 anycast。缺省值爲1秒。 .TP .B app_solicit 這是在使用多路廣播探測(multicast probe)前, 經過網絡連接送到用戶間隙ARP端口監控程序的探測(probe) 最大數目(見 .IR mcast_solicit )。 缺省值爲0。 .TP .B base_reachable_time 一旦發現相鄰記錄,至少在一段介於 .IR base_reachable_time "/2和3*" base_reachable_time /2 之間的隨機時間內,該記錄是有效的。如果收到上層協議的肯定反饋, 那麼記錄的有效期將延長。 缺省值是30秒。 .TP .B delay_first_probe_time 發現某個相鄰層記錄無效(stale)後,發出第一個探測要等待的時間。 缺省值是5秒。 .TP .B gc_interval 收集相鄰層記錄的無用記錄的垃圾收集程序的運行週期,缺省爲30秒。 .TP .B gc_stale_time 決定檢查一次相鄰層記錄的有效性的週期。 當相鄰層記錄失效時,將在給它發送數據前,再解析一次。 缺省值是60秒。 .TP .B gc_thresh1 存在於ARP高速緩存中的最少層數,如果少於這個數, 垃圾收集器將不會運行。缺省值是128。 .TP .B gc_thresh2 保存在 ARP 高速緩存中的最多的記錄軟限制。 垃圾收集器在開始收集前,允許記錄數超過這個數字 5 秒。 缺省值是 512。 .TP .B gc_thresh3 保存在 ARP 高速緩存中的最多記錄的硬限制, 一旦高速緩存中的數目高於此, 垃圾收集器將馬上運行。缺省值是1024。 .TP .B locktime ARP 記錄保存在高速緩存內的最短時間(jiffy數), 以防止存在多個可能的映射(potential mapping)時, ARP 高速緩存系統的顛簸 (經常是由於網絡的錯誤配置而引起)。 缺省值是 1 秒。 .TP .B mcast_solicit 在把記錄標記爲不可抵達的之前, 用多路廣播/廣播(multicast/broadcast)方式解析地址的最大次數。 缺省值是3。 .TP .B proxy_delay 當接收到有一個請求已知的代理 ARP 地址的 ARP 請求時, 在迴應前可以延遲的 jiffy(時間單位,見BUG)數目。 這樣,以防止網絡風暴。缺省值是0.8秒。 .TP .B proxy_qlen 能放入代理 ARP 地址隊列(proxy-ARP addresses)的數據包最大數目。缺省值是64。 .TP .B retrans_time 重發一個請求前的等待 jiffy(時間單位,見BUG)的數目。缺省值是1秒。 .TP .B ucast_solicit 詢問ARP端口監控程序前,試圖發送單探測(unicast probe)的次數。 (見 .IR app_solicit ). 缺省值是3秒。 .TP .B unres_qlen 每個沒有被其它網絡層解析的地址,在隊列中可存放包的最大數目。缺省值是3. .SH BUGS 時鐘設置的時間單位 jiffy,跟硬件體系有關。 在 Alpha 上,一個 jiffy 是 1/1024 秒,而在其它機器上,是 1/100 秒。 目前還沒有辦法從用戶空間發送肯定反饋。 這意味着在用戶空間實現的面向連接的協議 (connection oriented protocols)將產生大量的 ARP 通訊。 因爲ndisc將重新探測MAC地址。內核 NFS 的實現也存在同樣的問題。 這個手冊頁主要講 IPv4 規範並且共享 IPv4 和 IPv6 的功能. .SH 版本 Linux 2.0中的 .B struct arpreq, 添加了 .I arp_dev ,同時 ioctl 數目也改變了。在 Linux 2.2 中將不再支持舊的ioctl。 在 Linux 2.2 中,取消了對網絡代理 arp 記錄(網絡掩碼不是0xffffffff)的支持。 這個功能被內核設置的一個自動代理 arp 取代,這個自動代理 arp 用於所有位於 其它接上的可到達的主機(如果該接口的轉發和代理 arp 打開了)。 .SH 另見 .BR ip (7) .PP RFC826 瞭解 ARP 描述. .br RFC2461 描述了IPv6使用的近鄰查找以及基本算法 .SH "[中文版維護人]" .B Alan Yao .SH "[中文版最新更新]" .B 2000/10/23 .SH "《中國linux論壇man手冊頁翻譯計劃》:" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR