p4
- tcp 基于字节流
- 无边界的字节流,需要对数据进行分割
- 粘包问题,解决方法:
- 发送方: 发送数据前,先将数据包的长度信息发送给对方
- 接收方: 接收到数据包长度信息后,根据长度信息,将数据包拆分为多个数据包进行处理
面向连接的 tcp 协议,需要建立连接,断开连接,保证数据传输的可靠性 缓冲传输
tcp报文格式
- 紧急指针: 紧急数据指针,只有紧急数据才会使用紧急指针,紧急数据是指需要立即传输的数据
- 选项字段: 选项字段,可以携带一些控制信息,如窗口大小,最大报文段长度,时间戳等
tcp三次握手
- 第一次握手: 客户端发送 SYN 报文,服务器收到后,发送 SYN+ACK 报文,客户端收到后,发送 ACK 报文
- 第二次握手: 客户端发送 ACK 报文,服务器收到后,发送 ACK 报文
- 第三次握手: 客户端发送 ACK 报文,服务器收到后,连接建立完成
tcp四次挥手
- 第一次挥手: 客户端发送 FIN 报文,服务器收到后,发送 ACK 报文,客户端收到后,进入 TIME-WAIT 状态
- 第二次挥手: 服务器发送 FIN 报文,客户端收到后,发送 ACK 报文,服务器收到后,进入 CLOSED 状态
- 第三次挥手: 服务器发送 ACK 报文,客户端收到后,进入 CLOSED 状态
- 第四次挥手: 客户端发送 ACK 报文,服务器收到后,进入 CLOSED 状态
tcp拥塞控制
- 慢启动: 开始时,发送方的发送速率较低,逐渐增大,以便逼近网络的实际速率
- 拥塞避免: 网络拥塞时,发送方的发送速率降低,以防止网络过载
- 快速重传: 接收方收到重复的 ACK 报文,认为是丢包,立即重传丢失的报文段
- 超时重传: 发送方在一段时间内没有收到 ACK 报文,认为报文丢失,重新发送
- 快速恢复: 当网络拥塞程度减缓时,发送方的发送速率增加,以便减轻网络拥塞
滑动窗口协议
- 发送方维护一个窗口,指示自己可以发送的报文段数量
- 接收方维护一个窗口,指示自己可以接收的报文段数量
- 发送方根据接收方的反馈,调整窗口的大小,以便在网络拥塞时,减少发送报文段的数量
- 接收方根据发送方的反馈,调整窗口的大小,以便在网络拥塞时,减少接收报文段的数量