首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三次握手后HTTP上的GET请求

三次握手后HTTP上的GET请求
EN

Stack Overflow用户
提问于 2016-06-28 21:14:16
回答 2查看 1.7K关注 0票数 0

我想做一个程序,可以与谷歌这样的服务器交互,并与他进行三次握手。之后,我想发送一个GET请求来查找页面的html部分。何时需要插入GET请求?谢谢。

这是我做的三次握手:

代码语言:javascript
运行
复制
sport = random.randint(1024,65535)

# SYN     
ip=IP(src='192.168.23.131',dst='81.17.241.142')
SYN=TCP(sport=sport,dport=443,flags='S',seq=1000)
SYNACK=sr1(ip/SYN)

# ACK          
ACK=TCP(sport=sport, dport=443, flags='A', seq=SYNACK.ack + 1, ack=SYNACK.seq + 1)
send(ip/ACK)
EN

回答 2

Stack Overflow用户

发布于 2016-06-29 05:33:40

三次握手在客户端和服务器之间建立连接。在HTTP协议下建立连接后,客户端将向其想要访问的资源提交请求。请记住,对于您发送的每个数据包,您将收到一个ACK数据包,并且对于您收到的每个数据包,您都应该发送一个ACK数据包。

票数 0
EN

Stack Overflow用户

发布于 2016-06-29 15:51:56

首先,您的ACK序列号应该是SYNACK.ack,而不是SYNACK.ack + 1。您可以在握手后直接发送请求(假设您想发送HTTP/1.1请求):

代码语言:javascript
运行
复制
sport = random.randint(1024,65535)
dport = 443
ip_src = '192.168.23.131'
ip_dst = '81.17.241.142'

# SYN     
ip=IP(src=ip_src, dst=ip_dst)
SYN=TCP(sport=sport, dport=dport, flags='S', seq=1000)
SYNACK=sr1(ip/SYN)

# ACK          
ACK=TCP(sport=sport, dport=dport, flags='A', seq=SYNACK.ack, ack=SYNACK.seq + 1)
send(ip/ACK)

# GET request
req =  "GET / HTTP/1.1\r\n"
req += "Host: " + ip_dst + "\r\n"
# Other headers ...
req += "\r\n"

DATA = TCP(sport=sport, dport=dport, flags='A', seq=SYNACK.ack, ack=SYNACK.seq + 1)/req
ANS = sr1(DATA) # this is probably going to be only an ACK segment, next one should be your HTTP response
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38077300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档