TPC三次握手和四次断开

TPC三次握手就是建立一个TCP连接客户端与服务器交互需要的三个数据包

握手的作用是:为了确认双方的接收和发送能力是否正常,比如:初始序列号、交换窗口大小等信息

第一次握手:客户端发送syn报文,并进入syn_send状态,等待服务器的确认

第二次握手:服务器收到syn报文,需要给客户端发送ACK确认报文,同时服务器也要向客户端发送一个syn报文,总的来说就是服务器向客户端发送syn和ack报文,此时服务器进入syn_rcvd状态

第三次握手:客户端收到syn和ack报文后,向服务器发送确认包,客户端进入established的状态,待服务器收到客户端发送的ack包也会进入established的状态

当面试问道的时候,可以先简述TCP的过程,然后重点说一下转换的状态

TCP三次握手其实就是TCP应用在发送数据前,通过TCP协议跟通信对方协商好连接信息,建立起TCP的连接关系。

注意:TCP连接并非是在通讯设备两端之间建立通信隧道,其本质上是双方各自维护所需的状态,以达到TCP连接的效果。

问题:TCP建立为什么是三次握手而不是两次呢?

其实是这样的,TCP建立连接之前,需要确认客户端以服务器双方的收包和发包的能力,首先第一次握手客户端发送网络包,服务器收到了,这样服务器就可以得到结论:客户端的发送能力、服务端的接收能力是正常的;那么第二次握手服务端发包,客户端收到了,那么客户端也会得出一个结论:服务端的接收发送能力和客户端的接收发送能力是正常的,不过此时服务端并不能确认客户端的接收能力是否正常;最后第三次握手,客户端发包,服务器端收到了,这样服务器才知道客户端的接收发送能力正常,服务器自己的接收发送能力也正常;所以只有经过三次握手才能知道双方的接收发送能力是否正常的。

如果是两次的的话,服务端无法确认客户端是否已经接收到了自己发送的初始序列号,如果第二次握手报文丢失,那么客户端就无法知道服务端的初始序列号,那TCP的可靠性就无从谈起了。

三次握手的目的:才有足够的上下文信息来判断当前的连接是否是历史连接。

再从安全问题考虑,TCP作为一种可靠的传输控制协议,其核心思想是既要保证数据可靠传输,又要提高传输效率,而三次握手恰好可以满足以上两个需求。

具体过程可以简化为:

三次握手

        即建立一次TCP连接时,客户端和服务端总共需要发送三个包

过程:

1.客户端发包,服务端收到。服务端确认:客户端的发送能力正常。

2.服务端发包,客户端收到。客户端确认:服务端的接收能力正常。

3.客户端发包,服务端收到。服务端确认:客户端即将给我发送数据,我要准备接受。

4.建立连接完成,然后开始发送数据,通讯。

四次断开:

        断开就是关闭连接

过程

1.客户端发包,服务端接收。服务端确认:客户端已经请求结束

2.服务端发包,客户端接收。客户端确认:服务端已经收到,我等待他关闭

3.服务端发包,客户端接收。客户端确认:服务端已经发送完成,可以关闭

4.客户端发包,服务端接收。服务端确认:可以关闭了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值