zoukankan      html  css  js  c++  java
  • icmp_ping学习笔记

    1.用字符串指针做为发送缓冲区和接收缓冲区的指针;

    2.icmp报文类型结构体可自行定义,也可用<netinet/ip_icmp.h>中定义好的strcut icmp结构体;

    3.ip_hl*4表示ip头部长度;

    4.剥离头部的含义:让数据部分的指针指向数据部分,找到数据部分所在的内存地址;

    5.原始套接字的接收:对于某个协议的原始套接字,若不进行其他额外的操作,则此原始套接字会接收所有发向本机的数据部分为其协议类型的IP数据包,若调用connect(),则此套接字只接收与其连接的那个IP发来的IP数据报。

    6.原始套接字面向IP层,因此对于原始套接字来说没有端口这个概念,对于某个进程创建的原始套接字,无法保证其收到的数据是发向其所在的进程的,需要根据收到的报文包的某个字段与进程id相比较来判断此报文是否是发向其所在进程的;

    7.注意sin_addr是个结构体类型,不能将ip值以sockaddr_in.sin_addr=ip形式进行赋值,正确赋值方式:sockaddr_in.sin_addr.s_addr=ip;

    8.只有root身份才能创建原始套接字;

    9.调用库函数之后,要根据其返回值判断函数是否调用成功,若失败则输出错误信息并退出程序;

    10.char *p="icmp";sizeof(p)表示指针类型的长度而非“icmp“的字节数;

    11.vim下,每个输出后都要加一个 ;

  • 相关阅读:
    nginx配置ssl双向验证 nginx https ssl证书配置
    查看nginx cache命中率
    nginx 直接在配置文章中设置日志分割
    tomcat配置文件server.xml详解
    nagios服务端安装
    nagios客户端安装
    nagios原理及配置详解
    Nagios 监控系统架设全攻略
    nginx日志配置
    为MySQL选择合适的备份方式
  • 原文地址:https://www.cnblogs.com/adelep/p/6056272.html
Copyright © 2011-2022 走看看