TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。以下是对TCP协议的一些笔记要点:
tcp与udp区别:
1. 面向连接
- TCP在数据传输之前,需要先建立一个连接,这个过程称为“三次握手”。
- 连接的建立保证了数据传输的两端都准备好进行通信。
2. 三次握手
- 第一次握手:客户端发送一个SYN(同步序列编号)报文到服务器,并进入SYN_SENT状态,等待服务器确认。
- 第二次握手:服务器收到SYN报文,需要确认客户端的SYN,同时自己也发送一个SYN报文,即SYN+ACK(确认)报文,此时服务器进入SYN_RCVD状态。
- 第三次握手:客户端收到服务器的SYN+ACK报文后,向服务器发送确认包ACK,此包发送完毕,客户端和服务器都进入ESTABLISHED状态,完成TCP三次握手。
3. 可靠传输
- TCP通过序列号、确认应答、重传机制、流量控制、拥塞控制等手段保证数据的可靠传输。
建⽴连接(标志位):通信前确认通信实体存在。
序号机制(序号、确认号):确保了数据是按序、完整到达。
数据校验(校验和):CRC校验全部数据。
超时重传(定时器):保证因链路故障未能到达数据能够被多次重发。
窗⼝机制(窗⼝):提供流量控制,避免过量发送。
- 序列号:TCP将每个字节的数据都进行了编号,确保数据的有序传输。
- 确认应答:接收方收到数据后,会发送确认应答(ACK),如果发送方在合理的时间内没有收到ACK,会重传数据。
- 重传机制:包括超时重传和快速重传两种策略。
4. 流量控制
- TCP使用滑动窗口机制进行流量控制,避免发送方发送数据过快,接收方来不及接收。
- 窗口大小会根据网络状况动态调整。
5. 拥塞控制
- TCP的拥塞控制算法包括慢开始、拥塞避免、快重传和快恢复。
- 目的是避免网络拥塞导致数据传输效率降低。
6. 四次挥手
- 当通信结束时,TCP连接通过四次挥手来释放。
- 过程包括:终止方发送FIN报文,对方确认ACK,然后对方发送FIN报文,终止方确认ACK。
7. TCP头部
- TCP头部包含源端口、目的端口、序列号、确认应答号、数据偏移、保留、控制位、窗口大小、校验和、紧急指针等字段。
8. 状态转换
- TCP连接的建立、数据传输、连接释放过程中,涉及到多种状态转换,如LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT等。
9. 应用场景
- TCP适用于对数据准确性要求较高的场景,如文件传输、邮件传输、网页浏览等。