ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

原始套接字

2020-08-18 15:31:47  阅读:238  来源: 互联网

标签:封包 IP 原始 主机 IPPROTO 接字 ICMP


使用原始套接字

  • 原始套接字是允许访问底层传输协议的一种套接字类型。使用原始套接字,需要知道许多下层协议的知识。
  • 原始套接字有两种类型
    • 在IP头中使用预定义的协议,如ICMP
    • 在IP头中使用自定义的协议
  • 创建原始套接字的函数也是socket或WSAScocket,只不过要将套接字的类型 指定为SOCK_RAW
SOCKET sEaw=::socket(AF_INET,SOCK_RAW,IPPROTO_ICMP)
  • 创建原始套接字时,socket函数的第三个参数protocol的值将成为IP头协议域的值。IPPROTO_ICMP指定要使用ICMP
  • 原始套接字提供管理原始下层传输的能力,他们可能会被恶意利用,这是一个安全问题,仅Administrator组的成员能够创建SOCK_RAW类型的套接字。任何人都可以在NT下创建原始套接字,但是没有Administrator权限的人不能用它做任何事,因为bind函数会失败。
  • 在上面套接字创建代码中,可以使用ICMP也可以使用IGMP、UDP、IP或者原始IP,对应的宏分别是IPPROTO_IGMP、IPPROTO_UDP、IPPROTO_IP或IPPROTO_RAW。其中IPPROTO_UDP、IPPROTO_IP、IPPROTO_RAW需要有效的IP_HDRINCL选项。
  • 使用恰当的协议标志创建原始套接字之后,便可以在发送和接收diao调用中使用此套接字句柄了。无论IP_HDRINCL选项是否设置,在原始套接字上接收到的数据都将包含IP头

ICMP编程

  • 在网络层除了IP之外,还有一些控制协议,有ICMP、ARP、DHCP等。这里主要讲述ICMP,以及如何使用原始套接字编写ICMP程序。

  • ICMP校验和的计算

    • 互联网上的操作由路由器仅仅监控者,当有异常发生。具体事件通过ICMP(网间控制报文协议)报道。如目的不可达、TTL超时等。ICMP也用来测试互联网。
    • 每个ICMP消息都装在IP封包中,所以它使用IP寻址。ICMP消息格式。
  • 第一个域是ICMP的消息类型,通常可以分为请求消息和错误报告消息两类。第二个域是代码域,进一步定义了请求或消息的类型。第三个域是checksum域,是16位的ICMP头的补足校验和,它提供了错误检测。计算校验和时要包含ICMP头和它实际数据。

  • ICMP的内容取决于ICMP类型和代码,如下所示为常用ICMP类型和功能码,ICMP封包的类型和功能码规定了ICMP头后面的内容。
    类型|询问/错误类型|代码|描述
    ---|:-------

    标签:封包,IP,原始,主机,IPPROTO,接字,ICMP
    来源: https://www.cnblogs.com/binarysystemloophole/p/13523798.html

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有