如何通俗的去理解TCP的三次握手?

张菲红

“我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”

TCP协议采用三次握手的机制建立连接,提供稳定可靠的传输服务。


何为三次握手?

三次握手就是客户端与服务器端建立TCP连接时需要发送3个包进行连接的确认,在三次握手完成后即可建立连接。那么具体的每次握手都发送什么信息呢?

1、第一次握手。客户端发送请求报文,标志位SYN设置为1,随机产生seq值为x,客户端进入SYN_SENT状态,等待服务器端的回应。

2、第二次握手。服务器端接收到请求报文,将SYN和ACK都设置为1,ack为x+1,随机产生seq值为y,然后将数据包发送给客户端进行确认,服务器端进入SYN_RCVD状态。

3、第三次握手。客户端收到回应的数据包后,确认ack是否为x+1,以及ACK是否为1,若正确,则将ACK设置为1,ack为y+1,然后将数据发送给服务器端。服务器端在接受到数据后检查ack是否为y+1,ACK是否为1,若正确则正确建立连接,双方均进入ESTAB-LISHED状态,完成三次握手。

若是用简单的语言来描述的话,可以根据书本上经典的“两军通信”来理解。

背景为山的两头为红军和蓝军,山上为白军,红军和蓝军都不是白军的对手,若想要打败白军必须一起行动才可以,这时两军需要通信进行沟通了:

1、红军派人过去告诉蓝军明天中午12点进攻;

2、蓝军接受到通知并同意以后,派人告诉红军已收到指令,并同意该时间进攻;

3、红军收到通知后,会再次派人告诉蓝军自己已经收到回应,决定明天中午12点进攻。

这三次过程后,红军和蓝军就会在第二天中午12点发起进攻。这就可以简单的理解为三次握手。

请大家多多关注我,探讨其它问题。


哟哟吼说科技

TCP的三次握手很好理解,相当于这样的场景:

A:你瞅啥?

B:瞅你咋地?

A:来,过来唠唠。

这不是开玩笑,这不是开玩笑,这不是开玩笑!

详解TCP三次握手

第一步,A向B发送了一句“你瞅啥?”。这个时候:

A:不能确认B是否收到。

B:确定A能发消息。

第二步,B收到A的消息之后,回复了一句“瞅你咋地?”。这个时候:

A:确认B能收到。

B:确认A能发消息,但是不确定A能不能收到消息。

第三步,A收到B的“瞅你咋地?”之后,发送了一句“来,过来唠唠。”。这个时候:

A:确认B能发能收。

B:确认A能发能收。

然后他们就开始愉快的“唠唠”。

TCP/UDP

除了TCP之外,我们还常听到的是UDP,那么他俩有啥区别呢?

TCP对应的是可靠性要求高的应用,从上面的解释可以看出来,在真正通信之前要三次握手,是面向连接的;并且TCP利用序列号保证消息的有序性。

而UDP对应的则是可靠性要求低,但是流量大、速度快的应用;和TCP相比,UDP是无连接的并且可能是无序的。

TCP更重量,UDP更轻量,没有高低之分,只是应用的场景不同。

希望我的回答可以帮助到你!


分享到:


相關文章: