TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的传输层协议,它提供可靠的通信服务。在TCP通信过程中,建立连接是必不可少的一部分。本文将从多个角度分析TCP建立连接的过程。
一、TCP三次握手
TCP建立连接的过程是通过三次握手(three-way handshake)实现的。三次握手的过程如下:
第一次握手:客户端(Client)将SYN(同步请求)包发送到服务器端(Server)并进入SYN_SENT(同步已发送)状态。
第二次握手:服务器收到客户端的SYN包后,发送SYN+ACK(同步请求应答)包,并进入SYN_RCVD(同步已接收)状态。
第三次握手:客户端收到服务端的SYN+ACK包后,发送ACK确认包,并进入ESTABLISHED(已建立连接)状态,此时服务端也进入ESTABLISHED状态。
在TCP建立连接过程中,三次握手的作用是确保双方都能收到对方的确认信息,并且双方的序列号和确认号能正常运转,从而保证通信的可靠性。
二、为什么需要三次握手
TCP需要三次握手的原因主要有以下两个方面:
1、防止已失效的连接请求报文段重复发送
在网络通信中,有可能因为网络延时等原因导致连接请求的ACK包丢失,如果不进行第三次握手,客户端将一直处于DDos状态,这将对网络性能造成很大影响。
2、防止服务器端开启不必要的连接
如果服务器端发出了一个SYN包,表示可以建立连接,但是客户端没有响应,这会导致服务器一直等待,如果这样的请求多了,将使得服务器资源被占满,导致拒绝服务。
三、TCP四元组
TCP的连接是通过四个参数确定的,它们称为TCP四元组:
1、源IP地址
2、源端口号
3、目标IP地址
4、目标端口号
在TCP建立连接过程中,一个SYN包和一个SYN+ACK包都有这些信息,因此可以确定对于一个连接,这些信息都是独特的。
四、TIME_WAIT状态
在TCP连接断开时,客户端和服务器双方都需要经过TIME_WAIT状态,这个状态通常会持续2倍的MSL(Maximum Segment Lifetime,最大分段生存时间),它的作用是保证连接正常关闭,双方都能准确的知道对方是否已经关闭连接。如果不经过TIME_WAIT状态,双方都可能因为错误的快速重试而打开一个已关闭的连接,造成无法预料的后果。
扫码咨询 领取资料