当前位置: 首页 > news >正文

上海网站设计找哪家昆明网站词排名优化

上海网站设计找哪家,昆明网站词排名优化,温岭市建设局网站审批公示,深圳网站建设 推荐xtdseo1、CMP协议简介 ICMP#xff08;Internet Control Message Protocol#xff09;是一种网络协议#xff0c;它用于在IP网络中传递控制信息和错误消息。它通常与IP协议一起使用#xff0c;IP协议负责发送和路由数据包#xff0c;而ICMP协议负责检查网络是否可达、路由是否正…1、CMP协议简介 ICMPInternet Control Message Protocol是一种网络协议它用于在IP网络中传递控制信息和错误消息。它通常与IP协议一起使用IP协议负责发送和路由数据包而ICMP协议负责检查网络是否可达、路由是否正确、主机是否可达等网络状态的反馈信息。 2、ICMP协议的主要功能 发现网络错误当一个数据包在传输过程中出现错误时ICMP协议通过向发送方发送错误通知来发现网络错误。 检查网络是否可达通过发送ICMP ECHO请求并接收ICMP ECHO回复消息可以确定目标主机是否可达。 发现主机错误当一个主机无法正常工作时ICMP协议通过向发送方发送错误通知来发现主机错误。 发送路由信息ICMP协议可以向其他主机发送路由信息以帮助它们在网络中找到合适的路由。 3、CMP报文格式 3.1、 ICMP报文以太网数据帧格式  ICMP报文属于IP子协议协议号为1。 3.2、 ICMP首部格式 其中各字段的含义如下 类型Type指定 ICMP 报文的类型占 1 个字节。常见类型有回显应答Echo Reply0、回显请求Echo Request8等。 代码Code指定 ICMP 报文的代码占 1 个字节。用于进一步描述 ICMP 报文与 Type 字段组合使用。 校验和Checksum校验和用于检查 ICMP 报文是否有损坏占 2 个字节。 由类型决定的4字节根据类型不一样4字节表达的意思不一样。 数据Data数据可变长度。可以是任意数据长度由具体的 ICMP 报文类型和代码决定。   3.3、 ICMP报文类型列表 常见的ICMP报文类型 Echo Reply回显应答用于回复Echo Request回显请求报文通常用于测试网络连接是否正常。 Destination Unreachable目的地不可达用于指示主机或路由器无法到达目的地或某个网络服务不可用。 Source Quench源站抑制当接收方无法处理所有传入的数据报时源站抑制报文会发送到发送方以通知其减慢数据传输速度。 Redirect重定向用于通知发送方其正在使用的路由不再是最佳路由建议使用另一条路由。 Echo Request回显请求用于测试测试网络连接是否正常。 Time Exceeded时间超时用于指示一个数据包在传输过程中被丢弃原因是数据包在经过路由器时超过了其生存时间。 Parameter Problem参数问题用于指示数据包头部中存在错误的参数或选项导致数据包无法被识别或处理。 Timestamp Request/Reply时间戳请求/应答用于向另一个主机请求当前时间戳并将其返回给请求方。 Information Request/Reply信息请求/应答用于向另一个主机请求特定信息并将其返回给请求方。 Address Mask Request/Reply地址掩码请求/应答用于请求另一个主机的网络掩码并将其返回给请求方。 4、ICMP校验和计算 ICMP校验和计算的校验数据为整个ICMP数据包。 4.1 、ICMP校验和计算 a.校验数据以16bit为单位进行累加求和校验数据需为偶数字节奇数字节末尾填充0变为偶数字节。 b.如果累加和超过16bit产生了进位需将高16bit和低16bit累加求和。 c.循环步骤2直至未产生进位为止。 d.累加和取反得到校验和。 4.2、 ICMP校验和验证 a.校验数据16bit为单位进行累加求和校验数据需为偶数字节奇数字节末尾填充0变为偶数字节。 b.如果累加和超过16bit产生了进位需将高16bit和低16bit累加求和。 c.循环步骤2直至未产生进位为止。 d.累加和和校验和相加得到0xffff校验成功否则失败。 5、ICMP编程示例 5.1、发送回显请求 #include stdio.h #include stdlib.h #include string.h #include unistd.h #include stdint.h #include sys/socket.h #include netinet/in.h #include netinet/ip.h #include netinet/ip_icmp.h #include arpa/inet.h#define PACKET_SIZE 4096 #define ICMP_PACKET_SIZE 28uint16_t checksum(uint16_t *buf, int len) {unsigned long sum 0;while (len 1) {sum *buf;len - 2;}if (len 1) {sum *(unsigned char *)buf;}sum (sum 16) (sum 0xffff);sum (sum 16);return ~sum; }int main(int argc, char *argv[]) {if (argc ! 2) {printf(Usage: %s destination_ip\n, argv[0]);return -1;}char buf[PACKET_SIZE] {0};memset(buf, 0, sizeof(buf));int sockfd socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);if (sockfd 0) {perror(socket error);return -1;}struct sockaddr_in dest_addr;memset(dest_addr, 0, sizeof(dest_addr));dest_addr.sin_family AF_INET;dest_addr.sin_addr.s_addr inet_addr(argv[1]);uint16_t seq 0;while(1) {memset(buf, 0, PACKET_SIZE);struct icmp *icmp_packet (struct icmp *)buf;icmp_packet-icmp_type ICMP_ECHO;icmp_packet-icmp_code 0;icmp_packet-icmp_id 0;icmp_packet-icmp_seq seq;memset(icmp_packet-icmp_data, 0, ICMP_PACKET_SIZE);icmp_packet-icmp_cksum 0;icmp_packet-icmp_cksum checksum((uint16_t *)icmp_packet, ICMP_PACKET_SIZE);printf(icmp_packet size:%lu\n, sizeof(struct icmp));int sent_bytes sendto(sockfd, buf, sizeof(struct icmp), 0, (struct sockaddr *)dest_addr, sizeof(dest_addr));if (sent_bytes 0) {perror(sendto error);break;}printf(sent icmp request:%d bytes to:%s\n, sent_bytes, argv[1]);int recv_bytes recv(sockfd, buf, PACKET_SIZE, 0);if (recv_bytes 0) {perror(recv);break;}struct iphdr *ip_packet (struct iphdr *)buf;struct icmp *icmp_reply (struct icmp *)(buf (ip_packet-ihl 2));printf(recv icmp reply:%d from:%s\n, recv_bytes, inet_ntoa(dest_addr.sin_addr));printf(icmp type:%d,code:%d\n, icmp_reply-icmp_type, icmp_reply-icmp_code);sleep(1);}close(sockfd);return 0; } 5.2、发送回显应答 #include stdio.h #include string.h #include stdint.h #include stdbool.h #include unistd.h #include errno.h #include sys/types.h #include sys/socket.h #include netinet/ip.h #include netinet/ip_icmp.h #include linux/in.h #include arpa/inet.h#define IP_HDRLEN (20) #define PACKET_SIZE (4096)uint16_t checksum(uint16_t *buf, int len) {unsigned long sum 0;while (len 1) {sum *buf;len - 2;}if (len 1) {sum *(unsigned char *)buf;}sum (sum 16) (sum 0xffff);sum (sum 16);return ~sum; }uint16_t checksum_nofold(uint16_t *buf, int len) {unsigned long sum 0;while (len 1) {sum *buf;len - 2;}if (len 1) {sum *(unsigned char *)buf;}sum (sum 16) (sum 0xffff);sum (sum 16);return sum; }bool parse_pack(char *buf, uint32_t len) {struct icmp *icmp_packet (struct icmp *)buf;uint16_t csum checksum_nofold((uint16_t *)buf, len);printf(icmp csum:0x%04x\n, csum);return csum 0xffff; }int main(int argc , char *argv[]) {int sockfd;int ret;char send_buf[PACKET_SIZE] {0};char recv_buf[PACKET_SIZE] {0};sockfd socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);if (sockfd -1) {perror(socket error);return -1;}while(1) {struct sockaddr_in peer;socklen_t peerlen sizeof(peer);memset(recv_buf, 0, PACKET_SIZE);ret recvfrom(sockfd, recv_buf, PACKET_SIZE, 0, (struct sockaddr *)peer, peerlen);if (ret 0) {printf(ret:%d, errno:%d(%s)\n, ret, errno, strerror(errno));} else {printf(recv len:%d, peer src:port-%s:%d\n, ret, inet_ntoa(peer.sin_addr), ntohs(peer.sin_port));bool bret parse_pack(recv_buf, ret);if (bret) {struct icmp *recv_icmp (struct icmp *)(recv_buf sizeof(struct iphdr));memset(send_buf, 0, PACKET_SIZE);struct icmp *icmp_packet (struct icmp *)send_buf;icmp_packet-icmp_type ICMP_ECHOREPLY;icmp_packet-icmp_code 0;icmp_packet-icmp_id 0;icmp_packet-icmp_seq recv_icmp-icmp_seq;memset(icmp_packet-icmp_data, 0, sizeof(struct icmp));icmp_packet-icmp_cksum 0;icmp_packet-icmp_cksum checksum((uint16_t *)icmp_packet, sizeof(struct icmp));int sent_bytes sendto(sockfd, send_buf, sizeof(struct icmp), 0, (struct sockaddr *)peer, sizeof(peer));if (sent_bytes 0) {perror(sendto error);break;}}}}close(sockfd);return 0; }
http://www.pierceye.com/news/83287/

相关文章:

  • 网站做商标在那类网络美工是干啥的
  • 沌口网站建设网站推广如何做的
  • 淘客app网站是怎么做的c 做网站 知乎
  • 网站套模板教程轻创优选地推app
  • 长春建设工程信息网站广西建设工程造价管理协会网站
  • 加盟网站制作公司wordpress 国内镜像
  • 苏州网站排名方案怎么做自己的快递查询网站
  • python可以做网站后台吗免费域名注册平台永久
  • 昆明网站建设首选才力北京定制网络营销推广
  • 网站盈利了湖北网站建设xiduyun
  • 佛山外贸网站建设行情关键词搜索指数
  • 织梦调用网站名称两学一做 知识竞赛网站
  • 途牛网站建设方案电商网络销售是做什么
  • 珠海建网站设计asp.net做的小网站
  • 做网站怎么赚钱广告杭州网站改版
  • 江门网站推广多少钱网站代码字体变大
  • 全定制网站开发湖北省住建厅网站官网
  • 建设科普网站的意义盘锦兴隆台住房和城乡建设网站
  • 竞价网站策划网站后台数据库下载
  • 网页设计怎么建站点莱芜求职信息查询
  • 网站优化 月付费潍坊网站制作发
  • 网站目录做跳转做网站前期构架图
  • 徐州企业网站推广wordpress菜单 自定义菜单
  • 用iis做网站福建做网站公司排名
  • 霸州建设局网站九天利建公司简介
  • 找做课件的网站专门做简历的网站有哪些
  • 中国空间站合作的17个国家网站设计师工资一般多少
  • 制作网站后台怎样做易支付网站
  • 怎么制造网站抖音里做我女朋友网站
  • 我做的网站打开慢怎么处理网站后台编辑