前言:

  TCP断开连接的四次握手中, 主动关闭连接的一方的TIME_WAIT状态尤为重要。

1:TCP连接的三次握手和断开的四次挥手

2:由上图可知

  在主动关闭的一方, 会经历TIME_WAIT状态, 而TIME_WAIT的持续时间是2MSL, 在这期间, 系统不会建立与此连接相同的连接(Sip:Sport and Dip:Dport),TIME_WAIT主要有两个作用。

2.1 实现可靠的四次挥手断开连接

  首先, 链路状态是不可靠的, 但是TCP之所以在不可靠的链路上称为可靠协议是因为他比较全面的报文确认机制, 假设没有TIME_WAIT状态, client收到对端的FIN分节发送ACK分节之后就变为了CLOSED状态, 因为链路的不可靠, 这个ACK分节可能会丢失, 一旦超时服务器端就会重新发送FIN给client, 但此时的client已经CLOSED, 只能回应RST分节, 会造成server的异常关闭, 有了TIME_WAIT, 可在TIME_WAIT处再次接收FIN并回复ACK。

  2.2 清除前一个连接的旧报文影响

  所谓前一个连接, 是指前后两个连接的四元组是一样的,  因为TIME_WAIT的时间是2MSL, 在这期间是禁止建立相同四元组的连接, 2MSL正好从FIN, ACK俩个方向上确保了旧连接的报文已经消失在了链路中了。

TIME_WAIT状态的一些总结的更多相关文章

  1. 传输层(2)-TCP连接的建立和终止、TIME_WAIT状态

    1.TCP连接的建立和终止 1)三路握手 客户端发送一个SYN(同步)分解,告诉服务器客户将在连接中发送的数据的初始序列号. 服务器发送确认客户的SYN(ACK),同时自己也得发送一个SYN分节,它含 ...

  2. 也说说TIME_WAIT状态

    也说说TIME_WAIT状态 一个朋友问到,自己用go写了一个简单的HTTP服务端程序,为什么压测的时候服务端会出现一段时间的TIME_WAIT超高的情况,导致压测的效果不好呢? 记得老王有两篇文章专 ...

  3. Linux-TCP/IP TIME_WAIT状态原理

    TIME_WAIT状态原理---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动关闭连接时,会发送最后一个a ...

  4. 服务器time_wait状态原因

    通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态 TIME_WAIT状态的时间是2倍的MSL(最大生存时间),在TIME_WAIT状态TCP连接实际上已经断掉,但是该插口又不 ...

  5. TCP/IP TIME_WAIT状态原理

    原文转载:http://elf8848.iteye.com/blog/1739571 IME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动 ...

  6. TCP/IP TIME_WAIT状态

    百度运维部二面面试官问我这个 我直接懵逼了 TIME_WAIT状态是通信双方简历TCP连接后, 主动关闭的一方就会进入TIME_WAIT状态 1.client向server发送FIN(M),clien ...

  7. LINUX下解决netstat查看TIME_WAIT状态过多问题

     来源:多3度热爱 的BLOG   查看连接某服务端口最多的的IP地址 netstat -nat |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c ...

  8. TCP释放连接时为什么time_wait状态必须等待2MSL时间

    为什么上图中的A在TIME-WAIT状态必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B.这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FI ...

  9. 为什么建立TCP连接需要三次握手,为什么断开TCP连接需要四次握手,TIME_WAIT状态的意义

    为什么建立TCP连接需要三次握手? 原因:为了应对网络中存在的延迟的重复数组的问题 例子: 假设client发起连接的连接请求报文段在网络中没有丢失,而是在某个网络节点长时间滞留了,导致延迟到达ser ...

  10. tcp netstat用法 TIME_WAIT状态解析 MTU以及MSS

    带着问题写博客 问题1:使用netstat查看有源TCP连接的状态时,经常会看到established状态,那么还有哪些状态,这些状态是如何变化的呢? 问题2:TIME_WAIT状态存在的必要? 问题 ...

随机推荐

  1. sqlplus远程连接oracle

    格式: sqlplus 用户名/密码@192.168.19.189:1521/MYTEST MYTEST 数据库名称

  2. 大华摄像头WEB页面集成

    对于海康.大华的摄像头web页面内的集成方式,根据浏览器类型,通常是采用以下形式: IE内核:调用ocx控件 例如: <object width="100%" height= ...

  3. 作业要求20181204-7 Final阶段第1周/共1周 Scrum立会报告+燃尽图 02

    作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2481 版本控制地址https://git.coding.net/lglr20 ...

  4. 读书笔记 之 java编程思想3

    现在已经读到第二章  ,这个发现好多已经能都知道了  但是还是有自己比较生疏的比如说就是 储存到什么地方:书中介绍五种储存的地方 分别为1储存器,2堆栈,3堆4常量储存 5非RAM储存,java的出来 ...

  5. Chapter 3 软件项目管理

    软件项目具有产品的不可见性.项目的高度不确定性.软件过程的多变化性.软件人员的高流动性的显著特征.有效的软件项目管理集中于人员.产品.过程和项目四个方面.软件项目的生命周期有项目启动.项目规划.项目实 ...

  6. Struts2 核心流程

    1.Struts2架构图  这是Struts2官方站点提供的Struts 2 的整体结构.  执行流程图 2.Struts2部分类介绍  这部分从Struts2参考文档中翻译就可以了. ActionM ...

  7. DPDK flow_classify 源码阅读

    代码部分 /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2017 Intel Corporation */ #include < ...

  8. angularJS1笔记-(10)-自定义指令(templateUrl属性)

    index.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  9. 学习jenv

    背景 生活不只是眼前的苟且, 还有诗和远方. 上个月工作需要启动了一个小项目, 按最初的计划会用JDK8. 但当计划报上去后, 运维部门出于后续升级维护的考虑, 不允许使用已经出来4年多的JDK8了, ...

  10. Alpha阶段敏捷冲刺⑤

    1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 新增了一个登录界面 完成记账的分类模块 报表界面初步设计 今天要完成 ...