Помогите получить ответ (со страничкой корневой или с сообщением об ошибки) от http-сервера в ScaPy.
Делаю рукопожатие, затем GET-запрос к http-серверу
syn = ip/TCP(sport=sp,dport=80,seq=sq,flags='S')
syn_ack = sr1(syn,timeout=1,verbose=0)
ack = ip/TCP(sport=sp,dport=80,seq=syn_ack.ack+1,ack=syn_ack.seq+1,flags='A')
send(ack,verbose=0)
data = 'GET / HTTP/1.1\r\nHost: {}\r\n\r\n'.format(server_ip)
psh_ack = ip/TCP(sport=sp,dport=80,flags='PA')/data
res,unans = sr(psh_ack,verbose=0,timeout=1)
Логи на интерфесе сервера:
192.168.0.2.5665 > 192.168.0.1.80: Flags [S], seq 60147, win 8192, length 0
192.168.0.1.80 > 192.168.0.2.5665: Flags [S.], seq 837596127, ack 60148, win 29200
192.168.0.2.5665 > 192.168.0.1.80: Flags [.], ack 1, win 8192, length 0
192.168.0.2.5665 > 192.168.0.1.80: Flags [P.], seq 4294907149:4294907188, ack 3457371169, win 8192, length 39: HTTP: GET / HTTP/1.1
192.168.0.1.80 > 192.168.0.2.5665: Flags [.], ack 1, win 29200, length 0
... далее FIN от http-сервера ...
Сервер рабочий и в telnet отвечает. На последние '\r\n' кидает клиенту страницу:
192.168.0.2.56054 > 192.168.0.1.80: Flags [P.], seq 21:23, ack 1, win 58, ... length 2: HTTP
192.168.0.1.80 > 192.168.0.2.56054: Flags [.], ack 23, win 227
192.168.0.1.80 > 192.168.0.2.56054: Flags [P.], seq 1:1051, ack 23, win 227, ... length 1050: HTTP: HTTP/1.1 200 OK
192.168.0.2.56054 > 192.168.0.1.80: Flags [.], ack 1051, win 62, ...