原始套接口(RAW SOCKET)

原始套接口(RAW SOCKET)允许读写ICMP、IGMP和特殊IPv4数据报,可以自定义IP头部,用于创建如Ping和Traceroute等程序。创建RAW SOCKET涉及设置SOCK_RAW、IP_HDRINCL选项,并可能绑定IP。输出时,用户数据可能包括IP头,内核负责分片。输入时,满足特定条件的数据报会被转发给RAW SOCKET。 Ping程序通过发送ICMP请求并接收回显响应来测量延迟。
摘要由CSDN通过智能技术生成

原始套接口(RAW SOCKET)

 

原始套接口提供三种TCP和UDP套接口不提供的功能:

1). 可以读写ICMPv4, IGMPv4和ICMPv6分组. 例如Ping和Traceroute程序就是利用ICMP分组

2). 可以读写特殊的IPv4数据报, 内核不处理这些数据报IPv4协议字段

3). 使用IP_HDRINCL选项可以构造自己IPv4头部. 可以用这个特性来构造自己的TCP和UTP分组

 

原始套接口创建

1). 设置第二个参数为SOCK_RAW

这个IPPROTO_XXX可以在<netinet/in.h>找到定义, 例如可以为IPPROTO_ICMP,IPPROTO_IP, IPPRPTO_TCP和IPPRPTO_UDP等

2). 可以设置IP_HDRINCL选项

3). 可以调用bind绑定本地IP

4). 可以调用connect绑定目的IP

 

原始套接口输出

1). 通过sendto或sendmsg到目的IP, 或write, writev或send到connect的原始套接口

2). 如果IP_HDRINCL没有设置, 用户数据从IP头之后开始

3). 如果IP_HDRINCL设置, 用户数据必须包括IP头, 并且要自己设置IPv4标示字段和校验和之外的所有字段

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值