关闭

嵌入式 IPPROTO_IP

351人阅读 评论(0) 收藏 举报
分类:

对于socket(AF_INET, SOCK_RAW, IPPROTO_IP),其原型为

int socket (int domain, int type, intprotocol);

1参数protocol用来指明所要接收的协议包,如果是象IPPROTO_TCP(6)这种非0、非255的协议,当操作系统内核碰到ip头中protocol域和创建socket所使用参数protocol相同的IP包,就会交给这个rawsocket来处理,因此,一般来说,要想接收什么样的数据包,就应该在参数protocol里来指定相应的协议。当内核向此rawsocket交付数据包的时候,是包括整个IP头的,并且已经是重组好的IP包。

2如果protocol是IPPROTO_RAW(255),这时候,这个socket只能用来发送IP包,而不能接收任何的数据。发送的数据需要自己填充IP包头,并且自己计算校验和。

3 对于protocol为0(IPPROTO_IP)的rawsocket。用于接收任何的IP数据包。其中的校验和和协议分析由程序自己完成。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:978819次
    • 积分:17622
    • 等级:
    • 排名:第540名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论