哈kk成长之路--详解三次握手逻辑模型(得用概念打败概念)

详细解释三次握手模型

三次握手

如果要理解此图,对于一个初入计算机行业的人来说,就得先从客户端和服务器说起。那么什么是客户端和服务器呢?
客户端是一台计算机,服务器也是一台计算机,在现实中,你的电脑可以简单理解为一个客户端,而服务器可以是一台小型计算机(可以和我们现实里常见的电脑差不多大小)也可以是一台大型计算机(它的运算能力,性能极强)到这里我们就理解了客户端和服务器具体是啥。

然后我们再来解释什么是TCB
TCB全称叫做Trusted Computing Base,计算机内保护装置的总体,包括硬件、固件、软件和负责执行安全策略的组合体。它建立了一个基本的保护环境并提供一个可信计算机系统所要求的附加用户服务。

因为三次握手这个过程是遵循TCP协议(Transmission Control Protocol)的,所以客户端和服务器的连接就是基于请求/响应模式的。客户端既然主动打开了,那么服务器给客户端的回应就是被动打开。

接下来先解释SYN 和 seq以及ACK和ack
SYN(synchronize sequence number)=1表示请求建立连接,seq是一个数据包并拥有一个序列号,至于这个序列号的值,是(0-2^32-1)中间的一个随机数,用来给这次请求打上一个标记。
ACK=1表示响应,ack是一个确认号。是用来给另一端确认连接信息的。至于图中ack为什么是x+1以及y+1,在下面具体解释每次握手的时候我会详细说明。

了解了以上这些名词的概念,那么我们就可以开始每次握手过程的解释了。
第一次握手:如图中箭头所示,客户端向服务器发送了一个SYN=1的连接请求并产生了一个seq序列号,那么这里就有一个问题:为什么客户端向服务器发送连接请求的时候会产生一个拥有序列号的数据包呢?其实这是一个值得深思的问题。试想,服务器在同一时间内会收到来自成千上万甚至上百万上千万的连接请求,如果没有这个序列号存在的话,服务器如何去分辨这个连接请求是来自哪个客户端呢?对吧?那么这个seq序列号的作用就显而易见了,不管是对客户端来说还是对服务器来说,seq序列号是用来让它们去分辨这个请求从哪来的。我们假设这次序列号x=123456

第二次握手:此时,服务器已经收到了来自客户端的连接请求,那么这时候它明白了客户端的意思,就向客户端也发送了一个连接请求,这次的ACK=1表示给客户端上一次的握手回应,告诉客户端我的的确确受到了来自你这台客户端的请求。既然有请求,那就得有序列号吧。所以这时候服务器发出的请求产生了一个seq的数据包并拥有序列号y,来告诉客户端我发出的请求是从我这来的而不是从别的服务器来的。我们假设这次的y=654321.。ack=x+1=123457,这个确认号是给客户端来确认连接信息用的,就是客户端得知道服务器给我的响应是针对我第一次握手发出的连接请求的,让ack=x+1就能很方便快速的让客户端去确认连接信息(只要将ack-1的值seq=x的值比较即可)。到这,第二次握手结束。

第三次握手:上次握手服务器向客户端发出连接请求,那么自然的,客户端得给服务器回应,告诉服务器我的确收到了来自你这台服务器的连接请求。把序列号的值附为x+1=123457,是为了告诉服务器,我已经确认了这是我第一次握手发出的连接请求。确认号为y+1=654322,是为了告诉服务器我收到连接请求是来自你这台服务器的,而不是别的服务器的。到此,第三次握手结束。

经过了以上过程,服务器和客户端的连接就成功了,两者可以进行数据传输了。

其实还有一个很值得思考的问题:为什么这样的连接方式必须是三次握手而不是两次,五次或者更多次呢?(因为连接方式是遵循请求响应模型的,所以次数只能是3,5,7,9,…类推下去,至于如果是两次连接是我们重点去探讨的问题)
如果是五次或者更多次数的话,很好理解,清求回应的次数多了那么连接的过程就会很慢,安全是做到了,但是同时会造成服务器的极大压力以及资源的浪费。
如果是两次就连接成功的话,也就是上图中的第二次握手过程少了个SYN=1,第二次服务器没有向客户端发出连接请求。也就自然没有了第三次客户端给服务器的回应。然后经过这两次过程,客户端和服务器连接成功了。在这种模型下,我们试想一种场景,客户端在8:30向服务器发出了一个连接请求,但是这个请求因为某些原因在网络节点中滞留了很久,然后服务器迟迟得不到服务器的回应,它就会再次向服务器发出一个连接请求,假设这次的这个个请求是8:35发出的,被服务器收到了,然后服务器给客户端响应,客户端和服务器连接成功。但是过了半小时,在9:35的时候8:30发出的连接请求被服务器接收到了,那么这个时候,服务器又给了客户端响应,又重新建立了连接(因为没有第三次握手去告诉服务器这次连接请求的正确性)。那么你在这半小时内干的事情那就白费了,这可能就会导致数据存档回档,掉档的结果(当然这个类比不太恰当,大家理解表面意思即可)。所以如果只有两次连接会导致很严重的结果。

以上就是我对三次握手的详细解释,希望能让大家从本质上理解这个模型,而不是通过那些很生硬的打电话,发信息,敲门的例子,只知其然而不知其所以然的去记忆这个模型!!谢谢阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值