原始套接字和报文格式
一、原始套接字概述
原始套接字(SOCK_RAW)
概述:
1、一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心。
2、可以接收本机网卡上的所以数据帧(数据包),对于监听网络流量和分析网络数据很有作用。
3、开发人员可发送自己组装的数据包到网络上。
4、广泛应用与高级网络编程。
5、网络专家、黑客通常用此来编写奇特的网络程序。
三种套接字对比:
①流式套接字只能收发TCP协议的数据。
②数据包套接字只能收发UDP协议的数据。
③原始套接字可以收发
内核没有处理的数据包,因此要访问其他协议。
发送的数据需要使用,原始套接字(SOCK_RAW)
二、创建原始套接字
需要sudo运行
int socket(PF_PACKET, SOCK_RAW, protocol);
功能:创建链路层的原始套接字。
参数:
protocol:指定可以接收或发送的数据包类型。
ETH_P_IP:IPv4数据包。
ETH_P_ARP:ARP数据包。
ETH_P_ALL:任何协议类型的数据包。
返回值:
成功(>0):链路层套接字
失败(<0):出错
三、数据包分析
使用原始套接字进行编程开发时,首先要对不同的数据包进行学习,需要手动对IP、TCP、UDP、ICMP等包头进行组装或者拆解。
ubuntu中描述网络协议结构的文件如下:
在TCP/IP协议栈中的每一层为了能够正确解析出上层的数据包,从而使用一些**“协议类型”**来标记,详细如下图:
1、UDP封包格式
2、IP封包格式
3、Ethernet封包格式
4、TCP封包格式
5、ICMP封包格式
原始套接字和报文格式相关推荐
- 【Linux网络编程】原始套接字实例:MAC 头部报文分析
通过<Linux网络编程--原始套接字编程>得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? MAC 头部(有线 ...
- Linux原始套接字学习总结
Linux网络编程:原始套接字的魔力[上] http://blog.chinaunix.net/uid-23069658-id-3280895.html 基于原始套接字编程 在开发面向连 ...
- Raw_Socket原始套接字
一.创建raw socket的权限:只有root权限才能够创建. 二.raw socket的用途:主要有三个方面 (1):通过raw socket来接收发向本机的ICMP,IGMP协议包,或者用来发送 ...
- 002.ICMP--拼接ICMP包,实现简单Ping程序(原始套接字)
一.大致流程: 将ICMP头和时间数据设置好后,通过创建好的原始套接字socket发出去.目的主机计算效验和后会将数据原样返回,用当前时间和返回的数据结算时间差,计算出rtt. 二.数据结构: ICM ...
- 【Linux网络编程】原始套接字实例:发送 UDP 数据包
以太网报文格式: 详细的说明,请看<MAC 头部报文分析>. IP 报文格式: 详细的说明,请看<IP 数据报格式详解>. UDP 报文格式: 详细的说明,请看<UDP ...
- 原始套接字与sniffer
原始套接字与sniffer 2009-05-11 23:40:30 分类: LINUX 下面是原文件附的代码.我运行过,很好. 文件: source.rar 大小: 7KB 下载: 下载 今天从网上看 ...
- linux sock_raw原始套接字编程
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_R ...
- linux串口编程实例_Linux 网络编程——原始套接字实例:发送 UDP 数据包
以太网报文格式: IP 报文格式: UDP 报文格式: 校验和函数: /*******************************************************功能:校验和函数参 ...
- Teardrop原始套接字编程
目录 一.含义介绍 二.Teardrop代码编程 参考 一.含义介绍 1.什么是原始套接字 原始套接字的含义就是在传输层之下使用的套接字,它提供了一些 TCP 和 UDP 套接字无法提供的功能,即: ...
最新文章
- MySql 查询表字段数
- 聊聊Spring事务失效的12种场景,太坑人了
- Windows 比 Linux 好?我有 13 个反对理由
- Windows Phone 7范例游戏Platformer实战5——多点触控编程
- Linux下rm -rf 后恢复文件
- 飞机大战-控制飞机左右移动二
- Spark SQL(三)之视图与执行SQL
- 天正坐标标注显示不全_广联达导入CAD图纸不显示怎么办?
- 当点击ListView的列头时,对ListView排序
- 【Linux】面试常问的 25+ 个 Linux 命令
- nyoj936蚂蚁的难题(X)
- unity串口 连接多个串口崩溃_必学DB9串口+3种连接方式
- 文本文档怎么改格式html,文本文档怎么显示txt-文本文档怎么改格式
- 个人知识管理系统思源笔记
- Unity-瓦片地图详解
- 手机格式化的计算机原理,格式化不了怎么办 手机电脑方法大不同【图解】
- iframe中碰到的问题及解决方法
- woed未响应文件没保存,解决办法
- 【算法】Sunday算法(模式匹配)
- 1556_AURIX_TC275_复位系统控制单元