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 报文,认为报文丢失,重新发送
  • 快速恢复: 当网络拥塞程度减缓时,发送方的发送速率增加,以便减轻网络拥塞

滑动窗口协议

  • 发送方维护一个窗口,指示自己可以发送的报文段数量
  • 接收方维护一个窗口,指示自己可以接收的报文段数量
  • 发送方根据接收方的反馈,调整窗口的大小,以便在网络拥塞时,减少发送报文段的数量
  • 接收方根据发送方的反馈,调整窗口的大小,以便在网络拥塞时,减少接收报文段的数量