Linux網路程式設計之UDP

2021-08-13 02:12:11 字數 1171 閱讀 6564

一、概述

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...