IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【网络编程实战】-第10讲-TIME_WAIT:隐藏在细节下的魔鬼 -> 正文阅读

[系统运维]【网络编程实战】-第10讲-TIME_WAIT:隐藏在细节下的魔鬼

作者是怎么开展讲述的

1、作者先讲述了自己生产遇到了有很多TIME_WAIT的状态,
2、然后从TCP的四次挥手中去讲TIME_WAIT的作用
3、然后引出了2MSL,接着讲MSL是什么,为什么是2
4、接下来才是讲怎么处理TIME_WAIT过去的问题

本篇学习需要收获的内容是这几个

  • MSL是什么?可以修改吗?
  • TIME_WAIT在TCP中的作用是什么?如果没有了他会怎样
  • 为什么设置成2MSL?如果设置过长或者过短会怎样?
  • 怎么解决TIME_WAIT过多的问题,有什么思路?优缺点都是什么?

MSL是什么

最长报文段寿命 MSL(maximum segment lifetime),它是任何报文在网络上存在的最长的最长时间。
MSL=1分钟

直接查看Linux系统内的值
在这里插入图片描述

可以修改MSL的值吗?

在这里插入图片描述
可以的

TIME_WAIT 的作用是什么?

二话不说,TCP四次挥手的图是必然要的
在这里插入图片描述

  • 场景

TIME_WAIT
是出现在主动断开的那一方的,看图可以知道,当服务端向客户端发送出最后一个FIN包的时候,客户端就会向服务端发送一个ACK的包,告诉服务端,我们这边已经准备关闭了,进入半关闭状态了。

  • 为什么要进入这个状态呢

你按照正常思路想肯定是想不出来为什么呢,肯定是按异常才想的处理

出现的情况
A、我客户端发出去的最后一个ACK的包,如果服务端没有收到。
站在客户端的视角:“我主动下线了,没啥事~”
站在服务端的视角:“对方的最后一个ACK包还没给我,是不是我最后的FIN包没给过去,那我就继续发吧”,然后循环,一直发。。。

因此,没有这个TIME_WAIT的状态的时候,客户端直接就下线了,服务端是可能没办法完全进入关闭状态的,这个是我们不想看到的

那么在这个场景下TIME_WAIT是怎么起作用的呢?

客户端发完最后一个ACK的包之后,先等个2MSL,进入TIME_WAIT 状态,如果服务端真的没有收到最后一个ACK的包,那服务端会在重发一次FIN包,此时,客户端是还在线的!对,He still alive!!这很关键,只要他还活着,就能确保能再尝试发一次ACK的包了。
总结一句话就是:

为了保证最后一个ACK的包能够安全可靠地到达服务端

B、如果在这次连接结束后,马上又开始一次新的连接,上一次TCP连接的分节,传输到了最新一次连接的请求里面去了,那不就乱了。
这次这个场景,是从2个大的TCP连接的角度去讲述的
假设第一TCP连接请求叫做T1,那么当他结束连接之后,假设没有TIME_WAIT状态,然后又重新来了一次一模一样的的四元组连接(源 IP,源端口,目的 IP,目的端口)叫做T2,那T1连接产生的任何一个TCP的分节,都可能会在由于网络传输的原因,延迟送到了,但此时送到的确实T2连接上,就会对T2连接进行干扰。

那么在这个场景下TIME_WAIT是怎么起作用的呢?

划重点!
TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,也就是TIME_WAIT状态的时候,如果有相同的四元组的连接返回给了客户端,客户端都是不会启动一个新的连接的,说到底就是,这个TIME_WAIT状态,起到了一个很好的前后2次TCP连接的隔离作用。

那为什么可以隔离呢?
因为在2MSL时间段里面,可以保证在网络上传输的各种分节,都能够消逝,让上一次连接节点的多个数据包,都死亡,这样就可以做到前后的2次连接的互不干扰了。

那为什么是2个MSL呢?

1个MSL代表一个数据报从一端发送到另一端的时间,2个MSL就是发送过去的包,再返回来的时间,这是一个双边加起来的时候,也是为了保证服务端收到包的同时,并返回给客户端,给客户端收到的时间间隔。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:56:36  更:2022-10-22 22:00:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:16:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码