原始套接字

AF_PACKET抓包过程 简单、快速理解socket、PF_PACKET、AF_PACKET 阅读详情

    最近自己在学习套接字,感觉原始套接字这块内容比较难以理解,但这部分的内容却十分有意思,所以自己对自己的学习到的知识点进行总结。

    在学习int socket(int domain, int type, int protocol)时发现在函数的第二个参数位置type类型有3种。

SOCK_STREAM   字节流套接字   

SOCK_DGRAM     数据报套接字

SOCK_RAM           原始套接字

字节流套接字提供有序,可靠,双向字节流的连接。

数据报套接字是在AF_INET域中通过UDP/IP连接实现,它提供的是一种无需连接的不可靠服务。

原始套接字与前面两种套接字不同。详细原因看后面的总结。

1.套接字的域

     域指定套接字通信中使用的网络介质。最常见的套接字域是AF_INET,它是指Internet网络,许多Linux局域网使用的都是该网络,当然,因特网自身用的也是它。其底

linux 原始套接字 绑定网卡,Linux原始套接字实现分析 之所以要转这篇文章,是因为这篇文章是我看到的同类博客中写得最好的,但非常可惜,这篇博客中只有一篇文章,没有什么收藏价值,故将其原文转载,以供今后学习查阅。本文从IPV4协议栈原始套接字的分类入手,详细介绍了链路层和网络层原始套接字的特点及其内核实现细节。并结合原始套接字的实际应用,说明各类型原始套接字的适应范围,以及在实际使用时需要注意的问题。一、原始套接字概述协议栈的原始套接字从实现上可以分为“... 阅读详情

相关推荐

Linux原始套接字实现分析

图中TCP、UDP和ICMP协议的接收处理函数分别为tcp_v4_rcv()、udp_rcv()和icmp_rcv()。对于IP报文,在协议栈的ip_local_deliver_finish()函数中会匹配是否有注册的网络层原始套接字,若匹配上就通过skb_clone()克隆报文并交给相应的原始套接字来处理。对于IP报文,在协议栈的ip_local_deliver_finish()函数中会匹配是否有注册的网络层原始套接字,若匹配上就通过skb_clone()克隆报文并交给相应的原始套接字来处理。

m0_74282605的博客 1356

AF_PACKET套接字解密 --- 01

AF_PACKET套接字解密 --- 01 2012-05-23 22:08:23 分类: LINUX 使用socket(AF_PACKET, SOCK_RAW, ETH_P_ALL)创建的套接字到底为何于众不同,今日追踪了一下。使用Linux 3.2.5版内核 net/socket.c 点击(此处)折叠或打开 SYSCALL_

linuxheik的专栏 1671

Linux原始套接字抓取底层报文

1.原始套接字使用场景         我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据,原有的头部信息在传递过程中被隐藏了。某些情况下我们需要执行更底层的操作,比如监听所有本机收发的数据、修改报头等,而像SOCK_STREAM、SOCK_DGRAMZ则通常用于应用层,并不能满足该需求。 ...

遇见你是我最美丽的意外 9435

链路层原始套接字的创建

链路层原始套接字调用socket()函数来创建。第一个参数指定协议族类型为AF_PACKET,第二个参数可以设置为SOCK_RAW或SOCK_DGRAM,第三个参数是协议类型。协议类型protocol不用取值的意义如下表10.2所示。 #include <sys/types.h> /* See NOTES */ #include <sys/socket.h&gt...

anton_99的博客 943

af_packet_属性错误:模块“socket”没有属性“AF_PACKET”

我正在使用Python构建一个包嗅探程序,但是我遇到了速度上的问题。出于某种原因,我认为socket没有正确导入,因为当我的程序运行时,我收到了以下消息:AttributeError: module 'socket' has no attribute 'AF_PACKET'我正在使用OS X,Pycharm是我的IDE,如果有帮助的话,我正在运行最新版本的Python。总之,这是我目前为止的完整计...

weixin_29534143的博客 1805

AF_INET和AF_PACKET区别

man 7 ip man 7 packet    Packet  sockets  are used to receive or send raw packets at the device driver (OSI Layer 2) level.  They allow the user to implement protocol modules in user space on top

安子自语 1万+

网络编程——原始套接字实现原理

目录 1. 基础知识  1.1、概述 1.2、链路层原始套接字  1.3、网络层原始套接字 2、原始套接字的实现 2.1  原始套接字报文收发流程 2.2链路层原始套接字的实现     2.2.1  套接字创建 2.2.2  报文接收 2.2.3  报文发送 2.2.4  其它  2.3  网络层原始套接字的实现 2.3.1  套接字创建 2.3.2  报文接收 2....

lixiangsheng2012的博客 1万+

原始套接字(各种协议的分析)

原始套接字1、原始套接字的概述什么是原始套接字(SOCK_RAW)1.1、UDP封包格式1.2、IP封包格式1.3、Ethernet封包格式1.3、TCP封包格式1.5、ICMP封包格式:ping1、创建原始套接字(socket)案例:数据包的分析链路层数据格式 1、原始套接字的概述 什么是原始套接字(SOCK_RAW) 1、一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心 2、可以接收本机网卡上所有的数据帧(数据包),对于监听网络流量和分析网络数据很有作用 3、开发人员可发

兰天禄的博客 6755

[Linux]-原始套接字

原始套接字指的是在传输层下面使用的套接字,之前使用的流式套接字和数据报套接字是工作在传输层的,并且在接受和发送的时候只能对数据部分进行操作,如果想要自己组建一个报文,那么就需要使用原始套接字。并且原始套接字还可以监听所有经过本机网卡的数据帧或者数据包。

levi的博客 2039

原始套接字使用

原始套接字

wlf_go的博客 2336

利用原始套接字的抓包原理

原始套接字抓包

weixin_43698578的博客 4267

原始套接字-SOCK_RAW

winsocket通信 原始套接字sock_raw ping程序实现

wkk的博客 7577

网络编程之原始套接字

原始套接字Raw Socket)是一种套接字类型,它允许用户绕过传输层(如 TCP、UDP)的常规处理,直接与网络层(IP 层)甚至链路层进行交互。在操作系统提供的套接字编程接口中,除了常见的流式套接字(,用于 TCP 协议)和数据报套接字(SOCK_DGRAM,用于 UDP 协议)外,原始套接字以SOCK_RAW标识。特殊应用层协议实现:某些特定的应用场景需要使用自定义的应用层协议,而原始套接字可以提供最灵活的方式来实现这些协议。

m0_74186706的博客 1171

原始套接字 IP_HDRINCL

 原始套接字可以访问ICMP和ICMP等协议包,可以读写内核不处理的IP数据包。可以创建自定义的IP数据包首部。一句话,使用原始套接字可以  编写基于IP协议的通讯程序。  1.创建原始套接字具体格式如下:int sockfd;sockfd = socktet(AF_INET, SOCK_RAW, IPPROTO_ICMP);第一个参数:协议族 AF_INET 代表TCP/IP协议第二个参数:SO

我们一直在努力 2万+

Linux--原始套接字

原始套接字可以用来自行组装IP数据包,然后将数据包发送到其他终端。必须在管理员权限下才能使用原始套接字。(总结自《UNIX网络编程 卷1:套接字联网API》)          (1)原始套接字的创建          int sockfd = socket (AF_INET, SOCK_RAW, IPPROTO_xxx);后面的xxx可以是ICMP,UDP,TCP等。          可

cscmaker的专栏 3757
上一篇: virtual虚函数的用法
下一篇: IP首部校验和的算法
xixihaha331
博客等级 码龄11年 29粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值