TCP和UDP一样,属于协议栈传输层协议。TCP是面向连接的传输协议,就是说传输数据时,首先需要建立确定的连接,可以确保互相通信无障碍。
TCP的三个状态 :建立连接,数据传输,断开连接
建立连接的过程——三次握手
1. 客户端向服务端发送一个SYN。
2. 服务端紧接着向客户端回复一个SYN(ACK)
3. 客户端回复一个ACK,当服务端收到ACK,就创建一个套接字用来和客户端通信
数据传输
TCP传输协议最大的特点是传输的数据可靠。为了实现这个目的,TCP采用 数据包序列化,确认包,超时重传,校验和等。
1)确认包:收到一个或一组数据后,回复一个确认包。每个确认包都记录了一个串行号码和一个确认号。seq = 序号,ack = 序号+TCP包的长度
2) 超时重传:发送端在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。
3)校验和 :发送端计算校验和,接收端也重新计算校验和,根据两个值来确定数据包的正确性,若相等则说明是正确的,否则,相反。
断开连接
断开的时候需要四次握手。客户端和服务端都可以发起中断。以客户端为例。
1)客户端发送FIN至服务端。
2)服务端回复ACK
3)服务端发送FIN
4)客户端回复ACK