2015-11-22 2 views
0

Я посылаю этот пользовательский пакет через TCP сокетКак отправить один и тот же (дублированный) TCP пакет в питоне

pkt = IP(len=16384, src='192.168.240.243', dst=ip, 
     id=RandShort(), ttl=64)/TCP(sport=5000, 
     dport=5000, flags="S", window=200, 
     options=[('MSS', 1460), ('WScale', 2)])/CustomLayer(type=1, update=2)/"SENT" 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
try:  
    s.connect((ip, 5000)) 
except socket.error: 
    print 'User not connected' 

spkt = str(pkt) 
s.send(spkt) 

пакет правильно отправлен и получен, но я не могу отправить более чем один. Если я попробую, например, включить это через некоторое время (i < 10), будет принят только один пакет, остальные будут отмечены как [TCP Retransmission] в Wireshark.

Как я могу отправить пакет более одного раза в один и тот же сокет?

+1

У меня нет опыта, но я думаю, вам нужно будет изменить атрибут id этого пакета, чтобы нижняя кладка IP-стека подумала, что это другой пакет. – meiamsome

ответ

1

Ваши пакеты имеют одинаковый идентификатор, поэтому они являются одинаковыми пакетами и поэтому отбрасываются как дубликаты.

+0

Спасибо. Однако я думаю, что переключусь на протокол UDP. – brid