本地主机上的TCP套接口是否可以接收来自先前连接的数据包?如果是这样,那么任何假定这种情况不会发生的程序都会被破坏。特别是,任何假定localhost上的套接字永远不会从它应该连接的对等体之外的任何其他数据接收任何数据的程序都会中断。本地主机上的套接字是否可以接收来自先前连接的数据包?
编辑:我知道这不是假设发生。但是,我认为如果以前的套接字不在TIME_WAIT中足够长时间,它会发生可能的。我正在处理的应用程序要求此绝不会发生在本地主机上 —否则,它受制于任意代码执行漏洞。
本地主机上的TCP套接口是否可以接收来自先前连接的数据包?如果是这样,那么任何假定这种情况不会发生的程序都会被破坏。特别是,任何假定localhost上的套接字永远不会从它应该连接的对等体之外的任何其他数据接收任何数据的程序都会中断。本地主机上的套接字是否可以接收来自先前连接的数据包?
编辑:我知道这不是假设发生。但是,我认为如果以前的套接字不在TIME_WAIT中足够长时间,它会发生可能的。我正在处理的应用程序要求此绝不会发生在本地主机上 —否则,它受制于任意代码执行漏洞。
如果您还没有与TIME_WAIT
设置好惹的,并把它忘在它的默认值,它是两次最大段生存时间(MSL),并且因此不可能从段先前的连接要在网络中持续足够长的时间才能通过同一端口上的新套接字接收。
TCP将初始序列号随机化的事实是另一个防御。陈旧分段的序号很可能不适合当前的接收窗口。
无关和非规范性的参考。 “TCP套接字是基于连接的”这一事实并没有真正回答这个问题,即关于连接的问题。 – EJP
报价答案。一旦连接,它们只能发送/接收来自特定的远程机器。我不明白这怎么回答不了这个问题。 – GAntoine
您似乎并不了解TIME_WAIT的目的,以及为什么这是必要的,这里不是向您解释它的地方。只要说它是*必须提供*关于connecton完整性的保证,你只是断言是这种情况。这就是OP在他的问题中提到的原因。如果TIME_WAIT期间太短,则无法提供担保,您的回答和引用将是错误的。事实上,他们只是挥手致意。 – EJP