【发布时间】:2015-08-04 17:12:37
【问题描述】:
我正在向服务器注入 ICMP“需要分段,设置 DF 位”,理想情况下,服务器应该开始发送具有 ICMP 中“下一跳 MTU”字段中提到的大小的数据包。但这不起作用。
这是服务器代码:
#!/usr/bin/env python
import socket # Import socket module
import time
import os
range= [1,2,3,4,5,6,7,8,9]
s = socket.socket() # Create a socket object
host = '192.168.0.17' # Get local machine name
port = 12349 # Reserve a port for your service.
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port)) # Bind to the port
rand_string = os.urandom(1600)
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
for i in range:
c.sendall(rand_string)
time.sleep(5)
c.close()
这是客户端代码:
#!/usr/bin/python # This is client.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = '192.168.0.17' # Get local machine name
port = 12348 # Reserve a port for your service.
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.connect((host, port))
while 1:
print s.recv(1024)
s.close()
Scapy 注入 ICMP:
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags= DF
frag= 0
ttl= 64
proto= ip
chksum= None
src= 192.168.0.45
dst= 192.168.0.17
\options\
###[ ICMP ]###
type= dest-unreach
code= fragmentation-needed
chksum= None
unused= 1300
Send(ip/icmp)
未使用的字段在wireshark 中显示为下一跳MTU。服务器是否足够聪明,可以在与客户端通信时检查是否未设置 DF 位,并且它仍在接收 ICMP“需要分段,设置 DF 位”消息?如果不是,那么为什么服务器不将其数据包大小从 1500 减少到 1300?
【问题讨论】:
标签: networking tcp scapy icmp