TCP四次挥手时的TIME_WAIT状态

之前面试遇到一个问题是关于TCP四次挥手的时候,先发起方为什么会有一个TIME_WAIT状态,它的作用是什么?

然后整理了一些资料和自己的一些总结,方便日后查阅。

先上图

 

注:

MSL(最大报文段生存时间),网络中的TCP的报文段经过此时间会消失,旧tcp连接的报文段消失了就不会影响新连接

TCP和UDP是传输层的协议,TCP的传输单位是报文段,UDP是用户数据报

“请求”一词是事务上的概念,HTTP协议是一种事务协议,如果说发送一个HTTP请求,这种说法没问题,但TCP是一种通信方式,所以不要说TCP请求一词。

(1)

       为什么连接的时候是三次握手,关闭的时候却是四次握手?

TCP是全双工的,每个方向都要进行单独关闭。当一方完成数据发送任务后,发送一个FIN报文来终止这一方向的连接,这意味着不再发送数据,但是还可以接收数据,除非对方也发送了FIN报文。假设client端是主动发起方,当server端收到Client端的FIN报文后,知道它不再发送数据过来了。但server端自己还有数据没发完,不想立即关闭连接,所以只能先回复一个ACK报文,告诉client端,"你发的FIN报文我收到了"。server端等所有的数据都发送完了,然后发一个FIN+ACK报文给client端,client端收到后发送一个ACK报文给server端,server端收到了,然后才真正关闭了连接,故需要四步握手。

(2)

 

TIME_WAIT状态的时间可能为30秒、2分钟不等,Linux是60秒。

在内核源码 /usr/src/linux/include/net/tcp.h 中有 一行

#define TCP_TIMEWAIT_LEN (60*HZ)

查看tcp各种状态,例如TIME_OUT,SYN_SEND等状态的连接数

netstat -nt | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

 

ss命令同样可以查看不同状态的连接数,比netstat效率更高

ss -4 state time-wait |grep '^tcp' |wc -l

ss -4 state established |grep '^tcp' |wc -l

状态有:

established

syn-sent

syn-recv

fin-wait-1

fin-wait-2

time-wait

closed

close-wait

last-ack

listen

closing

 

all  所有以上状态

connected   除了listen and closed 的所有状态

synchronized   所有已连接的状态除了  syn-sent

bucket  显示状态为 maintained  as  minisockets, 如 time-wait 和 syn-recv.

big  和bucket 相反

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随与博主沟通,博主会及解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随与博主沟通,博主会及解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随与博主沟通,博主会及解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随与博主沟通,博主会及解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值