IPPROTO_IP , IPPROTO_RAW

对于socket(AF_INET, SOCK_RAW, IPPROTO_IP),其原型为 int socket (int domain, int type, int protocol); 1 参数protocol用来指明所要接收的协议包,如果是象IPPROTO_TCP(6)这种非0、非255的协议,当操作系统内核碰到ip头中protocol域和创建socket所使用参数protocol相同的IP包,就会交给这个raw socket来处理,因此,一般来说,要想接收什么样的数据包,就应该在参数protocol里来指定相应的协议。当内核向此raw socket交付数据包的时候,是包括整个IP头的,并且已经是重组好的IP包。 2 如果protocol是IPPROTO_RAW(255),这时候,这个socket只能用来发送IP包,而不能接收任何的数据。发送的数据需要自己填充IP包头,并且自己计算校验和。 3 对于protocol为0(IPPROTO_IP)的raw socket。用于接收任何的IP数据包。其中的校验和和协议分析由程序自己完成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 原始套接字 IP_HDRINCL 转

    原始套接字可以访问ICMP和ICMP等协议包,可以读写内核不处理的IP数据包。可以创建自定义的IP数据包首部。一句话,使用原始套接字可以   编写基于IP...

    战神伽罗
  • 使用socket实现TCP和UDP传输

    转载自:https://blog.csdn.net/timmiy/article/details/51946093

    战神伽罗
  • 如何解决在DLL的入口函数中创建或结束线程时卡死

    通常情况下并不会使用到DLL的MAIN函数,因为delphi的框架已经把Main函数隐藏起来

    战神伽罗
  • flume 1.8.0 开发之RPC

    flume开发基础可见:https://cloud.tencent.com/developer/article/1195082

    皮皮熊
  • 死磕Java并发:J.U.C之AQS简介

    Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略(死磕...

    程序猿DD
  • JUC之 底层核心AQS

    AQS,AbstractQueuedSynchronizer,即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock、Reentran...

    用户2141593
  • 【死磕Java并发】—–J.U.C之AQS:AQS简介

    Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略(【死...

    zhisheng
  • 【死磕Java并发】—–J.U.C之AQS:AQS简介

    Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略(【死...

    用户1655470
  • tcp服务端socket

    skylark
  • Python 实战TCP的服务端 - 胖子老板就是服务端

    client (肥仔白) -- "来包利群啦" --> server(胖子老板) client (肥仔白) <-- "给你啦" -- server(胖子老板)

    Devops海洋的渔夫

扫码关注云+社区

领取腾讯云代金券