三次握手四次挥手

本文详细介绍了TCP的三次握手和四次挥手过程,包括每个阶段的状态变化和数据传输情况。三次握手确保了连接的可靠性,四次挥手则用于安全断开连接。此外,还对比了TCP与UDP的区别,强调了TCP的面向连接和可靠传输特性。
摘要由CSDN通过智能技术生成

第一次握手,服务端可以确定:客户端的发送能力、服务端的接收能力是正常的。

第二次握手,客户端可以确定:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

第三次握手,服务端可以确定:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。

三次握手的作用

1、确认双方的接受能力、发送能力是否正常。
2、指定自己的初始化序列号,为后面的可靠传送做准备。
3、如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。

  • SYN表示建立连接,

  • FIN表示关闭连接,

  • ACK表示响应

  • CLOSED:表示初始状态。

  • LSTEN:这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。

  • SYN_RCVD:这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。

  • SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。

  • ESTABLISHED:这个容易理解了,表示连接已经建立了。 

  • FIN-WAIT-1:等待远程TCP的连接中断请求,或先前的连接中断请求的确认;

  • FIN-WAIT-2:从远程TCP等待连接中断请求;

  • CLOSE-WAIT:等待从本地用户发来的连接中断请求; 

  • CLOSING:等待远程TCP对连接中断的确认; 

  • LAST-ACK:等待原来发向远程TCP的连接中断请求的确认;

  • TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认;

四次挥手:终止TCP连接

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

(1)TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。

(2)服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

(3)服务器关闭客户端的连接,发送一个FIN给客户端。

(4)客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

2、第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。


TCP和UDP

(1)TCP 是面向连接的,udp 是无连接的即发送数据前不需要先建立链接。

(2)TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据,无差错,不丢失, 不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付。 并且因为 tcp 可靠, 面向连接,不会丢失数据因此适合大数据量的交换。

(3)TCP 是面向字节流,UDP 面向报文,并且网络出现拥塞不会使得发送速率降低(因 此会出现丢包,对实时的应用比如 IP 电话和视频会议等)。

(4)TCP 只能是 1 对 1 的,UDP 支持 1 对 1,1 对多。

(5)TCP 的首部较大为 20 字节,而 UDP 只有 8 字节。

(6)TCP 是面向连接的可靠性传输,而 UDP 是不可靠的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值