一、概述
udp 是 user datagram protocol 的簡稱, 中文名是使用者資料報協議,是乙個簡單的面向資料報的運輸層協議,在網路中用於處理資料報,是一種無連線的協議。udp 不提供可靠性的傳輸,它只是把應用程式傳給 ip 層的資料報傳送出去,但是並不能保證它們能到達目的地。由於 udp 在傳輸資料報前不用在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,故而傳輸速度很快。
二.udp 有如下的特點
1)郵件系統服務模式的抽象(可通過郵件模型來進行對比)
2)每個分組都攜帶完整的目的位址
3)傳送資料之前不需要建立鏈結
4)不對資料報的順序進行檢查,不能保證分組的先後順序
5)不進行分組出錯的恢復和重傳
6)不保證資料傳輸的可靠性
三.udp 客戶端程式
對比於寫信模型,客戶端相當於寄信人,要想成功給人寄信,信封上必須寫上對方的位址。
ssize_t sendto(int sockfd,
const void *buf,
size_t nbytes,
int flags,
const struct sockaddr *to,
socklen_t addrlen );
功能:
向 to 結構體指標中指定的 ip,傳送 udp 資料,可以傳送 0 長度的 udp 資料報
引數:
sockfd:套接字
buf:傳送資料緩衝區
nbytes:傳送資料緩衝區的大小
flags:一般為 0
to:指向目的主機位址結構體的指標
addrlen:to 所指向內容的長度
返回值:
成功:傳送資料的長度
失敗: -1
四.udp 伺服器程式
udp網路程式想要收取資料需什麼條件?
1)確定的 ip 位址
2)確定的埠(port)
這正如,我要收到別人寄過來的信,我必須告訴別人我的位址(ip),同時告訴別人我我的公寓信箱號(埠)。
接收端使用 bind() 函式,來完成位址結構與 socket 套接字的繫結,這樣 ip、port 就固定了,傳送端在 sendto 函式中指定接收端的 ip、port,就可以傳送資料了。
需要標頭檔案:#include
Linux 網路程式設計之UDP
1.介紹 udp協議是無連線的,不可靠傳輸的協議.伺服器與客戶端的互動不需要建立連線,沒有流量控制的功能。與tcp一樣,它也是傳輸層協議,通訊過程中需要ip位址與埠號。使用udp進行程式設計包括伺服器與客戶端,下面介紹一下伺服器與客戶端的通訊流程 伺服器流程 1 建立伺服器套接字描socket 2 ...
linux網路程式設計之UDP
udp 前面已經講過tcp網路通訊,然後tcp每次通訊都要進行三次握手連線,雖然傳輸的可靠性比較高,但對於一些及時性的資料的傳輸顯得太過費時,所以就有了udp這種無連線通訊,但資料容易出錯。伺服器端填充 sockaddr結構 bzero addr,sizeof struct sockaddr in ...
Linux網路程式設計之UDP洪水攻擊
1.概述 udp攻擊向目標主機的udp埠傳送大量的udp報文,造成目標主機的埠堵塞,達到攻擊的目的。建立多執行緒,利用原始套接字封裝udp與ip的首部,然後傳送udp報文,攻擊目標主機.2.udp攻擊例項 include include include include include include...