如何使用raw socket发送UDP报文

阅读: 评论:0

如何使用raw socket发送UDP报文

如何使用raw socket发送UDP报文

使用raw socket发送报文比接收报文要复杂一些,因为需要在程序中构建数据链路层、网络层和传输层的报头,本文以发送UDP报文为例说明在使用raw socket时如何构建数据链路层、网络层和传输层的报头并发送报文,文中给出了完整的源程序;本文假定读者掌握了基本的IPv4下的socket编程。

1. 前言

  • 阅读本文前可以考虑先阅读一下我的另外一篇文章《Linux下如何在数据链路层接收原始数据包》,那篇文章中已经介绍过的一些概念,本文中将不再赘述;下面仅罗列一些曾经在《Linux下如何在数据链路层接收原始数据包》介绍过的技术要点;
  • 发送数据时打开raw_socket
    sock_raw = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);
    if (sock_raw == -1)printf("error in socket");
    
  • 以太网报头结构(定义在头文件linux/if_ether.h中)
    struct ethhdr {unsigned char  h_dest[ETH_ALEN];    /* destination eth addr  */unsigned char  h_source[ETH_ALEN];  /* 

本文发布于:2024-02-04 12:01:38,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170706729555380.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报文   如何使用   socket   raw   UDP
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23