握手
在现实世界中,握手是两个人之间一种约定俗成的问候方式。同样,计算机握手也可看作两个计算机系统之间的问候。它通常用于初始化两个主机之间的网络连接。
只要两个系统使用相同的协议进行通信,它们之间就可以完成计算机握手。这两个系统可以是一个客户端和一个服务器,也可以只是P2P网络上的两台计算机。握手会确认连接双方的身份,并允许继续进行通信。
通过网络进行握手通常称为三次握手或“SYN-SYN-ACK”。一次成功的握手包括以下七个步骤:
- 主机 A 向主机 B 发送一个同步(SYN)数据包。
- 主机 B 接收主机 A 的 SYN 请求。
- 主机 B 向主机 A 发送一条同步确认(SYN-ACK)消息。
- 主机 A 接收主机 B 的 SYN-ACK 消息。
- 主机 A 向主机 B 发送一条确认(ACK)消息。
- 主机 B 接收主机 A 的 ACK 消息。
- 两个系统之间的连接建立。
当系统发起握手时,可能出现三种结果:
- 无响应 – 如果接收握手的系统不可用,或不支持发起系统使用的协议,它可能不会响应请求。
- 连接被拒绝 – 接收握手的系统可用并理解该请求,但拒绝连接。
- 连接被接受 – 接收握手的系统可用,收到请求并接受连接。
上面列出的第三种结果是唯一能完成握手的情况。如果握手成功,两个系统就可以开始通过已建立的协议进行通信和传输(数据)。使用握手的协议包括TCP、TLS 和SSL。
测试你的知识