介绍 TCP服务的特点,TCP报文的结构,TCP的状态转移,TCP对于流的控制机制(TCP的拥塞控制)

  1. TCP的特点: 可靠的,面向连接的传输层协议,TCP是一种基于数据流的协议,UDP是一种基于数据包的协议,两种的区别如下: Pasted image 20241204170839.png
  2. TCP头部结构如下: Pasted image 20241204170951.png 解释一下比较重要的几个数据:
    • 源头端口号: 对应发送数据的进程
    • 目的段口号: 对应接受数据的进程
    • 序号: 建立连接的时候分配一个初始的序号,之后传输的数据报的序号就是在当前字节流中的偏移量加上初始序号
    • 确认号: 接收方发送给发送方的,发送方发送过来的序号加上 1就是确认号
    • 头部长度
    • URG: 是否使用紧急指针,ACK: 确认报文,表示确认号是否有效,PSH: 表示高速接受方尽快处理缓冲区中的数据,RST: 复位连接,SYN: 建立连接,FIN: 表示结束连接
    • 窗口大小: 流量控制的一个手段,这里是指的RWVD告诉接受缓冲区中的剩余容量
    • 紧急指针: 一个偏移量,表示紧急数据的位置
  3. TCP: 的头部选项,有很多作用并且格式相对来说比较固定,可以见 P34
  4. TCP连接的建立和关闭,三次握手和四次挥手: Pasted image 20241204171844.png
  5. 上图中,客户端接收到来自服务器端的FIN之后就会进入半关闭状态,经过2MSL就会关闭连接,MSL表示TCP数据报存在的时间
  6. 如果由于网络原因可能发生TCP的连接超时,连接超时就会导致重试,一般来说重试的时间由内核参数规定
  7. TCP状态转移图,注意是TCP两端分别的状态转移图形,可以使用netstat命令查看TCP状态: Pasted image 20241204172325.png
  8. 三次握手,四次挥手的过程中TCP连接状态的变化如下: Pasted image 20241204172441.png
  9. TIMEWAIT 状态存在的作用: 可靠的终止TCP连接(接受所有迟到的数据报),保证让迟到的数据报有足够的时间被识别并且丢弃
  10. 复位报文段出现的情景: 访问不存在的端口,异常终止连接,处理半打开连接(比较复杂)
  11. TCP交互数据流: 发送的数据很少,接收方对于每一个数据报都会发送确认报文, TCP成块数据流: 一次发送大量数据,接收方批量进行数据的确认
  12. 带外数据(也就是TCP中的紧急数据)
  13. TCP的超时重传: 区分连接的超时重试,表示没有接收到数据报的确认需要之后的重传
  14. TCP拥塞控制: 最终需要控制 -> SWND(也就是一次发送的数据),需要依赖于RWNDCWND(拥塞窗口),根据拥塞窗口的大小来控制拥塞,最终关系: RWND = min(CWND , SWND)即可
  15. 实现措施: 当没有发生拥塞的时候: 慢启动和拥塞避免, 真正发生拥塞的时候: 快速重传和快速恢复操作(详细的说明可以参考 《计算机网络:自顶向下方法》》)