Man page - arp(7)
Packages contas this manual
- pts(4)
- initrd(4)
- bootparam(7)
- proc_driver(5)
- udp(7)
- proc_pid_numa_maps(5)
- standards(7)
- epoll(7)
- proc(5)
- proc_net(5)
- urandom(4)
- proc_pid_fdinfo(5)
- mailaddr(7)
- iso-8859-5(7)
- iso_8859-6(7)
- iconv(1)
- full(4)
- user-keyring(7)
- intro(5)
- ftm(7)
- shm_overview(7)
- feature_test_macros(7)
- proc_crypto(5)
- tzfile(5)
- aio(7)
- boot(7)
- proc_profile(5)
- proc_cgroups(5)
- cpuset(7)
- proc_pid_coredump_filter(5)
- proc_pid_cwd(5)
- proc_uptime(5)
- st(4)
- precedence(7)
- ddp(7)
- proc_zoneinfo(5)
- iso_8859_3(7)
- proc_pid_root(5)
- latin4(7)
- proc_tid_children(5)
- proc_pid_oom_adj(5)
- proc_mounts(5)
- iso_8859-14(7)
- ld-linux(8)
- capabilities(7)
- ptmx(4)
- mouse(4)
- sysfs(5)
- rtld-audit(7)
- proc_partitions(5)
- iso_8859_6(7)
- queue(7)
- proc_pid_pagemap(5)
- proc_pid_stack(5)
- proc_pid_mem(5)
- uri(7)
- ttytype(5)
- namespaces(7)
- proc_sys_user(5)
- latin5(7)
- procfs(5)
- charmap(5)
- proc_sys_kernel(5)
- getent(1)
- ip(7)
- iso_8859-5(7)
- queue(3)
- proc_sys_vm(5)
- random(7)
- iso-8859-10(7)
- process-keyring(7)
- protocols(5)
- system_data_types(7)
- operator(7)
- proc_pid_timerslack_ns(5)
- wtmp(5)
- iso_8859_15(7)
- cp1252(7)
- iso_8859_11(7)
- pkeys(7)
- kmem(4)
- proc_pid_clear_refs(5)
- proc_meminfo(5)
- latin8(7)
- zdump(8)
- fuse(4)
- utf-8(7)
- proc_kpagecount(5)
- futex(7)
- complex(7)
- iso_8859-13(7)
- proc_kcore(5)
- iso_8859-8(7)
- iso_8859_14(7)
- iconvconfig(8)
- network_namespaces(7)
- thread-keyring(7)
- locale(5)
- proc_pid_oom_score_adj(5)
- proc_pid_statm(5)
- signal-safety(7)
- units(7)
- re_format(7)
- proc_pid_comm(5)
- latin1(7)
- glibc(7)
- environ(7)
- iso_8859-9(7)
- tty(4)
- proc_pid_projid_map(5)
- urn(7)
- iso_8859_8(7)
- proc_loadavg(5)
- ipc_namespaces(7)
- proc_pid_syscall(5)
- proc_pid_cgroup(5)
- proc_pid_mountstats(5)
- proc_kpageflags(5)
- utmpx(5)
- termio(7)
- iso-8859-13(7)
- suffixes(7)
- iso_8859-16(7)
- intro(1)
- hostname(7)
- proc_pid_status(5)
- proc_pid_fd(5)
- proc_malloc(5)
- proc_sys_debug(5)
- proc_pid_mounts(5)
- console_codes(4)
- iso_8859_2(7)
- iso-8859-16(7)
- proc_thread-self(5)
- socket(7)
- sock_diag(7)
- null(4)
- raw(7)
- memusagestat(1)
- proc_pid_mountinfo(5)
- proc_sys_sunrpc(5)
- iso-8859-1(7)
- motd(5)
- iso_8859-7(7)
- utmp(5)
- proc_pid_auxv(5)
- latin2(7)
- intro(2)
- proc_modules(5)
- user_namespaces(7)
- iso-8859-2(7)
- proc_version(5)
- ldd(1)
- iso_8859-3(7)
- proc_diskstats(5)
- session-keyring(7)
- ascii(7)
- hosts.equiv(5)
- group(5)
- intro(4)
- proc_cmdline(5)
- resolver(5)
- time(7)
- packet(7)
- proc_kpagecgroup(5)
- hosts(5)
- proc_pid_maps(5)
- proc_tty(5)
- inotify(7)
- msr(4)
- tzselect(8)
- proc_locks(5)
- hpsa(4)
- mount_namespaces(7)
- cgroups(7)
- fanotify(7)
- latin7(7)
- intro(6)
- proc_slabinfo(5)
- proc_timer_list(5)
- proc_kallsyms(5)
- mq_overview(7)
- proc_buddyinfo(5)
- iso_8859-15(7)
- proc_pid_wchan(5)
- iso-8859-8(7)
- proc_stat(5)
- attributes(7)
- proc_bus(5)
- sln(8)
- iso_8859_4(7)
- cgroup_namespaces(7)
- symlink(7)
- fifo(7)
- proc_keys(5)
- locale(1)
- proc_devices(5)
- inode(7)
- iso_8859_13(7)
- nptl(7)
- svipc(7)
- proc_sys_proc(5)
- xattr(7)
- proc_key-users(5)
- iso_8859_10(7)
- erofs(5)
- sd(4)
- proc_ide(5)
- proc_dma(5)
- proc_pid_environ(5)
- utf8(7)
- proc_pid_seccomp(5)
- tcp(7)
- localedef(1)
- path_resolution(7)
- proc_kmsg(5)
- regex(7)
- unix(7)
- netdevice(7)
- host.conf(5)
- nss(5)
- proc_pid_io(5)
- issue(5)
- iso_8859-10(7)
- pipe(7)
- nologin(5)
- vcs(4)
- proc_mtrr(5)
- networks(5)
- resolv.conf(5)
- pldd(1)
- koi8-r(7)
- arp(7)
- ld.so(8)
- wavelan(4)
- proc_pid_uid_map(5)
- zero(4)
- iso-8859-7(7)
- memusage(1)
- iso-8859-6(7)
- latin6(7)
- user-session-keyring(7)
- armscii-8(7)
- shells(5)
- cp1251(7)
- rtnetlink(7)
- koi8-u(7)
- address_families(7)
- cpuid(4)
- core(5)
- pty(7)
- tis-620(7)
- iso_8859-1(7)
- math_error(7)
- iso_8859-4(7)
- proc_pid_autogroup(5)
- man(7)
- cciss(4)
- icmp(7)
- sprof(1)
- glob(7)
- iso-8859-9(7)
- proc_sys_dev(5)
- url(7)
- zic(8)
- sched(7)
- services(5)
- proc_pid(5)
- securetty(5)
- acct(5)
- loop(4)
- vcsa(4)
- iso_8859-2(7)
- proc_vmstat(5)
- pthreads(7)
- proc_timer_stats(5)
- uts_namespaces(7)
- elf(5)
- libc(7)
- proc_sysrq-trigger(5)
- credentials(7)
- proc_sys_net(5)
- numa(7)
- bpf-helpers(7)
- netlink(7)
- proc_pid_personality(5)
- iso_8859-11(7)
- mem(4)
- proc_apm(5)
- proc_pid_task(5)
- proc_cpuinfo(5)
- iso_8859_7(7)
- random(4)
- proc_sys_fs(5)
- proc_pid_ns(5)
- proc_filesystems(5)
- slabinfo(5)
- proc_sys_abi(5)
- latin9(7)
- proc_pid_stat(5)
- proc_execdomains(5)
- proc_swaps(5)
- keyrings(7)
- proc_ioports(5)
- iso_8859_1(7)
- hd(4)
- proc_self(5)
- landlock(7)
- proc_interrupts(5)
- port(4)
- proc_pid_cpuset(5)
- vdso(7)
- iso_8859_5(7)
- intro(7)
- mtrace(1)
- latin3(7)
- proc_sys(5)
- repertoiremap(5)
- lirc(4)
- filesystems(5)
- proc_ksyms(5)
- unicode(7)
- iso_8859_9(7)
- man-pages(7)
- pid_namespaces(7)
- proc_pid_attr(5)
- proc_sysvipc(5)
- intro(3)
- spufs(7)
- proc_config.gz(5)
- sem_overview(7)
- ldconfig(8)
- loop-control(4)
- iso-8859-4(7)
- proc_pid_timers(5)
- smartpqi(4)
- posixoptions(7)
- nsswitch.conf(5)
- proc_pid_map_files(5)
- time_namespaces(7)
- string_copying(7)
- iso-8859-11(7)
- proc_pid_gid_map(5)
- latin10(7)
- proc_pid_setgroups(5)
- ld-linux.so(8)
- ram(4)
- iso-8859-3(7)
- intro(8)
- proc_fb(5)
- vsock(7)
- termcap(5)
- fs(5)
- proc_iomem(5)
- iso-8859-15(7)
- signal(7)
- persistent-keyring(7)
- rtc(4)
- dsp56k(4)
- proc_pid_net(5)
- rpc(5)
- lp(4)
- veth(4)
- hier(7)
- kernel_lockdown(7)
- iso-8859-14(7)
- dir_colors(5)
- proc_scsi(5)
- proc_pid_cmdline(5)
- proc_fs(5)
- x25(7)
- proc_tid(5)
- proc_pid_smaps(5)
- proc_pid_limits(5)
- proc_pid_oom_score(5)
- locale(7)
- proc_pci(5)
- charsets(7)
- iso_8859_16(7)
- ipv6(7)
- tmpfs(5)
- proc_pid_exe(5)
- sysvipc(7)
- udplite(7)
- gai.conf(5)
apt-get install manpages
Available languages:
en fr pt_BR es pl ja ru zh_TW zh_CNManual
| ARP(7) | Linux 程式設計師手冊 | ARP(7) |
NAME
arp - Linux的ARP核心模組
描述
這個核心協議模組實現RFC826中定義的 Address Resolution Protocol [譯註:即TCP/IP的第三層到第一層的地址轉換協議], 用於在直接相連的網路中換第二層硬體地址和 Ipv4 協議地址之間的轉換。 使用者除非想對其進行配置,否則一般不會直接操作這個模組。
實際上,它提供對核心中其它協議的服務。
使用者程序可以使用 packet(7) 的 sockets,收到 ARP 包(譯註:一譯分組)。 還有一種機制是使用 netlink(7) sockets,在使用者空間管理 ARP 快取的機制。 我們也可以透過 ioctl (2) 控制任意 PF_INET socket上的 ARP 表
ARP 模組維護一個硬體地址到協議地址對映的快取。這個快取有大小限制,所以 不常用的和舊的記錄(Entry)將被垃圾收集器清除(garbage-collected), 垃圾收集器永遠不能刪除標為永久的記錄。我們可以使用ioctls直接操縱緩衝, 並且其性狀可以用下面定義的 sysctl 調節。
如果在限定的時間(見下面的sysctl)內,一條現存對映沒有肯定反饋時, 則認為相鄰層的快取記錄失效。 為了再次向目標傳送資料,ARP將首先試著詢問本地arp程序 app_solicit 次,獲取更新了的 MAC(介質訪問控制)地址。 如果失敗,並且舊的MAC地址是已知的,則傳送 ucast_solicit 次的 unicast probe。如果仍然失敗,則將向網路廣播一個新的ARP請求,此時要 有待發送資料的佇列
如果 Linux 接到一個地址請求,而且該地址指向 Linux 轉發的地址, 並且接收介面打開了代理 arp 時,Linux 將自動新增一條非永久的 代理 arp 記錄;如果存在拒絕到目標的路由,則不新增代理 arp 記錄。
IOCTLS
有三個 ioctl 可以用於所有 PF_INET 的 sockets 中。它們以一個指向 struct arpreq 的指標作為它們的引數。
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];
};
SIOCSARP, SIOCDARP 和 SIOCGARP 可分貝設定、刪除和獲取 ARP 對映。設定和刪除 ARP 對映是特許操作, 只有擁有 CAP_NET_ADMIN 許可權的程序或有效UID為0的程序可以執行。
arp_pa 必須是 AF_INET socket,並且 arp_ha 必須有和 arp_dev. 指定的裝置相同的型別。 arp_dev 是個以null結束的裝置名字串。
| arp_flags | |
| 標誌(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) |
如果設定了 ATF_NETMASK 標誌,那麼 arp_netmask 必須有效。 Linux 2.2 不支援代理網路 ARP 記錄,因此,要設成0xffffffff或者0, 以刪除現存代理arp記錄。這裡不使用 現存代理arp記錄。 ATF_USETRAILERS 已經過時了,不應該繼續使用。
SYSCTLS
ARP 支援一個 sysctl 介面,可以用以配置全域性引數或逐個網路介面地進行配製。 該 sysctl 可以透過 /proc/sys/net/ipv4/neigh/*/* 檔案或者使用 sysctl(2) 介面來訪問。系統中每個介面都在 /proc/sys/net/ipv4/neigh/. 中有自己的目錄。`default'目錄中的設定用於所有新建的裝置。 sysctl 相關的時間是以秒為單位,除非特別宣告過.
- anycast_delay
- 對 IPv6 相鄰請求資訊的回覆的最大延遲時間; 目前還不支援 anycast。預設值為1秒。
- app_solicit
- 這是在使用多路廣播探測(multicast probe)前, 經過網路連線送到使用者間隙ARP埠監控程式的探測(probe) 最大數目(見 mcast_solicit )。 預設值為0。
- base_reachable_time
- 一旦發現相鄰記錄,至少在一段介於 base_reachable_time/2和3*base_reachable_time/2 之間的隨機時間內,該記錄是有效的。如果收到上層協議的肯定反饋, 那麼記錄的有效期將延長。 預設值是30秒。
- delay_first_probe_time
- 發現某個相鄰層記錄無效(stale)後,發出第一個探測要等待的時間。 預設值是5秒。
- gc_interval
- 收集相鄰層記錄的無用記錄的垃圾收集程式的執行週期,預設為30秒。
- gc_stale_time
- 決定檢查一次相鄰層記錄的有效性的週期。 當相鄰層記錄失效時,將在給它傳送資料前,再解析一次。 預設值是60秒。
- gc_thresh1
- 存在於ARP快取記憶體中的最少層數,如果少於這個數, 垃圾收集器將不會執行。預設值是128。
- gc_thresh2
- 儲存在 ARP 快取記憶體中的最多的記錄軟限制。 垃圾收集器在開始收集前,允許記錄數超過這個數字 5 秒。 預設值是 512。
- gc_thresh3
- 儲存在 ARP 快取記憶體中的最多記錄的硬限制, 一旦快取記憶體中的數目高於此, 垃圾收集器將馬上執行。預設值是1024。
- locktime
- ARP 記錄儲存在快取記憶體內的最短時間(jiffy數), 以防止存在多個可能的對映(potential mapping)時, ARP 快取記憶體系統的顛簸 (經常是由於網路的錯誤配置而引起)。 預設值是 1 秒。
- mcast_solicit
- 在把記錄標記為不可抵達的之前, 用多路廣播/廣播(multicast/broadcast)方式解析地址的最大次數。 預設值是3。
- proxy_delay
- 當接收到有一個請求已知的代理 ARP 地址的 ARP 請求時, 在回應前可以延遲的 jiffy(時間單位,見BUG)數目。 這樣,以防止網路風暴。預設值是0.8秒。
- proxy_qlen
- 能放入代理 ARP 地址佇列(proxy-ARP addresses)的資料包最大數目。預設值是64。
- retrans_time
- 重發一個請求前的等待 jiffy(時間單位,見BUG)的數目。預設值是1秒。
- ucast_solicit
- 詢問ARP埠監控程式前,試圖傳送單探測(unicast probe)的次數。 (見 app_solicit). 預設值是3秒。
- unres_qlen
- 每個沒有被其它網路層解析的地址,在佇列中可存放包的最大數目。預設值是3.
BUGS
時鐘設定的時間單位 jiffy,跟硬體體系有關。 在 Alpha 上,一個 jiffy 是 1/1024 秒,而在其它機器上,是 1/100 秒。
目前還沒有辦法從使用者空間傳送肯定反饋。 這意味著在使用者空間實現的面向連線的協議 (connection oriented protocols)將產生大量的 ARP 通訊。 因為ndisc將重新探測MAC地址。核心 NFS 的實現也存在同樣的問題。
這個手冊頁主要講 IPv4 規範並且共享 IPv4 和 IPv6 的功能.
版本
Linux 2.0中的 struct arpreq, 添加了 arp_dev ,同時 ioctl 數目也改變了。在 Linux 2.2 中將不再支援舊的ioctl。
在 Linux 2.2 中,取消了對網路代理 arp 記錄(網路掩碼不是0xffffffff)的支援。 這個功能被核心設定的一個自動代理 arp 取代,這個自動代理 arp 用於所有位於 其它接上的可到達的主機(如果該介面的轉發和代理 arp 打開了)。
另見
ip(7)
RFC826 瞭解 ARP 描述.
RFC2461
描述了IPv6使用的近鄰查詢以及基本演算法
[中文版維護人]
Alan Yao <Alan_Yao@163.net>
[中文版最新更新]
2000/10/23
《中國linux論壇man手冊頁翻譯計劃》:
http://cmpp.linuxforum.net
跋
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
| 3 Jun 1999 | Linux Man Page |