原始套接字简介【转载】

摘要:
原始套接字是原始套接字的概述,它指在传输层下使用的套接字。这些功能需要使用另一个套接字实现,该套接字称为原始套接字,具有更强大的功能和更低的层。原始套接字可以在链路层发送和接收数据帧。此外,您必须具有管理员权限才能使用原始套接字。原始套接字的编程方法与UDP类似。它还用于在创建套接字后通过套接字发送和接收数据。

一 原始套接字概述

原始套接字,指在传输层下面使用的套接字。流式套接字和数据报套接字这两种套接字工作在传输层,主要为应用层的应用程序提供服务,并且在接收和发送时只能操作数据部分,而不能对IP首部或TCP和UDP首部进行操作,通常把这两种套接字称为标准套接字。

但是,如果我们开发的是更底层的应用,比如发送一个自定义的IP包、UDP包、TCP包或ICMP包,捕获所有经过本机网卡的数据包,伪装本机的IP,想要操作IP首部或传输层协议首部,等等,这些功能对于这两种套接字就无能为力了。这些功能需要使用另一种套接字来实现,这种套接字叫作原始套接字,功能更强大,更底层。

原始套接字可以在链路层收发数据帧。

二 原始套接字和标准套接字的区别

原始套接字可以自动组装数据包(伪装本地IP和本地MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。

原始套接字直接置“根”于操作系统网络核心(Network Core),而SOCK_STREAM、SOCK_DGRAM则“悬浮”于TCP和UDP协议的外围,如下图所示:

原始套接字简介【转载】第1张

流式套接字只能收发TCP协议的数据,数据报套接字只能收发UDP协议的数据,原始套接字可以收发没经过内核协议栈的数据包。

三 原始套接字的编程方法

原始套接字的编程和UDP的编程方法差不多,也是创建一个套接字后,通过这个套接字收发数据。重要区别是原始套接字更底层,可以自行封装数据包,制作网络嗅探工具,实现拒绝服务攻击,实现IP欺骗,等等。面向链路层的原始套接字用于在MAC层(二层)上收发原始数据帧,这样就允许用户在用户空间完成MAC上各个层次的实现。

原文链接:https://blog.csdn.net/chengqiuming/article/details/89577351

免责声明:文章转载自《原始套接字简介【转载】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JSP中字符编码转换问题资源、文件Android应用程序资源的编译和打包过程分析by小雨下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ZeroMQ示例(C/C++/PHP)详解三种模式

源自:https://blog.csdn.net/qq_16836151/article/details/521081521、应答模式2、均衡分配模式(推拉模式)3、发布订阅模式(天气预报) 提问-回答 让我们从简单的代码开始,一段传统的Hello World程序。我们会创建一个客户端和一个服务端,客户端发送Hello给服务端,服务端返回World。下文是...

Windows phone 8 学习笔记(3) 通信(转)

Windows phone 8 可利用的数据通信方式比较广泛,在硬件支持的前提下,我们可以利用WiFi、蓝牙、临近感应等多种方式。数据交互一般通过套接字来完成,我们将在本文详细的分析。 快速导航:一、WP8套接字二、蓝牙三、NFC四、获取网络状态五、访问web的几种方式 一、WP8套接字 1)创建套接字客户端 Windows phone 8中的套接字并...

《Python》网络编程之验证客户端连接的合法性、socketserver模块

一、socket的更多方法介绍 # 服务端套接字函数 s.bind() # 绑定(主机,端口号)到套接字 s.listen() # 开始TCP监听 s.accept() # 被动接受TCP客户的连接,(阻塞式)等待连接的到来 # 客户端套接字函数 s.connect() # 主动初始化TCP服务器连接 s.connect_ex() #...

Linux套接字与虚拟文件系统(1):初始化和创建

http://www.cppblog.com/qinqing1984/archive/2015/05/03/210521.html 引言在Unix的世界里,万物皆文件,通过虚拟文件系统VFS,程序可以用标准的Unix系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作。对于网络套接字socket也是如此,除了专属的Berkeley Sockets...

Android中实现TCP和UDP传输实例

TCP和UDP在网络传输中非常重要,在Android开发中同样重要。 首先我们来看一下什么是TCP和UDP。 什么是TCP? TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specifi...

深入浅出--iOS的TCP/IP协议族剖析&&Socket

深入浅出--iOS的TCP/IP协议族剖析&&Socket 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP、HTTP;还有Socket。(--该文很干,酝酿了许久!你能耐心看完吗?) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议。 传输层(Transport Layer)是OSI(七...