RAW-socket
一、简介
Internet套接字是大多数操作系统中实现网络通信的方式。它们通常由套接字API提供,并且基于与读取和写入文件相同的原则。程序可以通过操作系统提供的功能获得套接字。然后,该函数返回套接字描述符,通常是一个简单的整数,类似于大多数操作系统提供的用于文件读写操作的描述符。然后,这个套接字描述符可以用于从套接字写入或读取数据。写入套接字的数据通过添加首部和尾部被操作系统封装,然后通过网络接口通过网络将完整的数据包发送到目标主机。从套接字接收到的数据显示给程序,而不带首部和尾部,仅向用户显示用户数据。这样工作的套接字是通过Berkeley套接字API提供的数据报或流套接字。用户不知道底层之间的通信。所有网络通信步骤,例如连接建立,都在用户不知情的情况下进行处理。用户只负责创建套接字,然后提供他希望发送到正确函数的数据:
用户需要设置的参数是:
- 源套接字地址(IP地址和端口号的组合)通常可以通过bind()函数设置,也可以直接通过send()函数之一定义。
- 通过选择DATAGRAM-socket或STREAM-socket,我们可以选择是否要有单独的数据报或字节流。这也会选择正在使用的传输层协议(UDP或TCP)。
如果我们想访问较低层的数据,我们有几种可能:RAW-socket、PACKET-socket、网络驱动程序和数据链路层api。网络驱动程序的编程将在这项工作中不再进一步讨论,因为我们想看看适用于不同操作系统的可移植解决方案。我们将展示的API可以访问的内容如下图2所示:
通过这些api,应用程序可以更改和访问用于发送数据的网络层的字段。这可能被看作是对传统分层模型的突破,因为我们可以影响较低层提供的服务。
1.1 RAW-sockets
RAW-socket是标准Berkeley套接字和基于它的套接字API的一部分[1]。它们是除了前面提到的DATAGRRAM-socket或STREAM-socket之外的另一个选项,用于使用套接字API创建数据包[1]。除了简单地发送数据和定义地址信息外,RAW-socket还允许用户访问和操作较低层的头和尾信息,更具体地说,是网络层和传输层(OSI模型的第3层和第4层)。由于RAW-socket是Internet套接字API的一部分,因此它们只能用于生成和接收IP数据包。
1.2 //待补充
二、不同系统的实现
首先,我们要简要概述一些可用于RAW-socket和数据链路层网络编程的api和库。一般来说,我们希望将可用的库分为两部分:操作系统提供的api和可用于多个操作系统的独立库。
2.1 Windows
//待补充
2.2 Linux
RAW-socket相关推荐
- 用C#的Raw Socket实现网络封包监视
<script language="javascript" src="/ad/js/edu_left_300-300.js" type="tex ...
- python实现syn半扫描_python 使用raw socket进行TCP SYN扫描实例
1. TCP SYN扫描 端口扫描常用于用于探测服务器或主机开放端口情况,被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务.端口扫描是向一定范围的服务器端口发送对应请求 ...
- RAW SOCKET探索
在Linux实现抓取以太网络上的数据包主要有libpcap,raw socket以及从内核中获取的方式. 我尝试选择使用raw socket来抓取以太网络上的数据包. 一.socket地址域(协议簇) ...
- 解读Raw Socket
什么是Raw Socket呢?下面是来自wikipedia的解释: In computer networking, a raw socket is a socket that allows direc ...
- 关于windows xp sp2/sp3 中tcpip.sys对于Raw socket的限制
WINDOWS XP SP2修改了TCPIP.SYS,增加了对于RAW SOCKET的发送和伪造源地的限制,详情如下 : 1) 不能通过raw socket发送TCP报文.做此尝试时会得到10004号 ...
- Raw Socket编程
原始套接字(SOCK_RAW)是一种不同于SOCK_STREAM.SOCK_DGRAM的套接字,它实现于系统核心.然而,原始套接字能做什么呢?首 先来说,普通的套接字无法处理ICMP.IGMP等网络报 ...
- linux raw限制端口访出,使用Linux raw socket时需要注意的一些问题
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. 作者:gfree.win ...
- linux raw socket 例子,raw socket编程例子
raw socket编程例子内容安排: 1.原始套接字介绍 1.1 原始套接字工作原理与规则 1.2 简单应用 2 FTP密码窃取器实现(简单的rootkit) 2.1 设计思路 2.2 实现 2.3 ...
- C#下的Raw Socket编程实现网络封包监视
谈起socket编程,大家也许会想起QQ和IE,没错.还有许多网络工具如P2P.NetMeeting等在应用层实现的应用程序,也是用socket来实现的.Socket是一个网络编程接口,实现于网络应用 ...
- 用C#下的Raw Socket编程实现网络封包监视(摘录)
谈起socket编程,大家也许会想起QQ和IE,没错.还有许多网络工具如P2P.NetMeeting等在应用层实现的应用程序,也是用 socket来实现的.Socket是一个网络编程接口,实现于网络应 ...
最新文章
- js获取asp.net服务器端控件Label,TextBox,RadioButtonList,DropDownList的值
- lsb_release查看当前系统的发行版信息
- 360浏览器收藏夹_换了一台电脑,浏览器收藏的网站不见了,咋办?
- OpenStack —— DevStack一键自动化安装
- matlab欧拉法程序,欧拉法matlab程序.doc
- 【C++基础学习】二维数组的动态分配及参数传递
- javaweb学习总结五(内省、beanUtils工具包)
- 【Linux】Linux的常用远程工具
- 一道计算时间的机试题
- Luogu1613 跑路
- bzoj 2959: 长跑【LCT+并查集】
- 无线发射机中的正交上变频技术--USRP X410软件无线电平台开发
- C++坦克大战源代码
- 幼儿计算机教材有哪些,中华字经幼儿教材
- 安卓手机更新过程手机乱码_关于安卓手机上自带播放器乱码问题的解决
- html字体根据宽度自动调整,css – 根据div大小调整字体大小
- IIR数字滤波器设计和实现
- ado控件连接mysql_Delphi中用ADO控件连接数据库例子
- “着色器”是什么意思? 如何使用HTML5和WebGL创建它们
- 大数据治理平台架构技术方案(ppt)
热门文章
- 利用 Global Mapper 软件下载 Google 影像(中英文对照)
- Python环境搭建及PyCharm下载安装
- Hexo+GitHub搭建个人博客
- python 老师和父亲_父亲节丨有个当老师的爸爸是怎样的体验
- mysql中替代 =_SELECT * WHERE var == [MySQL中的许多替代方法之一]?
- 能解决 80% 故障的排查思路
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- oracle 分组统计行数,求助分组之后进行统计行数
- php启动另一个php进程,用php守护另一个php进程的例子
- 面试相关——计算机网络基础