什么是三次握手

2016-01-18 10:30:05 13504

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.socket编程中,客户端执行connect()时。将触发三次握手。

1.第一次握手:

客户端发送一个TCPSYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

    Client --> SYN标志 序列号 = x,确认号 = 0 ----> Server

2.第二次握手:

服务器发回确认包(SYN/ACK)应答。接收方收到这个段后,向发送者回发一个段。代码位设置为SYNACK,序列号设置为y,确认序列号设置为x+1

    Client <-- SYN标志 置ACK标志 序列号 = y, 确认号 = x + 1 <-- Server

3.第三次握手.

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN+1

    Clinet --> ACK标志 序列号 = x + 1,确认号 = y + 1 --> Server

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: