更新時間:2016年08月24日10時39分 來源:傳智播客C++培訓學院 瀏覽次數:
功能:
構造 tcp 數據包
參數:
sp:源端口號
dp:目的端口號
seq:序號
ack:ack 標記
control:控制標記
win:窗口大小
sum:校驗和,設為 0,libnet 自動填充
urg:緊急指針
len:tcp包長度
payload:負載,為給應用程序發(fā)送的文本內容,可設置為 NULL
payload_s:負載長度,或為 0
l:libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標記,第一次組新的發(fā)送包時,這里寫 0,同一個應用程序,下一次再組包時,這個位置的值寫此函數的返回值。
返回值:
成功:協(xié)議標記
失?。?1
libnet_ptag_t libnet_build_tcp_options(
u_int8_t *options,u_int32_t options_s,libnet_t *l,libnet_ptag_t ptag );
功能:
構造 tcp 選項數據包
參數:
options:tcp 選項字符串
options_s:選項長度
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標記,第一次組新的發(fā)送包時,這里寫 0,同一個應用程序,下一次再組包時,這個位置的值寫此函數的返回值。
返回值:
成功:協(xié)議標記
失?。?1
libnet_ptag_t libnet_build_ipv4(
u_int16_t ip_len, u_int8_t tos,u_int16_t id, u_int16_t flag,u_int8_t ttl, u_int8_t prot,u_int16 sum, u_int32_t src,u_int32_t dst, u_int8_t *payload,u_int32_t payload_s,libnet_t *l,libnet_ptag_t ptag );
功能:
構造一個 IPv4 數據包
參數:
ip_len:ip 包總長
tos:服務類型
id:ip 標識
flag:片偏移
ttl:生存時間
prot:上層協(xié)議
sum:校驗和,設為 0,libnet 自動填充
src:源 ip 地址
dst:目的ip地址
payload:負載,可設置為 NULL(這里通常寫 NULL)
payload_s:負載長度,或為 0(這里通常寫 0 )
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標記,第一次組新的發(fā)送包時,這里寫 0,同一個應用程序,下一次再組包時,這個位置的值寫此函數的返回值。
返回值:
成功:協(xié)議標記
失敗:-1
libnet_ptag_t libnet_build_ipv4_options(
u_int8_t*options, u_int32_t options,libnet_t*l, libnet_ptag_t ptag);
功能:
構造 IPv4 選項數據包
參數:
options:tcp 選項字符串
options_s:選項長度
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標記,若為 0,建立一個新的協(xié)議
返回值:
成功:協(xié)議標記
失?。?1
libnet_ptag_t libnet_build_arp(
u_int16_t hrd, u_int16_t pro,
u_int8_t hln, u_int8_t pln,
u_int16_t op, u_int8_t *sha,
u_int8_t *spa, u_int8_t *tha,
u_int8_t *tpa, u_int8_t *payload,
u_int32_t payload_s, libnet_t *l,
libnet_ptag_t ptag );
功能:
構造 arp 數據包
參數:
hrd:硬件地址格式,ARPHRD_ETHER(以太網)
pro:協(xié)議地址格式,ETHERTYPE_IP( IP協(xié)議)
hln:硬件地址長度
pln:協(xié)議地址長度
op:ARP協(xié)議操作類型(1:ARP請求,2:ARP回應,3:RARP請求,4:RARP回應)
sha:發(fā)送者硬件地址
spa:發(fā)送者協(xié)議地址
tha:目標硬件地址
tpa:目標協(xié)議地址
payload:負載,可設置為 NULL(這里通常寫 NULL)
payload_s:負載長度,或為 0(這里通常寫 0 )
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標記,第一次組新的發(fā)送包時,這里寫 0,同一個應用程序,下一次再組包時,這個位置的值寫此函數的返回值。
返回值:
成功:協(xié)議標記
失?。?1
libnet_ptag_t libnet_build_ethernet(
u_int8_t*dst, u_int8_t *src,
u_int16_ttype, u_int8_t*payload,
u_int32_tpayload_s, libnet_t*l,
libnet_ptag_t ptag );
功能:
構造一個以太網數據包
參數:
dst:目的 mac
src:源 mac
type:上層協(xié)議類型
payload:負載,即附帶的數據,可設置為 NULL(這里通常寫 NULL)
payload_s:負載長度,或為 0(這里通常寫 0 )
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標記,第一次組新的發(fā)送包時,這里寫 0,同一個應用程序,下一次再組包時,這個位置的值寫此函數的返回值。
返回值:
成功:協(xié)議標記
失?。?1
int libnet_write(libnet_t * l);
功能:
發(fā)送數據包
參數:
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
返回值:
成功:發(fā)送數據包的長度使用實例
失?。悍祷?-1
這里是在 ubuntu 下通過原始套接字組一個 udp 數據包,給 PC 機的網絡調試助手發(fā)送信息(對比:《原始套接字實例:發(fā)送 UDP 數據包》):
復制代碼
本文版權歸傳智播客C++培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客C/C++培訓學院
首發(fā):http://xamj520.com/c/