Python-TCP协议

TCP协议:


传输控制协议,是一种面向连接的,可靠的,基于字节流的传输通信协议,由IETF的RFC 793定义。
传输数据需要经过创建连接,数据传送,终止连接三步骤。TCP协议要建立相关的链接,才能发送数据。
这一过程可以通俗的说为“三次握手,四次挥手”
TCP三次握手:发生在创建连接的时候,形象点说:(第一次)客户端问服务端你准备好了吗,(第二次)服务端告诉客户端装备好了,并且问客户端你准备好了吗,(第三次)客户端说我准备好了。        

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,
等待对方回答SYN+ACK[1],并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以
防止产生错误的连接。
TCP四次挥手:发生在终止连接的时候,通俗点说:第一次,客户端告诉服务端我不会给你发数据了,第二次服务端告诉客户端我收到你发生的信息了,第三次服务端给客户端发生数据说我也不给你发了,第四次客户端给服务端说我知道了。
 

import optparse
from scapy.all import *

from scapy.layers.inet import TCP, IP


def scan(ip):
    try:
        dport = random.randint(1, 65535)
        packet = IP(dst=ip) / TCP(flags='A', dport=dport)
        respone = sr1(packet, timeout=1.0, verbose=0)#发送数据包
        if respone:
            if respone[TCP].flags == 'R' or respone[TCP].flags == 'RA':
                time.sleep(0.5)
                print(ip + ' ' + "is up")
            else:
                print(ip + ' ' + "is down")
        else:
            print(ip + ' ' + "is down")
    except:
        pass


def main():
    parser = optparse.OptionParser("Usage: %prog -i <ip address>")
    parser.add_option("-i", '--ip', type="string", dest="targetIP", help="specify the IP address")
    options, args = parser.parse_args()
    if '-' in options.targetIP:
        for i in range(int(options.targetIP.split('-')[0].split('.')[3]), int(options.targetIP.split('-')[1]) + 1):
            scan(options.targetIP.split('.')[0] + '.' + options.targetIP.split('.')[1] + '.' +
                 options.targetIP.split('.')[2] + '.' + str(i))
    else:
        scan(options.targetIP)


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/qq_48985780/article/details/121862545
今日推荐