UnixSocketChap25RowSocket

25章 原始套接字

1、区别于TCP和UDP套接字

1>原始套接字读取ICMP和IGMP分组

2>原始套接字读取IP协议字段为1(ICMP)、2(IGMP)、6(TCP)和17(UDP)的特殊协议字段的数据包

3>原始套接字可以通过IP_HDRINCL选项来构造自己的IP头部,利用这个特性可以用来构造自己的TCP或UDP分组。也就是原始套接字包含了TCP和UDP套接字。

 

2、输出

1>如果IP_HDRINCL未设置,则内核写的数据起始地址指IP头部之后的第一个字节,内核将构造IP头部,并将它安在来自进程的数据之前,其中协议字段将会设置成用户在调用socket函数时所传的第三个参数。

2>如果IP_HDRINCL已经设置,则内核写的数据起始地址指向IP头部的第一个字节,用户所提供的数据大小值必须包括头部的字节数。进程构造除了以下两项以外的整个IP头部:(a)IP标示字段设为0,由内核生成;(b)IP头部的校验和由内核来计算和存储。

 

3、输入

1>接收到的TCP和UDP分组决不会传递给任何原始套接字,如果进程希望读取包含TCP或UDP分组的IP数据包,则必须在数据链路层读入。

2>内核处理完ICMP消息之后,会将分组传递给原始套接字

3>内核处理完IGMP消息之后,会将分组传递给原始套接字

3>内核收到不能识别的协议字段的IP数据包将会传递给原始套接字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值