运维基础知识-tcp/ip

图片发自简书App


图片发自简书App

有限状态机FSM:Finite State Machine

1、CLOSED 没有任何连接状态

2、LISTEN 侦听状态,等待来自远方TCP端口的连接请求

3 、SYN-SENT 在发送连接请求后,等待对方确认

4、SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认

5、ESTABLISHED 代表传输连接建立,双方进入数据传送状态

6、FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认

7 、FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求

8、 TIME-WAIT 完成双向传输连接关闭,等待所有分组消失

9、CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认

10、LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失

11、CLOSING 双方同时尝试关闭传输连接,等待对方确认

思考点

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次挥手?

答:因为当服务器收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来回应的,SYN报文是用来同步的。但是关闭连接时,当服务器收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,”发送的FIN报文已经收到”。只有等到客户端所有的报文都发送完了,客户端才能发送FIN报文,因此不能一起发送。故需要四步挥手。

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:四个报文都发送完毕,客户端和服务器可以直接进入CLOSE状态了,但有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文,确保之前的数据不会丢失后再进入close状态。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,551评论 0 11
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,144评论 6 174
  • 18.1 引言 TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本章将...
    张芳涛阅读 3,446评论 0 13
  • 套接字选项SO_RESUEADDR 即使端口处于2MSL状态,使用该选项,仍然能够在该端口建立连接。服务器常会设置...
    Myth52125阅读 1,457评论 0 0
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,100评论 0 8