三次握手四次挥手的个人理解

本文仅为个人学习理解,如有不对还请指正

TCP报文格式

在了解三次握手四次挥手之前应该先简要了解下TCP报文格式,如下图:

在这里插入图片描述

其中主要关注seq,ack,SYN,ACK,FIN这几个标志位。 seq表示的是序列号,ack表示的是确认号,在收到序列号后会加1返回。
下方有8个标志位,其中SYN,ACK,FIN是本次需要用的。
SYN=1,ACK=0时表示请求连接的报文段,当SYN=1并且ACK=1时表示同意建立连接,仅在前两次握手中SYN置为1。
ACK表示前面的确认号是否有效,仅当ACK=1时确认号段有效,当建立连接后ACK必须为1。
FIN表示数据是否发送完毕,FIN置1表示发送完毕,可以断开连接。

三次握手

个人理解

三次握手是TCP连接的建立,这个连接是一方主动打开,另一方被动打开,以下是三次握手图解。

在这里插入图片描述

这个上图怎么理解呢,首先客户端发出TCP报文,其中SYN标志位是1,服务端收到请求后直到客户端想要连接,但是客户端不知道服务端是否收到连接请求,这时服务端就需要返回收到的TCP报文并且将SYN、ACK置位1,这时客户端收到了这个报文,知道了客户端到服务端是畅通无阻的,但是服务端并不知道我发过去的消息客户端收没收到啊,此时又需要客户端返回一个ACK为1的报文,这时如果服务端收到了消息,知道客户端发过来的我都能收到,我发过去的消息他也能收到,于是开始建立连接发送数据。上面也解释了如果两次握手的话服务端不知道自己发出的消息客户端是否收到,就需要客户端给个反馈,三次握手可以直到互相之间畅通无阻于是也就不需要四次握手了。

四次挥手

个人理解

四次挥手就TCP连接的释放过程,也需要图解解释一下。

在这里插入图片描述

四次挥手也是从客户端发出的,客户端发出一个报文,其中FIN置1,表示从服务端到客户端的消息已经全部发完了,服务端知道了这个请求并得告诉客户端我收到断开连接的请求,返回ACK置为1的TCP报文,但是服务端可能还有消息没和客户端发完,此时客户端不能发消息到服务端,但是服务端可以发消息到客户端。当服务端准备好后,没有消息需要发给客户端了,就再向客户端发出FIN置为1的TCP报文告诉客户端可以断开了,这时客户端就向服务端发个ACK置1的确认报文,此时他们可以彻底断开了,其中第二次和第三次挥手不能拆开,因为在断开连接之前他们之间是在传输数据的,客户端到服务端可以断开了但是不确定服务端是否还有数据没发完,只能等段时间让服务端自己发出断开请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值