原始套接字和报文格式

一、原始套接字概述

原始套接字(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封包格式
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值