套接字api-原始套接字

(1). 原始套接字创建
创建原始套接字需要超级用户权限

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

a. 原始套接字不存在端口号概念
对其调bind,会设置从其发出数据报源地址设为设置值.对其调connect,会设置目的IP
b. 原始套接字输出
connect的,sendto,sendmsg
已经connect的,write,writev,send

(2). IP_HDRINCL
IP_HDRINCL选项开启下,应用负责IP首部+数据构造
IP_HDRINCL选项未开启下,应用负责数据构造,IP首部由内核构造
IPV4首部校验和字段总是由内核计算并存储

IPV6不存在IP_HDRINCL选项,如需控制IPV6头部及其扩展头部一般通过套接字选项来交互.
(3). 原始套接字输入
a. 多数ICMP分组在内核处理完其中的ICMP消息后传递到原始套接字
b. 所有IGMP分组在内核完成处理其中的IGMP消息后传到原始套接字
c. 协议字段不明的IP数据报

数据报的协议字段需与原始套接字协议参数匹配
对已经bind的原始套接字,数据报的目的IP需与其绑定的IP一致
对已经connect的原始套接字,数据报的源IP需与其绑定的IP一致

递送的原始IPV4数据报含IP首部,递送的原始IPV6数据报仅含数据部分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值