计算机网络(第十弹) --- TCP 常见的异常情况及心跳包机制

常见的异常情况主要有三种: 进程终止 / 机器重启 / 机器断电或网线断开.

1 进程终止

  进程创建的时候会创建一个 PCB 进程控制块, 不管进程是咋终止的, 本质上都会释放对应的 PCB 及当前对应的文件描述符; 一样会触发四次挥手断开连接; 进程终止并不代表连接就终止, 进程终止就相当于是调用了 socket.close() 而已.


2 机器重启

机器重启的时候其实先杀的是进程, 仍然是要进行四次挥手.


3 机器断电或网线断开

  当出现突发情况机器来不及进行任何操作时可能会出现下面的情况:

  • 断电的是接收方时, 此时发送端还在发送数据, 但是接收端不会再发送 ack 确认应答, 发送方也不会接收到 ack 确认应答, 于是就要超时重传; 重传几次后还是会重置连接, 复位报文段 RST, 如果还是不行就会放弃这个连接, 将连接对应的资源进行回收;
  • 断电的是发送方时, 这时候接收端就尝试接收数据但是接收不到, 接收方现在是既不能确定是发送方出现故障了还是发送方根本就没有发送, 这时候接收方会采取 心跳包机制, 每隔一段时间就向对方发送一个 PING 包, 期待对方回复一个 PONG 包; 如果 PING 包发送过去过了很久也没有收到 PONG, 并且重试几次也不行, 就会断定发送方已经挂掉了!!!

猜你喜欢

转载自blog.csdn.net/Onion_521257/article/details/129647987