ip协议和icmp协议学习
ip协议关键报文:
版本号(version)
首部长度(ihl) ip数据包头部的长度,常用长度20bytes
服务类型(tbs)
总长度(len) ip数据包的总长度
标识(id) 数据包编号
标志(flag) MF=1 表示后面的还有分片,MF=0 这是数据包的最后一个,DF=1 不能分片 DF=0 才能分片
源ip(src)
目的ip(dst)
片偏移(frag) 表示在分片后某片在原分组中的相对位置
生存时间(ttl)
协议(proto) 下一层协议 ,看完了就看下一个
首部校验和(checksum)
wireshark 抓包:
icmp的ping利用icmp协议实现请求和应答
重定向:改变对端发送数据的路径
图解:
icmp抓包
type代码:
0 应答
3 不可到达
8 请求
icmp扫描器
sr没有二层协议,srp是有二层协议
from scapy.all import *
ip=['192.168.85.{}'.format(str(i)) for i in range(128,140)]
ifcace='VMware Virtual Ethernet Adapter for VMnet8'
for dip in ip:
icmp_p=Ether()/IP(dst=dip)/ICMP(type=8)
p=srp(icmp_p,timeout=2,verbose=0,iface=ifcace)
for req,rep in p[0]:
if(rep[ICMP].type==0):
print('{}存活'.format(dip))
else:
print('{}不存活'.format(dip))
for req in p[1]:
print('{}不存活'.format(dip))
运行效果: