Linux Raw Socket使用总结

Linux小知识--原始套接字(raw socket)之模拟ping 利用原始套接字模拟ping 阅读详情
学过socket基础编程的同学都知道,应用层socket(如使用SOCK_STREAM创建的TCP socket,SOCK_DGRAM创建的UDP socket)都只能收发应用层的数据,出于业务应用的需要,可能需要获取IP层的数据,这就需要用到socket接口中另一种更加强大的类型RAW socket。

使用SOCK_RAW创建的RAW socket,可以收发包含IP层的报文。其创建方法如下:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

 其中IPPROTO_ICMP可以是其他协议类型,具体定义见linux/in.h:

/* Standard well-defined IP protocols.  */
enum {
  IPPROTO_IP = 0,		/* Dummy protocol for TCP		*/
  IPPROTO_ICMP = 1,		/* Internet Control Message Protocol	*/
  IPPROTO_IGMP = 2,		/* Internet Group Management Protocol	*/
  IPPROTO_IPIP = 4,		/* IPIP tunnels (older KA9Q tunnels use 94) */
  IPPROTO_TCP = 6,		/* Transmission Control Protocol	*/
  IPPROTO_EGP = 8,		/* Exterior Gateway Protocol		*/
  IPPROTO_PUP = 12,		/* PUP protocol				*/
  IPPROTO_UDP = 17,		/* User Datagram Protocol		*/
  IPPROTO_IDP = 22,		/* XNS IDP protocol			*/
  IPPROTO_DCCP = 33,		/* Datagram Congestion Control Protocol */
  IPPROTO_RSVP = 46,		/* RSVP protocol			*/
  IPPROTO_GRE = 47,		/* Cisco GRE tunnels (rfc 1701,1702)	*/

  IPPROTO_IPV6	 = 41,		/* IPv6-in-IPv4 tunnelling		*/

  IPPROTO_ESP = 50,            /* Encapsulation Security Payload protocol */
  IPPROTO_AH = 51,             /* Authentication Header protocol       */
  IPPROTO_BEETPH = 94,	       /* IP option pseudo header for BEET */
  IPPROTO_PIM    = 103,		/* Protocol Independent Multicast	*
linux raw socket raw socket即原始套接字,可以通过创建socket时,设置参数SOCK_RAW来创建。相比平时使用SOCK_STREAM创建的应用层的套接字,raw socket可以直接处理ip首部和tcp首部,并且可以监听抓取经过本机的ip数据包和mac帧,可以处理ICMP和IGMP等网络控制报文。通常有两种方式: //发送接收ip数据包 socket(PF_INET,SOCK_RAW,IPPROTO_T 阅读详情

相关推荐

Linux下raw socket编程

参考文章: (1)博客园-raw socket 通常所说的socket通信是指通假字通信,也就是IP层往上的,IP+接口号完成套接字通信。这种情况下通信产生的数据包如TCP/UDP/ICMP包。某些情况下我们需要执行更底层的操作,通过raw socket通信可以完成基于数据链路层的socket通信。 raw socket的主要结构为:sockfd = socket(PARAM1, SOCK_...

CHANGQINGTENGCJM的专栏 877

Linux raw socket

Linux raw socket==========================================1. 为什么要详细了解raw socket呢? 其实很早以前就对原始套接字有了一定的了解,那时候还做过一个小的抓包程序,当时以为对原始套接字很熟悉了,但是最近在看nmap的时候被其中的一句话给整迷糊了。  在《Nmap Network Discovery III》的SYN scan章

liuxingen的专栏 1万+

linux mac raw socket 发送广播,raw_socket用mac地址进行通信实例(C语言)

#include//closeunsigned short checksum(unsigned short *buf, int nword);//校验和函数int main(int argc, char *argv[]){//1.创建通信用的原始套接字int sock_raw_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));//2.根据各种协议...

weixin_30903865的博客 1191

linux中raw socket 和 libpcap中BPF过滤功能分析

项目描述:在我们的安卓系统终端中,既要支持以太网(基于MAC地址的二层网络传输通道)通信,又要支持互联网通信 ,我们其中一个进程中通过raw socket 接收eth0口的以太网数据,过滤掉其他MAC数据。另外一个进程中利用libpcap接收互联网数据同时转发到其他无线网卡。 具体实现参考不少网上资料。 代码如下: 基于raw socket实现: void v2v_setFilter(i...

Binary2014的博客 1957

【Linux4.1.12源码分析】AF_INET raw socket实现原理分析

在分析AF_PACKET raw socket实现时,我们从创建socket入手来分析, 本篇我们从收包流程入手来分析。在分析协议栈报文接收IP层分析时,我们知道IP层把报文交给raw sock的如后函数是raw_local_deliver。我们从这个函数来看看是如何把一个报文提交给raw socket的。 1、raw_local_deliver函数 int raw_local_deliver

one_clouder的专栏 2489

linux利用raw socket抓包

来自:http://www.diybl.com/course/6_system/linux/Linuxjs/20090930/177633.html #include sys/socket.h> #include sys/ioctl.h> #include fcntl.h> #include unistd.h> #include netinet/if_ether.h> #include

shanzhizi的专栏 7402

Linux:socket:packet raw sockets 相关(raw packets、原生包,原生socket)

本文介绍了Linux系统中Packet Socket的原理与应用。Packet Socket允许用户在数据链路层(OSI第2层)收发原始数据包,通过AF_PACKET地址族创建,分为SOCK_RAW(包含链路层头)和SOCK_DGRAM(去除链路层头)两种类型。文章分析了其底层实现机制,包括通过prot_hook注册协议处理函数,在__netif_receive_skb_core中遍历所有socket进行数据包分发。同时对比了IP层raw socket(AF_INET)与链路层packet socket的区

mzhan017的博客 162

linux下用raw socket收发包实例

http://nking.blog.sohu.com/141645994.html http://blog.csdn.net/shanzhizi #include       // socket #include      // socket #include       // ioctl #include          // ifreq  #include

shanzhizi的专栏 1万+

ABAP_自定义屏幕07—下拉列表框

ABAP_自定义屏幕07—下拉列表框 完成以下:页面中有下拉列表框,下拉框value=系统表SCRR的值 1、实现方法A-常用 1.1 在主程序定义字段 TYPES:BEGIN OF type_carrid, carrid LIKE scarr-carrid,"航线代码 carrname LIKE scarr-carrname,"航向名称 END OF type_carrid. DATA g_it_carrid TYPE STANDARD TABLE OF type_carrid

f346348157的博客 3848

Mac M1安装Hive

如果你确定装过mysql,但是执行上述命令后,发现不存在mysql命令,那说明你的系统环境没有配置。出现一段空白,接着出现Initialization script completed。关闭hiveServer2时,执行如下命令查看hive进程;执行上面命令后,若有结果输出,则证明配置完成了。如果出现mac权限问题,解决方法参考。就可以见到hive的web界面了。若出现路径,则存在mysql。配置好后保存,使配置文件生效。用户名hive,密码hive。用户名通过如下命令查看。通过如下命令杀死该进程。

总结复盘,才能不迷失自己! 2371

逆向解析M团外卖mtgsig与waimai_sign加密参数实战指南⊙ω⊙

本文详细解析了M团外卖App中mtgsig与waimai_sign两个核心加密参数的逆向分析与生成方法。通过抓包定位、静态逆向与Frida动态调试,拆解了waimai_sign的RSA签名逻辑与mtgsig的复杂参数组装加密流程,并提供了Python模拟实现的框架与调试心得,为安全研究及合规数据分析提供实战指南。

weixin_29327525的博客 1249

AMD显卡跑Ollama大模型?手把手教你搞定Windows下GPU识别与加速(以RX 9600XT为例)

本文详细指导如何在Windows系统下使用AMD显卡(如RX 9600XT)运行Ollama大模型,解决GPU识别与加速问题。通过获取非官方Ollama版本、替换ROCm库文件等步骤,实现高效的GPU加速推理,提升大语言模型的运行效率。

weixin_28707365的博客 454

精益六西格玛Python数字化应用开发-Day18 应用场景:家电企业生产效率优化

本文将重点介绍专门针对精益六西格玛黑带使用场景的 Python 库,这些库功能侧重于数据分析和流程优化,特别适用于 DMAIC 方法论和看板管理。考虑到读者具备中高级Python 使用经验,我们将深入探讨各库的高级功能和实际应用应用场景。 某家电企业生产线自动化程度高,数据量巨大,希望通过精益管理提升生产效率。企业借助 Python 脚本,打通各类数据源(MES、ERP、设备日志),自动归集生产数据,分析各工序的生产节拍、设备停机、效率损失,快速定位瓶颈环节

m0_56592100的博客 888

解密CANoe数据回放:从BLF到ASC的格式转换与优化策略

本文深入解析CANoe数据回放中BLF与ASC格式的转换与优化策略,帮助工程师高效处理汽车电子测试数据。详细介绍了两种格式的特性、转换方法及性能优化技巧,包括CANoe内置功能、命令行自动化和第三方工具应用,提升故障诊断和系统验证效率。

weixin_28331555的博客 509

【单点登录】SSO单点登录sa-token接入流程详解

Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

Hello, New World! 1726

电压跟随器在ADC采样电路中的作用分析

电压跟随器在ADC采集系统中扮演关键角色,它能解决分压电路因ADC输入阻抗导致的电压误差问题。通过运放构成的电压跟随器可隔离信号源与负载,保证采样精度,尤其适用于高阻抗传感器或高速采样场景。工程应用中需注意运放带宽、轨对轨输出能力及抗干扰设计。合理使用电压跟随器能显著提升信号完整性,在复杂电子系统中成为不可或缺的"信号桥梁。

硬核科技 611

2001-2023年各省农产品进出口总额数据(无缺失)

2001-2023年各省农产品进出口总额数据1、时间:2001-2023年2、来源:商务B、农业年鉴、海关总署3、指标:年份、省份、农产品出口额(亿元)、农产品进口额(亿元)、农产品出口额(万美元)、农产品进口额(万美元)4、范围:31个省市5、指标解释:农产品进出口是指国家之间进行农产品贸易的活动。随着全球化进程的加快,农产品进出口成为国际贸易的重要组成部分。农产品进出口不仅涉及到国家经济和农业发展,还涉及到农民的生活和农村经济的发展。我国是世界上最大的农产品生产和消费国之一,农产品进出口占据了国际市场的一席之地。根据最新统计数据显示,我国农产品进口总额稳步增长,贸易结构逐渐优化,成为国际市场上的重要供应商。

16QAM调制软解调+扩频解扩+V&V相位同步+FFT频偏估计+LDPC编译码系统matlab误码率仿真【包括程序,中文注释,程序操作视频】

1.版本:matlab2024b。2.包含:程序,中文注释,程序操作视频。3.领域:16QAM+软解调+扩频解扩+V&V相位同步+FFT频偏估计+LDPC编译码4.仿真效果:仿真效果可以参考博客同名文章《16QAM调制软解调+扩频解扩+V&V相位同步+FFT频偏估计+LDPC编译码系统matlab误码率仿真》5.内容:16QAM调制软解调+扩频解扩+V&V相位同步+FFT频偏估计+LDPC编译码系统matlab误码率仿真。生成随机的二进制信息序列,首先进行LDPC编码,然后扩频,然后对扩频的数据进行16QAM调制,得到调制信号,然后加入相位偏差和频偏,将调制信号通过AWGN信道,添加高斯白噪声。对接收到的信号,先进行FFT频偏估计和V&V相位估计,然后进行16QAM软解调,恢复出二进制数据,然后进行LDPC译码,然后再进行解扩,最后统计误码比特数,计算误码率。6.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。

水利数字孪生工程解决方案Word(192页).docx

水利数字孪生工程解决方案旨在通过数字孪生技术实现水利工程的智能运行与精准管控。方案结合自主研发的实时实景数字孪生引擎,构建智慧水利解决方案,实现对水利工程规划、建设、运营、维护全过程的实时监测、诊断、分析、决策与预测。通过GIS、视频融合、IOT等技术,形成物联传感数据、导航定位、卫星遥感等多源数据集成平台,为水利大脑提供全面可靠的感知大数据。方案还利用视频融合技术,低成本高真实还原流域全景,支撑水利预报、预警、预演、预案的模拟仿真体系,有效防御水旱灾害。同时,综合运用位置智能技术,在三维实景水利图中直观展示视频资源及告警数据,提升水利安全管理水平。系统具备一体化水利感知体系,实时采集水情、雨情等信息,并通过数据质量监控与异常处理机制确保数据准确性。此外,方案还包含会商子系统,集成多源数据与专业模型,提供综合分析与决策支持,辅助管理人员制定科学合理的防汛抗旱指挥决策。整体而言,该方案通过数字孪生技术赋能水利工程,提升运行效率与安全性,推动水利行业数字化转型。

AUTOSARViewer-1.6.13安装包

AUTOSARViewer_1.6.13

上一篇: Linux常见协议类型结构体定义
下一篇: Linux下Eclipse使用NDK开发Android应用
sprintwind
博客等级 码龄12年 6粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值