Provided by: manpages-zh_1.6.4.0-1_all
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 選項令只在套接字已連線的情況下接收 遠端錯誤( EPROTO 和 EMSGSIZE) 除外. 最好是修復程式碼並適當地處理錯誤, 而不要開啟該選項. 本地產生的錯誤總是傳遞. 當打開了 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@ccidnet.com>
[中文版最新更新]
2001/07/19
《中國linux論壇man手冊頁翻譯計劃》:
http://cmpp.linuxforum.net
跋
本頁面中文版由中文 man 手冊頁計劃提供。 中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh