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()
|