DAY7:TCP连接三次握手的过程 | TCP连接四次挥手的过程 | HTTP的Keep-Alive,与TCP的Keepalive的区别

目录

TCP连接三次握手的过程

三次握手的过程 

为什么需要三次握手

TCP连接四次挥手的过程 

四次挥手的过程

为什么需要四次挥手 

HTTP的Keep-Alive、TCP的Keepalive 


TCP连接三次握手的过程

三次握手的过程 

1.第一次握手:客户端向服务器发送一个SYN(同步序列编号)报文,请求建立连接,客户端进入SYN_SENT状态。

2.第二次握手:服务器收到SYN报文后,如果同意建立连接,则会发送一个SYN-ACK(同步确认)报文作为响应,同时进入SYN_RCVD状态。

3.第三次握手:客户端收到服务器的SYN-ACK报文后,会发送一个ACK(确认)报文作为最终响应,之后客户端和服务器都进入ESTABLISHED状态,连接建立成功

为什么需要三次握手

通过三次握手,客户端和服务器都能够确认对方的接收和发送能力。

  • 第一次握手确认了客户端到服务器的通道是开放的; 
  • 第二次握手确认了服务器到客户端的通道是开放的;
  • 第三次握手则确认了客户端接收到服务器的确认,从而确保了双方的通道都是可用的。

如果仅使用两次握手,服务器可能无法确定客户端的接收能力是否正常,比如客户端可能已经关闭了连接,但之前发送的连接请求报文在网络上延迟到达了服务器,服务器就会主动去建立一个连接,但是客户端接收不到,导致资源的浪费。而四次握手可以优化为三次。


TCP连接四次挥手的过程 

四次挥手的过程

1.第一次挥手:客户端发送一个FIN报文给服务端,表示自己要断开数据传送,报文中会指定一个序列号(seq = x)。然后,客户端进入FIN-WAIT-1状态。

2.第二次挥手:服务端收到FIN报文后,回复ACK报文给客户端,且吧客户端的序列号值+1,作为ACK报文的序列号(seq = x+1)。然后服务端进入CLOSE-WAIT(seq = x+1)状态,客户端进入FIN-WAIT-2状态。

3.第三次挥手:服务端也要断开连接时,发送FIN报文给客户端,且指定一个序列号(seq = y+1),随后服务端进入LAST-ACK状态。

4.第四次挥手:客户端收到FIN报文后,发出ACK报文进行应答,并把服务端的序列号值+1作为ACK报文序列号(seq = y+2)。此时客户端进入TIME-WAIT状态。服务端在收到客户端的ACK报文后进入CLOSE状态。如果客户端等待2MSL没有收到回复,才关闭连接。(ps:MSL表示最大报文生存时间,是TCP协议中的一个重要参数)

为什么需要四次挥手 

TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后才会完全关闭TCP连接。因此两次挥手可以释放一端到另一端的TCP连接,完全释放连接一共需要四次挥手。

只有通过四次挥手,才可以确保双方都能接收到对方的最后一个数据段的确认,主动关闭方再发送完最后一个ACK后进入TIME-WAIT状态,这是为了确保被动关闭放接收到最终的ACK,如果被动关闭方没有接收到,它可以重发FIN报文,主动关闭方可以再次发送ACK。

而如果使用三次挥手,被动关闭方可能在发送最后一个数据段后立即关闭连接,而主动关闭方可能还没有接收到这个数据段的确认。


HTTP的Keep-Alive、TCP的Keepalive

1.HTTPKeep-Alive,是由应用层实现的,称为HTTP长连接:

一般情况下每次HTTP请求都要经历这样的过程:建立TCP连接 -> HTTP请求资源 -> 响应资源 -> 释放资源,这就是HTTP短连接

但是这样每次建立连接都只能请求一次资源,所以HTTP的Keep-Alive实现了使用同一个TCP连接来发送和接收多个HTTP请求/应答,避免了连接建立和释放的开销,这就是HTTP长连接。通过设置HTTP头Connection:keep-Alive来实现。

2.TCPKeepalive,是由TCP层(内核态)实现的,成为TCP保活机制,是一种用于在TCP连接上检测空闲连接状态的机制

当TCP连接建立后,如果一段时间内没有任何数据传输,TCP的Keepalive会发送探测包来检查连接是否仍然有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值