【TCP】相关机制:异常处理

简介: 【TCP】相关机制:异常处理

1 . 进程崩溃

Java 中的体现就是抛出异常,但没人 catch,最终异常到了 JVM 这里,JVM 进程就会直接噶了。看起来是崩溃,挺严重,实际上操作系统会进行善后

  • 当进程崩溃的时候,进程中的 PCB 就要被回收,PCB 中的文件描述符表里对应的所有文件也都会被系统自动关闭
  • 其中针对 Socket 文件,也就会触发正常的关闭流程(TCP 四次挥手)
    这样的情况看起来是异常,但实际上是一种正常情况,并不会有什么特殊处理,和正常关闭没有什么区别

2 . 主机关机(正常流程的关机)

正常流程点击关闭按钮的时候,此时操作系统就先干掉所有的进程(相当于第一种情况),在干的过程中,同样就会触发四次挥手

  1. 四次挥手非常快,四次挥手已经完成了,关机动作才完成
  2. 四次挥手没来得及挥完,关机就完成了
    B 收到 FIN 后,就会立即返回一个 ACK,在紧接着 B 发送 FIN 的时候,就可能:
  • A 已经关机完毕了,B 的 FIN 发过去之后,就不会有 ACK 了
  • B 就会触发超时重传(B 只知道 A 要和他说拜拜,但并不知道 A 是要关机了)
  • B 的超时重传会有上限,重传一定次数还没有响应,只能主动放弃连接(B 把保存的 A 的信息就删掉了)

3 . 主机掉电(直接拔电源)

1. 接收方掉电

  • A 给 B 发送的数据,就不会再有 ACK
  • A 触发超时重传,重传的数据当然还是没有响应
  • 反复多次之后,A 尝试重置连接(RST
  • 重置操作也没有 ACK,A 就会单方面释放连接(A 把保存的 B 的信息删除掉)

TCP 正常断开,就是双方各自删除自己的(协议离婚)

TCP 异常断开,就是只能删除自己的,不管对面了(起诉离婚,强制执行)


2. 发送方掉电

A 发着发着没声了,在 B 的视角看来,不知道 A 是噶了,还是 A 只是稍微缓缓,晚点再发。此时 B 就会给 A 发送一个数据包,问问:“A 你怎么了”

  • 这个包不携带业务数据,为了触发 ACK
  • 若发了探测报文之后,A 返回了 ACK,说明 A 只是先歇一会,没噶
  • 若发了探测报文之后,A 没有 ACK,设置连续多个探测报文都没有 ACK,就可以视为:A 已经噶了

就像在你打电话的时候,对面突然没声了,你就会:“喂?喂喂?喂喂喂?”问对方还在不在

这样的探测报文是周期性的,同时这个报文是用来探测对方“生死”的,也就把这样的报文称为“心跳包

  • 计算机中,非常广泛的使用“心跳包”的思想
  • TCP 内置了心跳包,由于 TCP 内置的心跳包周期比较长,“秒级-分钟级”,应用程序这一层通常也会自行实现一些心跳包,达到更快速的“保活机制

4 . 网线断开

和主机掉电是一样的,结合两种情况

  • A 的视角:A 收不到 ACK,从而就会:
  • 超时重传
  • 重置连接
  • 单方面释放
  • B 的视角:
  • A 突然没声了
  • 心跳包也不通
  • 重复多次心跳,判断对方不存在


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
监控 网络协议 UED
TCP协议中的两种保活机制详述
TCP的保活机制通过保活探针和用户配置的保活时间两种方式,为网络通讯提供了重要的保障。它帮助识别并处理那些因为网络不稳定或对端突然下线而变得无响应的连接,对于确保长时间运行的网络应用的稳定性和可靠性非常关键。合理配置和使用TCP保活机制,可以显著提升网络应用的鲁棒性和用户体验。
124 1
|
6月前
|
网络协议 应用服务中间件 网络性能优化
解析TCP /UDP协议的 socket 调用的过程
【6月更文挑战第2天】该文介绍了传输层的两种主要协议TCP和UDP的区别。TCP是面向连接、可靠的,提供顺序无错的数据传输,而UDP则是无连接、不可靠的,不保证数据顺序或不丢失。
|
7月前
|
自然语言处理 网络协议 Apache
RPC与TCP的区别
RPC与TCP的区别
186 0
|
网络协议 Unix Windows
确认应答机制与超时重发机制【TCP原理(笔记一)】
确认应答机制与超时重发机制【TCP原理(笔记一)】
462 0
|
存储 缓存 网络协议
Linux网络编程TCP粘包问题解析及解决方法
Linux网络编程TCP粘包问题解析及解决方法
150 0
|
缓存 网络协议 网络性能优化
TCP连接是干什么的?底层原理是什么?
TCP连接是干什么的?底层原理是什么?
323 0
|
网络协议 Python
Python网络编程——TCP服务端多线程
TCP服务端与多个客户端同时建立套接字,需要一个线程维护一个客户端。
19145 15
|
网络协议
TCP协议三次握手的执行流程,tcp的交互模式
TCP协议三次握手的执行流程,tcp的交互模式
168 0
|
网络协议 安全 Java
【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )
【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )
470 0
【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )
|
算法 网络协议 缓存
下一篇
DataWorks