为方便描述,以客户端主动向服务端发起TCP连接为例。
建立连接的过程就是通信双方在不确定的网络环境中建立信任的过程。 这个信任包括四个相信: 一、客户端相信自己给服务端发送的消息服务端能接收到; 二、客户端相信服务端给自己发送的消息自己能接收到; 三、服务端相信自己给客户端发送的消息客户端能接收到; 四、服务端相信客户端给自己发送的消息自己能接收到;
当客户端完成前两个相信之后,确定自己可以与服务端进行TCP连接,并开始分配连接所需要的缓冲区等资源。 当服务端完成后两个相信之后,确定自己可以与客户端进行TCP连接,并开始分配连接所需要的缓冲区等资源。 至此TCP连接在客户端与服务端之间建立起来。
结合三次握手,分析TCP连接的建立与通信双方之间的信任过程: 第一次握手 客户端向服务端发出连接请求:“喂!服务端听得到吗?我想跟你建立TCP连接(SYN)”。 当服务端收到客户端的SYN请求,服务端相信客户端给自己发送的消息自己能接收到。 第二次握手 如果服务端同意与客户端建立TCP连接,则向客户端回复:“服务端能听到(ACK),同意连接请求(SYN)”。 当客户端收到服务端的回复,客户端相信服务端给自己发送的消息自己能接收到,而且自己给服务端发送的消息服务端能接收到。 于是客户端开始为此次连接分配缓冲区等资源。
但是此时服务端还不确定自己给客户端发消息客户端能否接收到,于是有了第三次握手。 第三次握手 客户端给服务端回复:“你的同意连接的消息我收到啦(ACK)”。 当服务端收到客户端的回复,服务端确信自己给客户端发送消息客户端能收到,便开始为此次连接分配缓冲区等资源。
至此TCP 连接 在客户端与服务端之间 建立。
|