技术指南

首页 / 技术指南

技术指南

IP地址的改变会重置TCP连接吗?

2020-02-10 21:54:34   来源:   点击:
  网络通信时一般需要获取对方设备的IP地址,但IP地址在连接过程中发生变化怎么办?
 
  在下不是计算机科班出生,最近学习JAVA的socket编程时突然想到这个问题,以前本科学的课中提到ip地址是DHCP协议动态分配的。
 
  
 
  这个问题很有技术含量,具有代表性,值得好好地讨论。
 
  IP地址的改变,无非就是手动配置改变、自动配置改变。通信好好的,没有哪个用户会手动修改自己的IP。但是,如果用户非要修改IP,那也没有什么,在修改成功之前,操作系统会将当前的连接Reset掉,然后再修改IP,修改完成再重新连接。
 
  自动配置
 
  这里的自动配置是指通过DHCP动态获得的IP,IP地址是租来的,一般租期为8个小时,在租期届满之前,一直可以使用。为了保持通信的畅通,一般客户端在租期还剩余一半的时候,就开始和DHCP服务器进行租期延长对话,正常情况下都是续租成功的。只要续租成功,IP地址都是可以正常使用的。
 
  当然,如果DHCP服务器在续租的时候,将该IP保留了不再续租,那么用户续租将不会成功,客户端会继续使用原有的IP继续通信。然后在IP租约到期之前再次续租,如果依然无法成功,将放弃原有IP,接收DHCP服务器全新IP的分配。既然IP地址发生了变动,TCP连接肯定要Reset,然后建立全新的TCP连接。
 
  无线客户端
 
  无线客户端在移动的过程中,从一个AP解绑,然后绑定到另一个AP,可能会造成原有的IP无法继续使用,必须接收新AP分配的全新IP,这样也会造成TCP连接的Reset。
 
  即使老的AP与新的AP分配的IP网段完全一致,分给客户端的IP地址完全一样,客户端的IP地址虽然没有变化,但是由于绑定的AP变了,专业的属于叫“锚点位置变了”,与互联网的通信由于NAT的条目不存在,造成通信的Reset。
 
  通过以上的介绍,会发现如果要保持一个TCP连接不断,需要同时满足两个条件:
 
  主机修改IP软件不变
 
  主机在互联网上的锚点(Anchor Point)也要不变
 
  只要满足了以上两个条件,无论移动客户端移动到哪里,无论是使用WiFi,还是使用移动4G网络,此结论统统成立!
 
  什么是锚点?
 
  通俗地说,锚点就是这台移动客户端呈现在互联网上的“公网IP + 端口号”的组合,服务器其实一直以为是在和锚点在通信,只要锚点不变,服务器端不会Reset连接。
 
  主机IP不变
 
  主机IP不变,主机不会吃饱了撑的,去Reset当前的连接。只有发生了改变,则会Reset当前连接。
 
  如何实现呢?
 
  主机IP不变还是很好实现的,主机漫游时一般会保留自己当前的IP,就让你保留好了。无线网络说既然您喜欢,那您就接着用。但是,非常不幸的是,主机已经移动到另外的锚点了,至少公网IP肯定与原有的不一样了。
 
  解决方案
 
  在新锚点与老锚点之间建立一个隧道,将漫游的主机流量全部隧道传输到老的锚点,老锚点再将隧道里的流量提取出来,使用老锚点的关键信息(公网IP + 端口号)替换掉主机的私有IP + 端口号,最后将流量发到互联网上,并最终到达服务器。

上一篇:局域网ip地址不够用怎么解决?
下一篇:最后一页

关闭
18076763811
动态IP