Python Scapy中三层、二层各发送函数的差异咨询
Scapy三层与二层函数差异说明
三层(L3)函数差异
三层函数针对IP这类三层数据包,核心差异体现在是否接收响应及响应处理逻辑:
send():仅负责发送数据包,不监听任何响应。执行后仅输出发送的数据包数量,适合不需要获取回应的单向发送场景,比如发送测试用IP包。sr():发送数据包后会持续监听对应响应,返回一个二元组:(收到的有效响应包列表, 未收到响应的请求包列表),输出会显示总接收包数、有效回答数、剩余未响应请求数,适合需要批量处理请求-响应的场景。sr1():是sr()的简化版本,发送后仅返回第一个收到的有效响应包,丢弃后续所有响应,适合只需要单个回应的场景,比如模拟ping操作获取第一个回包。
二层(L2)函数差异
二层函数针对Ethernet这类二层数据包,逻辑和三层对应函数完全匹配,只是处理的数据包层级不同:
sendp():仅发送二层数据包,不监听响应,执行后仅输出发送数量,适合单向发送二层测试包的场景。srp():发送二层数据包后监听响应,返回(响应包列表, 未响应请求包列表)的二元组,输出显示接收和响应统计,适合二层交互场景,比如批量发起ARP请求。srp1():srp()的简化版,发送后仅返回第一个收到的二层响应包,适合单个二层请求场景,比如通过ARP查询获取目标设备MAC地址。
内容的提问来源于stack exchange,提问作者user19997696
相关产品推荐
相关产品推荐

