简介
TCP是一种面向连接的单播协议,在发送数据之前,通信双方之间需要建立起连接。
连接的建立和终止
- 连接需要用到两端的IP地址和端口号
- 连接分成三个阶段,分别是启动、数据传输和退出。
连接过程
TCP的连接通常被称为三次握手,采用客户机到服务器的请求方式。连接过程如下
- 客户端打开应用,同时向服务器发送连接请求,SYN=1,seq=x
- 服务器的应用被动打开。若同意客户端的请求,发回确认报文。SYN=1,ack=x+1。ACK=1,seq=y。
- 客户端此时收到了来自服务器的确认报文,向服务器发送确认连接的报文。ACK=1,ack=y+1,seq=x+1。
断开过程
TCP的连接是全双工的,因此在每个方向上都要独立的关闭。TCP支持双方的同时请求关闭的情况,但是大多数情况下,由客户端发起关闭的请求。关闭的过程也被称为四次挥手。
- 客户端发送一个FIN,用来关闭客户端到服务器端的数据传送。FIN=1,seq=u
- 服务器收到FIN,发回一个ACK,确认序号为收到的序号+1。ACK=1,seq=v。ack=u+1
- 服务器关闭和客户端的数据传送,发送一个FIN给客户端。FIN=1,ACK=1,seq=w,ack=u+1
- 客户端发回ACK报文并且确认,并将确认序号设置为收到的序号+1 .ACK=1,seq=u+1,ack=w+1