一、简介

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相关推荐

  1. 用C#的Raw Socket实现网络封包监视

    <script language="javascript" src="/ad/js/edu_left_300-300.js" type="tex ...

  2. python实现syn半扫描_python 使用raw socket进行TCP SYN扫描实例

    1. TCP SYN扫描 端口扫描常用于用于探测服务器或主机开放端口情况,被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务.端口扫描是向一定范围的服务器端口发送对应请求 ...

  3. RAW SOCKET探索

    在Linux实现抓取以太网络上的数据包主要有libpcap,raw socket以及从内核中获取的方式. 我尝试选择使用raw socket来抓取以太网络上的数据包. 一.socket地址域(协议簇) ...

  4. 解读Raw Socket

    什么是Raw Socket呢?下面是来自wikipedia的解释: In computer networking, a raw socket is a socket that allows direc ...

  5. 关于windows xp sp2/sp3 中tcpip.sys对于Raw socket的限制

    WINDOWS XP SP2修改了TCPIP.SYS,增加了对于RAW SOCKET的发送和伪造源地的限制,详情如下 : 1) 不能通过raw socket发送TCP报文.做此尝试时会得到10004号 ...

  6. Raw Socket编程

    原始套接字(SOCK_RAW)是一种不同于SOCK_STREAM.SOCK_DGRAM的套接字,它实现于系统核心.然而,原始套接字能做什么呢?首 先来说,普通的套接字无法处理ICMP.IGMP等网络报 ...

  7. linux raw限制端口访出,使用Linux raw socket时需要注意的一些问题

    本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. 作者:gfree.win ...

  8. linux raw socket 例子,raw socket编程例子

    raw socket编程例子内容安排: 1.原始套接字介绍 1.1 原始套接字工作原理与规则 1.2 简单应用 2 FTP密码窃取器实现(简单的rootkit) 2.1 设计思路 2.2 实现 2.3 ...

  9. C#下的Raw Socket编程实现网络封包监视

    谈起socket编程,大家也许会想起QQ和IE,没错.还有许多网络工具如P2P.NetMeeting等在应用层实现的应用程序,也是用socket来实现的.Socket是一个网络编程接口,实现于网络应用 ...

  10. 用C#下的Raw Socket编程实现网络封包监视(摘录)

    谈起socket编程,大家也许会想起QQ和IE,没错.还有许多网络工具如P2P.NetMeeting等在应用层实现的应用程序,也是用 socket来实现的.Socket是一个网络编程接口,实现于网络应 ...

最新文章

  1. js获取asp.net服务器端控件Label,TextBox,RadioButtonList,DropDownList的值
  2. lsb_release查看当前系统的发行版信息
  3. 360浏览器收藏夹_换了一台电脑,浏览器收藏的网站不见了,咋办?
  4. OpenStack —— DevStack一键自动化安装
  5. matlab欧拉法程序,欧拉法matlab程序.doc
  6. 【C++基础学习】二维数组的动态分配及参数传递
  7. javaweb学习总结五(内省、beanUtils工具包)
  8. 【Linux】Linux的常用远程工具
  9. 一道计算时间的机试题
  10. Luogu1613 跑路
  11. bzoj 2959: 长跑【LCT+并查集】
  12. 无线发射机中的正交上变频技术--USRP X410软件无线电平台开发
  13. C++坦克大战源代码
  14. 幼儿计算机教材有哪些,中华字经幼儿教材
  15. 安卓手机更新过程手机乱码_关于安卓手机上自带播放器乱码问题的解决
  16. html字体根据宽度自动调整,css – 根据div大小调整字体大小
  17. IIR数字滤波器设计和实现
  18. ado控件连接mysql_Delphi中用ADO控件连接数据库例子
  19. “着色器”是什么意思? 如何使用HTML5和WebGL创建它们
  20. 大数据治理平台架构技术方案(ppt)

热门文章

  1. 利用 Global Mapper 软件下载 Google 影像(中英文对照)
  2. Python环境搭建及PyCharm下载安装
  3. Hexo+GitHub搭建个人博客
  4. python 老师和父亲_父亲节丨有个当老师的爸爸是怎样的体验
  5. mysql中替代 =_SELECT * WHERE var == [MySQL中的许多替代方法之一]?
  6. 能解决 80% 故障的排查思路
  7. Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
  8. oracle 分组统计行数,求助分组之后进行统计行数
  9. php启动另一个php进程,用php守护另一个php进程的例子
  10. 面试相关——计算机网络基础