python模拟TCP与UDP发送数据包

这篇具有很好参考价值的文章主要介绍了python模拟TCP与UDP发送数据包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导语

在项目测试中需要发送指定内容的数据包到目标位置,并且需要发送的数量极大,真实环境无法满足测试需求,但是以Python为基础语言,结合Socket和Scrapy便可以支撑测试,其中Socket可以支持大量数据包由本机发送给目标机,scapy则可以模拟发生源IP发送数据包给目标及,但每秒发送的速率和大小不及Socket,两个模块各有长处相辅相成。

Socket和Scapy

涉及到网络服务就离不开Socket以及Socket编程,除此之外还有爬虫框架Scrapy,本文主要概述用以上两种方式进行数据包的传递,两者均可以按照TCP和UDP的方式传输,但TCP传输入使用字节流的方式,UDP是数据包,所以在使用两种传输方式时编码也有一些差异。

Socket

socket也称作“套接字”,套接字格式:socket(family,type[,protocal])用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。可以列举中国移动等。
Python 提供了两个基本的 socket 模块保存,第一个是 Socket,它提供了标准的 BSD Sockets API,第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发(TCP发送数据时,已建立好TCP连接,所以不需要指定地址。UDP是面向无连接的,每次发送要指定是发给谁)。
使用Internet协议进行通信,请使用AF_INET:TCP或UDP.这是迄今为止最常见的选择,。如果要在Internet协议层下面的最基本级别发送和接收消息,请使用PF_PACKET,例如,因为您自己正在实施协议,您的进程必须以root用户身份(或使用特殊功能)运行才能使用PF_PACKET。
我们选择连接方式的时候也可以选择TCP的SOCK_STREAM,他比UDP要可靠,但是相对应着开销会大。
python模拟TCP与UDP发送数据包

Scapy

scapy涉及了pf_packet套结字编程,路由以及面向对象设计等诸技术,它本身使用python编写。一般情况下接收报文需要遵从某一些协议,这样双方可以通过特定的粘包解包操作处理数据,很多情况自定义协议都是比较简单,先接收报文头,获取消息长度,再获取消息体,但是有很多协议写起来很麻烦,于是就用到scapy这个库,就可以每次获取一个报文,一般报文头信息都是类似的,都带有源地址,目标地址,消息长度。
Scrapy的官网地址是: link

Domo案例

Socket举例

需要引入的模块:import socket
python模拟TCP与UDP发送数据包

Scapy举例

需要引入的模块:from scapy.layers.inet import IP, UDP 和 from scapy.all import *,这样数据包就可以按照我们预先设定好的IP来发送数据包了。
python模拟TCP与UDP发送数据包

数据包乱码问题(python3的用法)

引入模块import importlib importlib.reload(sys)
如果还是发送的数据包乱码,就需要检查是否是发送的编码格式有问题,尝试.encode(‘GBK’)与.encode(‘UTF-8’)。
若修改了编码格式没有收到,那么就需要检查是否是发送的数据包过长了,当前发送数据包过长的是发不出去的。文章来源地址https://www.toymoban.com/news/detail-450898.html

到了这里,关于python模拟TCP与UDP发送数据包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python编写TCP和UDP测试工具

    通过python编写的TCPUDP协议的客户端和服务端,支持IPV4和IPV6的网络环境,同时新增加客户端ip和端口绑定功能。 client客户端 server服务端 python3.x和python2.x代码逻辑一致,只是部分函数写法不一样,只需要修改写法后同样可以在python2.x环境使用 1、python3.x的print()函数有括号,py

    2024年02月03日
    浏览(35)
  • 在Python中发送UDP数据包

    今天,我们将学习用户数据报协议(UDP),并了解如何使用 Python 编程发送 UDP 数据包。 用户数据报协议 (UDP) 和 TCP/IP 的运行方式不同。 UDP 是一种面向消息的协议,与 TCP 不同,TCP 是一种面向流的协议,可确保所有数据都按正确的顺序传输。 设置 UDP 套接字要容易一些,因为

    2024年04月11日
    浏览(25)
  • Java netty发送接收(TCP、UDP)

    最下方附项目地址 项目地址 https://gitee.com/xn-mg/netty_kafka

    2024年02月16日
    浏览(31)
  • TCP/IP UDP广播无法发送或接收

    在看《TCP/IP 网络编程》这本书的时候,看到广播那一节,跟着书上写代码,怎么写都不行,广播就是没法发送/接收,发送端一直在发送数据,接收端就是没有反应。 对了好几遍源码,没有问题。实在是愁人。 最后查了很多资料,确定是网卡的问题。 现在的计算机都是多网

    2024年02月04日
    浏览(36)
  • 【Python爬虫与数据分析】UDP/TCP通信协议

    目录 一、网络编程基础 二、UDP协议 三、TCP协议 数据编码与解码 str - bytes :encode编码,发送信息的时候用encode编码 bytes - str :decode解码,打印接收的信息用decode解码 socket socket套接字,是进程间通信的工具,也能不同主机间的网络通信 首先通过ip地址找到网络中对应的主机

    2024年02月12日
    浏览(34)
  • 基础网络测试(TCP/UDP)

    ping(IP连通性测试) 常用参数 -t:不停的ping指定的主机,直到停止。ctrl+c停止 -a:解析计算机NetBios名。 -n x:发送指定的数据包数。默认情况下,只发送四个数据包。 -l size:指定发送的数据包的大小。默认的情况下发送的数据包大小为32byte,也可以自己定义它的大小,但是

    2024年02月05日
    浏览(49)
  • TCP&UDP测试工具的使用

    1、在电脑上打开测试工具 2、该测试工具分为客户端和服务器两类,首先创建一个服务端 3、默认端口号点击确定 4、点击启动服务器,此时我们可以通过外部客户端与该服务器相连 5、在此,我们重新打开一次软件,模拟客户端并与服务器通信,打开以后,选择创建连接 

    2024年02月11日
    浏览(42)
  • nc测试tcp/udp连通性

    nc是netcat工具的命令,是一个很好用的网络工具。比如,可以用来端口扫描,文件传输等网络功能。实际命令是ncat。 参数说明 : -g网关 设置路由器跃程通信网关,最多可设置8个。 -G指向器数目 设置来源路由指向器,其数值为4的倍数。 -h 在线帮助。 -i延迟秒数 设置时间间

    2024年02月17日
    浏览(27)
  • Nginx代理TCP/UDP并测试

    nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层代理和负载均衡。 默认编译时该模块未编译进去,需要编译时添加 --with-stream,–with-stream_ssl_module,使其支持stream代理。 如果没有安装 Nginx , 可以使用源码编译安装的方式安装 Nginx , 并开启 stream 模块,编译

    2023年04月11日
    浏览(29)
  • android手机版tcp或者udp通讯测试工具,可以用于工业设备或者系统开发时间测试tcp或是udp连接通讯是否正常工作

    介绍 由于工作需要一款安卓的tcp udp测试工具,而市场里没有或者不好用,或者都是广告,现在个人开发者又不让发布应用了,小巧好用不收集用户信息的不收费没有广告的小工具只能自己用,哈哈。 这里分享给大家一款,tcp或者udp通讯测试工具(android),用于工业设备或者系

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包