客户端1.1.1.1发给服务器请求之后掉线了,服务器何去何从?


如果发送一个网络请求后,客户端离线,并且同一个IP被分配给另一台客户端,那么服务器响应会怎么做?

如题,假设客户端IP是1.1.1.1,我向2.2.2.2的客户端发送了一个请求。
然后我这台客户端断网,另一台客户端设置IP地址为1.1.1.1。
那么服务端在响应请求的时候会将响应发送给新的客户端吗?(假设两个客户端都是监听同一个端口)。如果发送了,会有安全隐患吗?
 
 
取决于使用的是TCP还是UDP传输协议,对于TCP没有丝毫影响,但是对于UDP却有安全隐患。不要忘记TCP是有连接(connection)的传输协议,而UDP是无连接(connectionless)的传输协议
 
TCP场景一:客户端1.1.1.1使用源端口10000发给服务器2.2.2.2的443端口的是SYN报文
 
  • 服务器眼里这是一个正常的建立连接报文,于是回复SYN+ACK。
  • 回复的报文到达另外一台客户端,IP =1.1.1.1。客户端一脸懵圈,自己本地的连接库里没有和2.2.2.2:443的连接。于是毫不犹豫发Reset报文,并将收到的报文丢弃。
 
TCP场景二:客户端1.1.1.1使用源端口10000发给服务器2.2.2.2的443端口的是用户请求报文
 
  • 服务器经过TCP、TLS、HTTP的层层检查,发现接收到的报文是一个合法报文,回复一个服务器响应报文。
  • 回复的报文到达另外一台客户端,IP =1.1.1.1。客户端一脸震惊,自己本地的连接库里没有和2.2.2.2:443的连接。于是毫不犹豫发Reset报文,并将收到的报文丢弃。
  • 如果客户端1.1.1.1 是一台可以捕获packet的机器。由于报文加密,即使捕获到报文也无法解密看到原始报文。
 
TCP场景三:客户端1.1.1.1使用源端口10000发给服务器2.2.2.2的443端口的是用户FIN报文
 
  • 服务器经过TCP检查,发现接收到的报文是一个合法报文,回复一个服务器ACK响应报文。
  • 回复的报文到达另外一台客户端,IP =1.1.1.1。客户端一脸无辜,自己本地的连接库里没有和2.2.2.2:443的连接。于是毫不犹豫发Reset报文,并将收到的报文丢弃。
 
UDP场景:客户端1.1.1.1使用源端口10000发给服务器2.2.2.2的53端口DNS查询报文
 
  • 服务器将DNS查询结果返回1.1.1.1:10000。
  • 报文到达客户端1.1.1.1,客户端某进程正在监听端口10000,报文被该进程接收并处理。
 
这个问题和伪造一个源IP地址,没有本质的差别。比如你想攻击1.1.1.1服务器,但是你不想直接攻击它,而是把攻击报文发到2.2.2.2,借助2.2.2.2来攻击1.1.1.1。就可以使用UDP伪造N个报文,然后2.2.2.2会将自己的回复报文全部倾泻到受害者1.1.1.1的身上。由于请求报文通常比较小,回复报文要大好多倍,攻击效果就放大了许多倍。

无服务器 90% 的情况都很糟糕

麻豆传媒的“女演员”大全

获取更多资讯请加入交流群


    协助本站SEO优化一下,谢谢!
    关键词不能为空
评 论
更换验证码