栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

基于TCP发现活跃主机

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于TCP发现活跃主机

一,TCP协议简介

        TCP(Tranmission Control Protocal,传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层控制协议。其特点是使用三次握手协议建立连接,当主动方发起SYN连接请求后,等待对方回答TCP的三次握手“SYN+ACK”,并最终对对方的SYN执行ACK进行确定。这种简历连接的方式可以防止错误的连接。

        TCP三次握手过程如下:

        第一步:客户机发送SYN(SEQ=x)数据包给服务器,进入SYN_SEND状态;

        第二步:服务器收到SYN数据包,回应一个SYN(SEQ=y)ACK(ACK=x+1)数据包,进入SYN_RECV状态;

        第三步:客户机收到服务器的SYN数据包,回应一个ACK(ACK=y+1)数据包,进入Established状态。三次握手完成,客户机和服务器成功建立连接,就可以开始传输数据。

 二,程序执行流程

        第一步:发送SYN数据包到达目标主机的80端口

        第二步:

                1,目标主机端口关闭情况下,会返回一个RST数据包,说明目标主机活跃。

                2,目标主机端口开放情况下,会返回SYN+ACK数据包,说明目标主机活跃,且80端口处于开放状态。

                3,目标主机关机情况下,不会收到任何回应。

三,程序编写

        查看TCP数据包参数信息:

                

         其中需要注意到的参数有sport,dport和flag。sport是源端口,dport是目的端口。而flags是标志位,可能的值包括SYN(建立连接),FIN(关闭连接),ACK(响应),PSH(有Data数据传输),RST(连接重置)。这里将flags设为“s”,表示SYN。

        程序代码如下:

        

from scapy.all import sr,IP,TCP

targetIP = "192.168.5.2"

targetPort = 80

ans,unans = sr(IP(dst=targetIP)/TCP(dport=targetPort,flags="S"),timeout=2)

for s,r in ans:
    print(r.sprintf("%IP.src% is alive"))

        执行结果如下:

        

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号