张菲红
“我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”
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更轻量,没有高低之分,只是应用的场景不同。
希望我的回答可以帮助到你!