第13章 原始套接字

原始套接字允许在底层网络编程中执行自定义IP包、ICMP数据报的发送与接收,以及IP头部操作。ping命令利用原始套接字发送ICMP请求以检查网络连通性。洪水攻击,如ICMP、UDP和SYN攻击,利用大量请求使目标主机瘫痪。伪装IP攻击提高了洪水攻击的隐蔽性,而反射攻击则通过误导其他主机向目标发送ICMP响应来放大攻击效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

对于:

发送一个自定义的IP包。

发送ICMP数据报。

网卡的侦听模式,监听网络上的数据包。

伪装IP地址。

自定义协议的实现。

要解决这些问题,需要原始套接字。原始套接字主要应用在底层网络编程上。

原始套接字提供以下3种标准套接字不具备的功能。

使用原始套接字可以读/写ICMP、IGMP分组。例如ping程序,就使用原始套接字发送ICMP回显请求,并接受ICMP回显应答。用于多播的守护程序mrouted,同样适用原始套接字来发送和接收IGMP分组。

使用原始套接字可以读写特殊的IP数据报,内核不处理这些数据报的协议字段。大多数内核只处理1 (ICMP) 、2 (IGMP) 、3(TCP)和17 (UDP)的数据报。但协议字段还可能为其他值。例如, OSPF 路由协议就不适用TCP或者UDP,而直接使用IP,将IP数据报的协议字段设为89。因此,由于这些数据报包含内核完全不知道的协议字段,实现OSPF协议的gated程序必须使用原始套接字来读写

使用原始套接字,利用函数setsockopt()设置套接字选项,使用IP_HDRINGCL可以对IP头部进行操作,因此可以修改IP数据和IP层之上的各层数据,构造自己,的特定类型的TCP或者UDP的分组。

int rawsock = socket(AF_INET, SOCK_RAW, protocol);

protocol:

IPPROTO_IP: IP协议,接收或者发送IP数据包,包含IP头部。

IPPROTO_ICMP: ICMP协议,接收或者发送ICMP的数据包, IP的头部不需要处理。

IPPROTO_TCP: TCP协议,接收或者发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值