po3a  

什么是TCP的三次握手?
往简单的说,就是互相建立连接,并且保证数据准确传输。

TCP三次握手的过程
情景模拟 1.0
发送方:嘿嘿,可以听得到我说话吗,接接。

接收方:可以听到,你听得到吗?

发送方:听到了,那我开始说正事了。

这个故事是用来模拟TCP三次握手的,也是在所有通俗解释三次握手的典型例子。

三次握手图示

 

三次握手过程解释

先从状态变化和重要字段解释

状态变化:

客户端和服务器同时属于closed状态,表示没有连接关系。
客户端发送请求,客户端打开发送(SYN-sent)状态,同时服务器打开监听(Listen)状态;
服务器在接收到客户端的请求时,服务器切换为回复(SYN-rcvd)状态;
客户端在接收到服务器的响应时,客户端切换为稳定连接(Estab-lished)状态的同时发送第二次数据包。
服务器在接收到客户端的第二次数据时,服务器切换为稳定连接(Estab-lished)状态。
双方建立稳定连接后,开始正常通信数据。
重要字段:
过程了解之后,就应该知道其传输的字段是什么意思了。如下是其中重要的字段。

序号(sequence number):seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

确认号(acknowledgement number):ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。

标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:

URG:紧急指针(urgent pointer)有效。

ACK:确认序号有效。(为了与确认号ack区分开,我们用大写表示)

PSH:接收方应该尽快将这个报文交给应用层。

RST:重置连接。

SYN:发起一个新连接。

FIN:释放一个连接。

 

那么这些字段有什么作用呢?

seq序号、ack序号:用于确认数据是否准确,是否正常通信。

标志位:用于确认/更改连接状态。

posted on 2024-05-24 00:26  po3a  阅读(5)  评论(0编辑  收藏  举报