TCP连接的建立与关闭

TCP连接建立

首先要说明的是要明确TCP连接建立的过程需要3次握手,下面举例说明各种状态存在的时刻:

1.首先在服务器A上开启FTP服务,开始侦听来自远端TCP端口的连接请求,这个时候查看服务器A的对应端口状态为:LISTENING

2.在客户端B上向A发送FTP连接请求,这个时候数据包同步位置1,这是TCP三次握手的第一步。在发送后没收到确认时,在客户端B上其状态为:SYN-SENT。此时客户端B启动连接定时器,如果在75秒内没有收到应答,则放弃连接建立。

3.在服务器A收到客户端B发送的SYN同步包后,确认,然后再向B发送SYN同步包,此数据包同时将TCP标记中的同步位和确认位置1,它既对第一步中客户端的同步数据包进行确认,表示愿意与客户端同步,同时再对客户端主机进行同步请求,这是TCP连接建立的第一步。这个时候在服务器A上连接状态为SYN-RECEIVED。此时服务器A启动连接定时器,如果在75秒内没有收到应答,则放弃连接建立。这是第一次握手。

4.在客户端B上接收到从A上发过来的确认同步包后进行确认,此数据包中将TCP标记中的确认位置1,表示这是一个确认数据包,此时客户端B的状态转换为:ESTABLISHED。这是第二次握手。

5.服务器A接收到从B发送过来的确认包后,状态转换为:ESTABLISHED。这是第三次握手。

此时TCP连接正式建立。

TCP连接关闭

6.应用程序在连接不需要的时候,通过客户端B向服务器发送FIN包后,客户端处于FIN-WAIT-1状态。

7.服务器A接收到客户端B发送的终止数据包,它告诉客户端B已成功接收客户端上的数据包,此时等待应用程序来关闭连接,此时服务器A进入CLOSE-WAIT状态。

8.客户端B在接收到带有确认位的数据包后,对此进行确认,同意关闭TCP连接此时客户端B转移到FIN-WAIT-2状态。当连接从FIN-WAIT-1状态转移到FIN-WAIT-2状态时,将一个FIN-WAIT-2定时器设置为10分钟。

9.服务器A在应用程序同意终止连接后,向客户端B发送终止FIN包,此时服务器的状态转变为LAST-ACK

10. 客户端B在接收到从服务器A发送的终止包后,同意终止连接,然后再向服务器端发送确认信息,此时客户端B转向TIME-WAIT状态。当连接进入TIME-WAIT状态时,该定时器被激活。

11. 服务端A在收到客户端B的确认后,关闭连接,服务器A状态转向CLOSED

12. 客户端B在TIME-WAIT定时器超时时,与该连接相关的内核数据块被删除,连接终止,转向CLOSED状态。

此时TCP连接正式关闭。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值