Man page - raw(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pt_BR es ja ru ro zh_TW zh_CNManual
RAW
NAME總 覽
描 述
地 址 格 式
SOCKET選 項
注 意
錯 誤 處 理
錯 誤
版 本
BUGS
作 者
另 見
[中 文 版 維 護 人 ]
[中 文 版 最 新 更 新 ]
《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :
跋
NAME
raw, SOCK_RAW - Linux IPv4 raw socket.
總 覽
#include
<sys/socket.h>
#include <netinet/in.h>
raw_socket = socket(PF_INET, SOCK_RAW, int protocol );
描 述
Raw sockets 使 得 使 用 者 端 可 以 實 現 新 的 IPv4 協 議 。 raw socket 裝 置 接 收 或 傳 送 不 含 連 結 層 報 頭 的 原 始 資 料 包 。 只 有 啟 用 介 面 選 項 IP_HDRINCL 時 IPv4 層 才 會 在 傳 輸 包 中 新 增 IP 報 頭 。 而 且 當 啟 用 時 , 包 中 必 須 含 有 IP 報 頭 。 包 中 含 有 IP 報 頭 才 能 被 接 收 。
只 有 user id 為 0 或 具 有 CAP_NET_RAW 能 力 才 能 開 啟 raw sockets.
所 有 匹 配 為 此 raw socket 宣 告 的 協 議 號 的 包 或 錯 誤 都 將 被 傳 送 到 該 socket.要 察 看 許 可 的 協 議 列 表 , 請 參 考 RFC1700 給 出 的 代 號 和 getprotobyname (3).
IPPROTO_RAW 意 味 著 IP_HDRINCL 處 於 啟 用 狀 態 , 也 意 味 著 接 收 所 有 IP 協 議 . 但 是 不 允 許 傳 送 。
如 果 指 定 了 IP_HDRINCL 且 IP 報 頭 含 有 的 目 的 地 址 不 是 0, 那 麼 該 socket 的 目 的 地 址 用 於 路 由 該 包 。 如 果 指 定 了 MSG_DONTROUTE 則 目 的 地 址 應 指 向 某 個 本 地 介 面 。 否 則 會 進 行 路 有 表 查 詢 , 但 是 閘 道 器 路 由 會 被 忽 略 。 如 果 未 設 定 IP_HDRINCL 則 可 透 過 setsockopt (2) 在 raw socket 中 設 定 IP header 選 項 。 參 考 ip (7) 瞭 解 更 多 信 息 。
在 Linux 2.2 下 可 以 用 IP socket 選 項 設 定 所 有 的 IP 報 頭 域 和 選 項 . 這 意 味 著 通 常 只 有 新 的 協 議 或 沒 有 使 用 者 介 面 的 協 議 需 要 raw socket (就 象 ICMP). 當 收 到 一 個 包 時 , 它 首 先 被 傳 給 繫 結 到 包 協 議 的 任 何 raw socket 然 後 才 傳 給 其 他 協 議 控 制 代 碼 (handler)。 (比 如 . 核 心 協 議 模 組 ).
地 址 格 式
raw socket 使 用 在 ip (7) 中 定 義 的 標 準 sockaddr_in 地 址 結 構 。 sin_port 域 用 於 指 定 IP 協 議 號 , 但 是 在 Linux 2.2 下 傳 送 時 應 將 其 忽 略 , 而 且 應 該 一 直 設 為 0 (參 見 BUGS).
對 於 接 收 的 包 , sin_port 被 設 定 為 該 包 的 協 議 號 。 參 考 其 中 包 括 介 紹 有 效 的 IP 協 議 的 檔 案 .
SOCKET選 項
raw socket
選 項 可 使 用 setsockopt (2)
進 行 設 定 , 用
getsockopt (2)進 行 讀 取 (
透 過 傳 遞 SOL_RAW 族
標 誌 ) .
ICMP_FILTER
啟 用 繫 結 到 IPPROTO_ICMP 協 議 的 一 個 用 於 raw socket 特 殊 的 過 濾 器 。 該 值 對 每 種 ICMP 訊 息 都 有 一 個 位 ( 掩 碼 ) , 可 以 把 那 種 ICMP 訊 息 過 濾 掉 . 預 設 時 是 不 過 濾 ICMP 訊 息 .
另 外 , 還 支 援 所 有 對 資 料 報 socket 有 效 的 ip(7) SOL_IP socket 選 項 .
注 意
raw socket 包 長 超 過 介 面 MTU 時 會 把 包 分 成 碎 片 。 (另 見 BUGS). 另 一 個 更 友 好 和 快 速 的 選 擇 是 使 用 路 徑 MTU 查 詢 。 在 ip (7) IP_PMTU_DISCOVER 一 段 有 詳 細 描 述 。
使 用 bind (2) 可 將 raw socket 繫 結 到 指 定 的 本 地 地 址 。 如 果 沒 有 繫 結 , 則 接 收 所 有 符 合 指 定 的 IP 協 議 的 包 。 另 外 用 SO_BINDTODEVICE 可 以 將 RAW socket 繫 結 到 指 定 的 網 路 裝 置 。 詳 見 : socket (7).
IPPROTO_RAW 只 能 傳 送 。 如 果 你 確 實 想 接 收 所 有 的 IP 包 用 packet (7) socket 和 ETH_P_IP 協 議 . 請 注 意 packet socket不 象 raw socket 那 樣 對 IP 碎 片 進 行 重 組 。
如 果 想 要 為 一 個 datagram socket 接 收 的 所 有 ICMP 包 , 那 麼 最 好 在 那 個 socket 上 使 用 IP_RECVERR。 詳 見 : ip (7).
raw socket 能 竊 聽 所 有 的 IP 協 議 , 即 使 象 ICMP 或 TCP 這 樣 在 核 心 中 有 協 議 模 組 的 也 不 例 外 。 這 時 候 包 會 同 時 傳 送 到 核 心 模 組 和 raw socket. 一 個 可 移 植 的 程 式 不 能 依 賴 這 個 特 性 , 許 多 其 他 BSD socket 實 現 在 這 方 面 有 侷 限 .
Linux 從 不 改 變 使 用 者 傳 輸 的 包 (除 了 前 面 提 到 的 IP_HDRINCL , 填 入 一 些 0欄 位 ).這 與 其 他 raw socket 實 現 方 式 是 不 同 的 .
RAW socket 通 常 很 難 移 植 . socket 傳 輸 時 使 用 sin_port 中 設 定 的 協 議 , 但 Linux2.2 下 不 行 了 , 解 決 辦 法 是 使 用 IP_HDRINCL.
錯 誤 處 理
只 有 連 線 了 socket 或 IP_RECVERR 設 定 為 有 效 時 , 網 路 錯 誤 才 會 傳 送 給 使 用 者 。 因 為 相 容 性 的 原 因 只 有 EMSGSIZE 和 EPROTO 被 傳 送 給 socket.
錯 誤
IP_RECVERR
使 得 所 有 的 錯 誤 儲 存 到 error queue( 錯 誤 佇 列 ) .
EMSGSIZE
包 太 大 。 或 者 因 為 路 徑 MTU 查 詢 ( IP_PMTU_DISCOVER) 設 定 為 有 效 , 或 者 因 為 包 的 尺 寸 超 過 IPv4 規 定 的 包 最 大 尺 寸 64KB.
|
EACCES |
使 用 者 試 圖 傳 送 到 某 廣 播 地 址 但 是 並 未 事 先 在 socket中 設 定 廣 播 標 誌 。 |
|||
|
EPROTO |
ICMP 錯 誤 報 告 有 引 數 問 題 。 |
|||
|
EFAULT |
無 效 記 憶 體 地 址 。 |
EOPNOTSUPP
傳 送 給 socket 的 標 誌 無 效 (比 如 : MSG_OOB ).
|
EINVAL |
無 效 引 數 . |
||
|
EPERM |
使 用 者 無 權 開 啟 raw socket. 只 有 使 用 者 id 為 0 或 具 有 CAP_NET_RAW 屬 性 方 可 。 |
版 本
IP_RECVERR 和 ICMP_FILTER 是 Linux 2.2 的 新 實 現 . 不 能 用 於 可 移 植 程 式 。
如 果 設 定 了 SO_BSDCOMPAT 標 誌 , Linux 2.0 裡 面 有 和 BSD 裡 相 容 的 raw socket 程 式 碼 錯 誤 , 在 2.2 裡 已 經 修 補 了 .
BUGS
沒 有 描 述 透 明 代 理 擴 充 套 件 .
當 設 定 IP_HDRINCL 選 項 後 datagrams( 自 定 址 資 料 包 ) 不 會 被 分 段 並 受 MTU 限 制 . 這 是 Linux 2.2 的 限 制 .
在 Linux 2.2 sin_port 中 設 定 的 IP 協 議 會 丟 失 。 使 用 的 是 綁 定 了 socket 的 協 議 , 或 在 socket (2)初 始 化 呼 叫 中 指 定 的 協 議 。
作 者
Andi Kleen.
另 見
ip (7), socket (7), recvmsg (2), sendmsg (2).
RFC1191 for path
MTU discovery.
RFC791 and the include file for the IP protocol.
[中 文 版 維 護 人 ]
RedCandle <redcandle51@chinaren.com>
[中 文 版 最 新 更 新 ]
2000/10/15
《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :
http://cmpp.linuxforum.net
跋
本
頁 面 中 文 版 由
中 文 man 手 冊 頁 計
劃 提 供 。
中 文 man 手 冊 頁 計
劃 :
https://github.com/man-pages-zh/manpages-zh