首页 > 系统相关 >Linux查看TCP连接状态

Linux查看TCP连接状态

时间:2023-05-18 11:23:43浏览次数:32  
标签:查看 ACK TCP 发送 Linux FIN 连接 WAIT

Linux查看TCP连接状态命令

natstat -nat

TCP状态解析

LISTEN: 侦听来自远方的TCP端口的连接请求
ESTABLISHED: 连接已建立
CLOSED: 没有任何连接状态

三次握手: SYN-SENT: 在发送连接请求后等待匹配的连接请求 SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认

四次挥手: FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2: 从远程TCP等待连接中断请求 CLOSE-WAIT: 等待从本地用户发来的连接中断请求 CLOSING: 等待远程TCP对连接中断的确认 LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认 TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认

客户端的状态:

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

在建立连接时,当客户端收到SYN报文的ACK以后,客户端就打开了数据交互的连接。

而结束连接则通常是客户端主动结束的,客户端结束应用程序以后,需要经历FIN_WAIT_1,FIN_WAIT_2等状态。

服务器的状态:

CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

在建立连接的时候,服务器端是在第三次握手之后才进入数据交互状态。

关闭连接是在第二次挥手以后(注意不是第四次)。关闭以后还要等待客户端给出最后的ACK包才能进入初始的状态。

三次握手

 

第一次握手:主机A发送位码为SYN=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手,主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),SYN=1,ACK=1,随机产生seq number=7654321的包;

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ACK是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ACK=1,主机B收到后确认seq值与ACK=1则连接建立成功。

 

四次挥手

 

第一次挥手:主动关闭方发送第一个包,其中FIN标志位为1,发送顺序号seq为X。

第二次挥手:被动关闭方收到FIN包后发送第二个包,其中发送顺序号seq为Z,接收顺序号ack为X+1。

第三次挥手:被动关闭方再发送第三个包,其中FIN标志位为1,发送顺序号seq为Y,接收顺序号ack为X。

第四次挥手:主动关闭方发送第四个包,其中发送顺序号为X,接收顺序号为Y。至此,完成四次挥手。

超时重传指的是,发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送。这个等待时间被称为RTO. 

深入讨论

1、为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

    建立连接时,ACK和SYN可以放在一个报文里来发送。而关闭连接时,被动关闭方可能还需要发送一些数据后,再发送FIN报文表示同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。 

2、为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

    两个存在的理由:1、无法保证最后发送的ACK报文会一定被对方收到,所以需要重发可能丢失的ACK报文。2、关闭链接一段时间后可能会在相同的IP地址和端口建立新的连接,为了防止旧连接的重复分组在新连接已经终止后再现。2MSL足以让分组最多存活msl秒被丢弃。 

3、为什么必须是三次握手,不能用两次握手进行连接?

    记住服务器的资源宝贵不能浪费!  如果在断开连接后,第一次握手请求连接的包才到会使服务器打开连接,占用资源而且容易被恶意攻击!防止攻击的方法,缩短服务器等待时间。两次握手容易死锁。如果服务器的应答分组在传输中丢失,将不知道S建立什么样的序列号,C认为连接还未建立成功,将忽略S发来的任何数据分组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁

 

 参考链接:

https://www.cnblogs.com/muyi23333/articles/13841268.html

https://developer.aliyun.com/article/638468

 

标签:查看,ACK,TCP,发送,Linux,FIN,连接,WAIT
From: https://www.cnblogs.com/squirrel-7/p/17411329.html

相关文章

  • 正点原子Linux第31章《Uboot顶层Makefile详解》学习
    uboot目录结构1. 文件夹arch:存放关于CPU架构的代码2. 文件夹board:存放关于特定开发板的代码3. 文件夹configs:存放uboot的配置,文件的格式为:xxxxx.deconfig,通过编译(make),生成.config文件。4. 文件u-boot.xxx,大多数为编译相关的或者编译生成的目标文件,例如uboot.imx等等......
  • MySQL在Linux中的安装
    MySql安装1、下载mysql安装包再mysql官方下载安装包2、删除依赖包#查找依赖包rpm-qa|grepmysqlrpm-qa|grepMySQLrpm-qa|grepmariadb#删除查询到的依赖包rpm-e--nodepsmariadb-libs-5.5.68-1.el7.x86_643、安装mysql#将安装包上传到linux中mysq......
  • nerd font linux install
    sudoapt-getinstallttf-mscorefonts-installersudoapt-getinstallfontconfigwget-chttps://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.1/SourceCodePro.zipsudounzipSourceCodePro-d/usr/share/fonts/SourceCodeProcd/usr/share/fonts/SourceCod......
  • mongo安装(linux suze)
    1.确定机器发行版本、确定CPU架构类型cat/etc/redhat-release: CentOSLinuxrelease7.7.1908(Core)uname-m: x86_64确定了之后下载: https://www.mongodb.com/download-center/community/releases选取对应版本:/data/mongodb-linux-x86_64-rhel70-6.0.6/bin 2.配......
  • linux服务器间时间同步配置
    文章目录​​安装ntp​​​​主节点配置修改​​​​其他节点进行时间同步​​安装ntp[root@localhost~]#yum-yinstallntp主节点配置修改编辑配置文件/etc/ntp.conf修改如下内容去掉注释,修改机器上网段,当前服务器的网段是多少就改成多少,如:192.168.47.10这里就改为......
  • linux ranger install
    https://www.bilibili.com/video/BV1ER4y1F72Ahttps://mp.weixin.qq.com/s/y1ISUqoya1rJGTpDd5OwMw项目地址https://github.com/ranger/ranger>sudoapt-getinstallranger>ranger --copy-config=allgit clone https://github.com/alexanderjeurissen/ranger_devicons......
  • ECS 云服务器 LINUX 命令
    1、打开指定目录cd/name进入平级目录cdname 进入子目录2、返回上级目录cd3、查看文件列表LS4、执行脚本sh name.sh5。编写脚本第一行#!/bin/bashVIM name  编辑脚本最好用VIM编写,Windows编码与linux不同  退出vim 按ESC退出文件并保存:wq ......
  • 原来.NET写的Linux桌面这么好看?
    如何使用Blazor在Linux平台下运行Desktop程序本文将讲解如何使用Blazor运行跨平台应用,应用到的技术有以下几点BlazorMasaBlazorPhotino.BlazorUbuntu用于验证跨平台性,并且是否提高开发效率,Blazor和Photino一块使用的技术称为BlazorHybrid,Blazor的优点Blazor是一种使用......
  • Linux 基金会开源教育及人才培养峰会来了
    开源技术正在快速发展,在云计算、大数据、人工智能等领域逐步形成技术主流。作为一种新的软件生产方式,开源已经被列入“十四五”规划纲要。纲要提出,支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务。产业发展,人......
  • Linux 基金会开源教育及人才培养峰会来了
    开源技术正在快速发展,在云计算、大数据、人工智能等领域逐步形成技术主流。作为一种新的软件生产方式,开源已经被列入“十四五”规划纲要。纲要提出,支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务。产业发展,人......