在学习TCP三次握手之前,我们先来简单复习一下网络分层(主要介绍五层结构)。
一、基础知识
我们现在介绍的TCP是在运输层,与TCP对应的协议是UDP,TCP是可靠连接,UDP是无连接,TCP依靠什么来保证他传输数据的可靠哪?就是我们文本要介绍的三次握手。
二、三次握手过程
如图所示 1.由客户端发起请求(主动),SYN=1就是请求连接的意思,Seq就是发送序号为x
2.服务端收到来自客户端发起的请求(被动),发送给客户端SYN=1,Seq=1,还有一个确认报文,确认报文的序号就是客户端发过来的序号+1,所以是图中的ACK=x+1
3.客户端发送确认报文ACK=y+1,发送序号为Z的报文。
三、为什么需要三次连接而不是两次
1.第一步是为了确认客户端是否可以发送,第二步是为了确认服务端是否可以接收发送,第三步是为了确认客户端是否可以接收
其实连接的过程很简单,只要我们简单的把他们理解成,我可以跟你说话,也能听到你的说话就可以。如果只有两次连接会导致无法确认客户端无法听见服务端的话。
2.防止已失效的连接请求报文,我们举个例子,只有两次连接,首先a发送一个请求,但是该请求失效了,a又重新发送一个请求,b收到并确认之后,a就开始发送,发送完毕就释放了。但是这个时候最开始的那个失效的发送请求,可能在网络延迟的导致下,过了一段时间后到了b,那么b就又收到一个请求,b就给予响应,这个时候a迟迟不发送数据,也不释放,那么就占用了b的很多资源。