Manpages

NAME (名 字 )

udp - IPv4 上 面 的 UDP 協 議 .

SYNOPSIS (總 覽 )

#include <sys/socket.h>
#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);

DESCRIPTION(描 述 )

這 是 一 個 RFC768 中 的 用 戶 數 據 報 協 議 的 實 現 . 它 實 現 無 連 接 的 , 不 可 靠 的 數 據 報 信 息 包 服 務 . 信 息 包 可 能 在 它 們 傳 輸 到 達 之 前 重 新 排 序 或 者 重 複 . UDP 通 過 生 成 和 檢 查 校 驗 和 來 俘 獲 傳 輸 錯 誤 . 當 創 建 一 個 UDP 套 接 字 時 , 它 的 本 地 和 遠 程 地 址 是 不 確 定 的 . 可 以 使 用 帶 一 個 有 效 目 的 地 址 作 爲 參 數 的 sendto(2) 或 者 sendmsg(2) 立 即 發 送 數 據 報 .如 果 套 接 字 上 調 用 了 connect(2) 時 , 則 設 置 默 認 的 目 的 地 址 , 數 據 報 可 以 使 用 send(2) 或 者 write(2) 發 送 而 不 需 要 指 定 目 的 地 址 . 也 可 以 通 過 傳 遞 一 個 地 址 給 sendto(2) 或 者 sendmsg(2) 來 發 送 到 其 它 目 的 地 址 . 爲 了 接 收 信 息 包 ,套 接 字 必 須 首 先 用 bind(2) 綁 定 一 個 本 地 地 址 , 如 果 沒 有 這 麼 做 , 套 接 字 層 在 第 一 個 用 戶 接 收 請 求 時 將 自 動 分 配 一 個 本 地 端 口 . 所 有 接 收 操 作 只 返 回 一 個 信 息 包 . 當 信 息 包 小 於 所 傳 遞 的 緩 衝 區 時 , 則 只 返 回 那 些 數 據 , 當 信 息 包 大 於 所 傳 遞 的 緩 衝 區 時 ,則 截 斷 信 息 包 並 設 置 MSG_TRUNC 標 誌 .

IP 選 項 可 以 使 用 描 述 於 ip(7) 中 的 套 接 字 選 項 發 送 或 接 收 . 只 有 打 開 了 合 適 的 sysctl 時 , 內 核 才 處 理 它 們 (不 過 即 使 關 閉 了 它 們 , 仍 然 會 傳 遞 給 用 戶 ). 參 見 ip(7). 如 果 設 置 了 MSG_DONTROUTE 標 誌 ,則 發 送 時 目 的 地 址 必 須 指 向 一 個 本 地 接 口 地 址 , 而 且 信 息 包 只 發 到 該 接 口 . 當 UDP 的 總 長 超 過 接 口 MTU(Maximum Transmission Unit 最 大 傳 輸 單 元 )時 , UDP 會 對 信 息 包 進 行 分 段 . 一 個 更 爲 網 絡 友 好 的 可 選 方 法 是 使 用 path MTU discovery(路 徑 MTU發 現 ), 它 描 述 於 ip(7) 中 的 IP_PMTU_DISCOVER 部 分 .

ADDRESS FORMAT (地 址 格 式 )

UDP 使 用 IPv4 的 sockaddr_in 地 址 格 式 ,其 描 述 於 ip(7) 中 .

ERROR HANDLING (錯 誤 處 理 )

所 有 重 大 錯 誤 都 會 以 錯 誤 返 回 值 的 方 式 傳 遞 給 用 戶 , 即 使 套 接 字 沒 有 連 接 亦 如 此 .這 種 處 理 方 式 有 別 於 許 多 其 它 的 BSD 套 接 字 實 現 方 法 , 除 非 套 接 字 連 接 上 , 否 則 那 些 方 法 不 會 傳 遞 任 何 錯 誤 , Linux 的 處 理 方 式 遵 循 RFC1122 的 要 求 . 爲 了 與 以 前 的 代 碼 兼 容 ,可 以 設 置 SO_BSDCOMPAT SOL_SOCKET 選 項 令 只 在 套 接 字 已 連 接 的 情 況 下 接 收 遠 程 錯 誤 ( EPROTOEMSGSIZE) 除 外 . 最 好 是 修 復 代 碼 並 適 當 地 處 理 錯 誤 , 而 不 要 打 開 該 選 項 . 本 地 產 生 的 錯 誤 總 是 傳 遞 . 當 打 開 了 IP_RECVERR 選 項 時 , 所 有 錯 誤 可 以 存 儲 在 套 接 字 錯 誤 隊 列 中 , 並 可 以 通 過 帶 MSG_ERRQUEUE 標 識 設 置 的 recvmsg(2) 來 接 收 .

ERRORS (錯 誤 )

所 有 列 在 socket(7)ip(7) 中 的 錯 誤 都 可 以 在 一 個 UDP 套 接 字 上 收 發 時 收 到 .

ECONNREFUSED 沒 有 與 目 的 地 址 相 關 聯 的 接 收 者 . 這 可 能 由 於 在 前 面 一 個 通 過 該 套 接 字 發 送 的 信 息 包 而 引 發 .

VERSIONS(版 本 )

IP_RECVERR 是 Linux 2.2 中 的 新 功 能 .

CREDITS(尾 註 )

本 手 冊 頁 的 作 者 爲 Andi Kleen.

SEE ALSO(另 見 )

ip(7), socket(7), raw(7).

RFC768: 用 戶 數 據 報 協 議 .
RFC1122: 主 機 需 求
RFC1191: 描 述 path MTU discovery (路 徑 MTU查 找 ).

[中 文 版 維 護 人 ]

riser <boomer [AT] ccidnet.com>

[中 文 版 最 新 更 新 ]

2001/07/19

《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh