什么是TCP协议?
TCP是传输控制协议,是一个面向连接的协议,在使用TCP协议收发数据前,必须和对方建立可靠的连接,一个TCP连接必须要经过3次“对话”才能建立起来。
第一次对话:由主机A发送一个请求连接的消息报文给主机B。
第二次对话:由主机B发送同意连接和要求同步的数据包。
第三次对话:由主机A发送一个数据包确认主机B要求同步。
同步就是两台主机一个发送,一个接收,协调工作。
三次“对话”的目的是使数据包的发送和接受同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
TCP的三次握手
TCP建立可靠连接的三次对话过程也被称作为三次握手。
在了解TCP的三次握手前,需要先了解几个概念。
- Seq: 序列号,根据序列号标识某个操作。
- Ack: 确认标志,如果确认某个操作,则回复Ack=对方主机Seq+1。
- SYN: 同步标志。
- FIN: 结束标志。
TCP的四次挥手
TCP的四次挥手是为了正常断开连接,并保证传输的数据的完整性。
TCP的四次挥手不一定是由Client发起的,Client和Server均可以发起四次挥手,断开连接。
为什么TCP是三次握手,四次挥手?
- 当Server端接收到Client端发送的SYN(同步标志)连接请求的消息报文之后,可以直接发送Ack+SYN报文给Client,其中Ack表示应答,确认,SYN报文是表示同步。
- 但是当被动方接受到FIN(结束标志)消息报文之后,很可能不会立即关闭Socket,所以只能先回复一个Ack表示同意结束连接。
- 当被动方的所有报文发送完毕,发会发送FIN(结束标志)报文,所以TCP是四次挥手断开连接。
总而言之,TCP协议之所以是三次握手,四次挥手,全部都是为了保证数据传输的完整性。