Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 无限确认循环_Sockets_Tcp_Computer Science_Named Pipes_Computation Theory - Fatal编程技术网

Sockets 无限确认循环

Sockets 无限确认循环,sockets,tcp,computer-science,named-pipes,computation-theory,Sockets,Tcp,Computer Science,Named Pipes,Computation Theory,我想到了一个有趣的理论问题: 让我们假设程序A和程序B通过一些IPC连接,比如tcp套接字或命名管道。程序A向程序B发送一些数据,根据数据传递的成功与否,A和B都会执行一些操作。然而,B只有在确定A已经得到交货确认的情况下才能进行操作。所以我们找到了3个连接: A->B[数据传输] B->A[交货确认] A->B[获得交货确认的确认] 这可能看起来很奇怪,但目标是在双方都知道数据已被传输之前,不要对A或B执行任何操作 这里有个问题,因为第二个连接是为了确认第一个连接的成功。第三个是确认第二个,但

我想到了一个有趣的理论问题:

让我们假设程序A和程序B通过一些IPC连接,比如tcp套接字或命名管道。程序A向程序B发送一些数据,根据数据传递的成功与否,A和B都会执行一些操作。然而,B只有在确定A已经得到交货确认的情况下才能进行操作。所以我们找到了3个连接: A->B[数据传输] B->A[交货确认] A->B[获得交货确认的确认]

这可能看起来很奇怪,但目标是在双方都知道数据已被传输之前,不要对A或B执行任何操作


这里有个问题,因为第二个连接是为了确认第一个连接的成功。第三个是确认第二个,但事实上,不能保证连接2和3不会失败,在这种情况下,我们会陷入无限的确认循环。有什么CS理论可以解决这个问题吗?

如果我没看错你的问题,这个问题叫做“”。问题的要点是,发送消息或确认的最后一个实体对其刚刚发送的内容的状态一无所知,依此类推。

很简单:如果在某个时间段内未得到确认,则假定数据丢失,然后重新传输。无环路,因为A将终止原始传输序列并启动新的传输序列。然后在某个时刻,你终止了重传,假设B是无法到达的,你只是爬回床上呜咽.CS理论,这是超时。就像非接触式电子支付卡…这不是关于无响应,而是关于了解相互状态而不存在再次连接失败的风险,所以不,这里不适合超时