国外做的比较好看的网站,制作网站网站,搜中文找不到公司网站是怎么回事,wordpress安装后空白页在网络连接中#xff0c;经常会出现一些意外情况#xff0c;导致TCP连接不能正常工作#xff0c;对于这些意外情况#xff0c;TCP内部有自己的解决方法
一.进程崩溃 在网络通讯时可能会出现进程突然崩溃的情况#xff0c;当进程崩溃后进程就没了#xff0c;就会导致进程… 在网络连接中经常会出现一些意外情况导致TCP连接不能正常工作对于这些意外情况TCP内部有自己的解决方法
一.进程崩溃 在网络通讯时可能会出现进程突然崩溃的情况当进程崩溃后进程就没了就会导致进程的进程控制块PCB也被摧毁而进程控制块中的一个属性”文件描述符表“也就被释放了文件描述符表中有Socket网卡文件将Socket网卡文件释放后相当于调用Socket.close(),于是崩溃的这一方就发出FIN结束报文段请求断开连接就进一步触发了四次挥手此时连接就正常释放了所以进程崩溃的处理和进程正常退出的处理没有区别 关于进程推荐看Java多进程(详细)关于四次挥手推荐看网络连接3次握手和4次挥手
二.主机关机(正常步骤的关机) 正常关机就会先尝试摧毁所有的进程强制终止进程就和上面说的进程崩溃的处理方式一样在触发四次挥手断开网络连接时主机正在关机所以可能四次挥手挥完了以后才关机也有可能没有挥完就关机了 但是四次挥手有没有挥完是没有问题的因为即使四次挥手没有挥完要关机的这个A设备的每个进程都会发送一个FIN结束报文段给网络连接的另一方B设备此时接收到FIN结束报文段的B设备就会返回一个ACK应答报文段并且发送一个FIN结束报文段但是A设备可能已经关机了所以不会返回ACK应答报文段给B设备B设备没有收到A设备返回的ACK应答报文段就会触发超时重传再进行多次重传都没有得到A设备返回的ACK应答报文段后B设备就会单方面的断开连接释放存储网络连接相关信息的内存
三.主机掉电拔电源没有任何反应的时间
根据掉电的一方正在发送数据还是接收数据分为两种情况 1.掉电的一方正在接收数据 假设设备A正在发送数据给设备B此时设备B突然断电。 设备A发送数据过去以后由于设备B已经断电所以并不会接收到设备A发送的数据也不会返回ACK应答报文段给 设备A设备A在等待一段时间后仍然没有收到设备B返回的ACK应答报文段就会触发超时重传关于超时重传推荐看出现丢包问题的情况以及解决方法在多次重传以后还是没有接收到设备B返回的ACK应答报文段就会触发复位报文RST尝试重置连接要是重置操作仍然失败此时设备A就会单方面的断开连接释放与设备B进行网络连接相关的内存数据 2.掉电的一方正在发送数据 假设设备A正在发送数据给设备B此时设备A突然断电。 设备B就处于了一个尴尬的状态因为设备B正在接收数据突然设备A就不发送数据了设备B也不知道设备A是一会发送数据还是一直都不发送数据了所以就会进入阻塞等待。 而这里就涉及到了一个”心跳包“的机制设备B虽然是接收方但也会周期性的发送一个不含任何业务数据(不含载荷)的TCP数据报给设备A,目的就是触发设备A返回ACK(应答报文段)给设备B监测设备A是否正在正常工作网络是否通畅 要是设备B发送TCP数据报给设备A以后没有收到设备A返回的ACK(应答报文段)就说明此时与设备A之间的网络连接已经出现问题了设备B就会单方面的断开与设备A之间的网络连接。 注意 虽然TCP中已经有心跳包的支持了但是还不够往往需要在应用层应用程序中重新实现心跳包TCP心跳包周期太长了是分钟级别的而在现在高并发的场景下分钟级是远远不够的需要秒级甚至毫秒级的心跳包可以在更短的时间内发现某个服务器出现问题
四.网线断开 相当于主机断电的升级版本假设在网线断开时设备A正在给设备B发送数据 1,设备A作为发送端设备A的处理方式就和主机掉电时”掉电的一方正在发送数据“的处理方式相同 2.设备B作为接收端设备B的处理方式就和主机掉电时”掉电的一方正在接收数据“的处理方式相同