对TCP的一些总结

80 阅读2分钟

一、TCP的三次握手(建立连接)

sequenceDiagram
    participant Client as 客户端
    participant Server as 服务端
    Client->>Server: SYN (seq=x)
    Server->>Client: SYN-ACK (seq=y, ack=x+1)
    Client->>Server: ACK (ack=y+1)

三次握手设计原理:

  1. 防止历史连接干扰
    通过第三次ACK确认,能检测到旧SYN包的无效连接请求(若旧SYN延迟到达,服务端会响应旧seq值,客户端会发现矛盾并发送RST取消连接)

  2. 双方能力验证

    • 第一次握手:验证客户端的发送能力
    • 第二次握手:验证服务端的接收+发送能力
    • 第三次握手:验证客户端的接收能力

二、TCP的四次挥手(关闭连接)

sequenceDiagram
    participant A as 主动关闭方
    participant B as 被动关闭方
    A->>B: FIN (seq=u)
    B->>A: ACK (ack=u+1)
    B->>A: FIN (seq=v)
    A->>B: ACK (ack=v+1)

四次挥手设计原理:

  1. 全双工关闭独立
    TCP是全双工协议,每个方向需要独立关闭(如同高铁双轨道需分别拆除)

  2. 处理残存数据
    收到第一次FIN后,被动关闭方需要时间处理缓冲区的剩余数据

  3. TIME_WAIT状态
    主动关闭方最后等待2MSL(最大报文生存时间),确保:

    • 可靠终止:最后的ACK丢失时能重传
    • 清除旧包:保证网络中残留报文过期

三、TCP vs UDP对比分析

特性TCPUDP
连接方式面向连接(三次握手)无连接
可靠性有序、无丢失、无重复尽力交付,可能丢包/乱序
传输效率低(交互多、头部长)高(无握手、头简短)
流量控制滑动窗口机制
拥塞控制动态调整速率(慢启动等)
应用场景文件传输、HTTP、邮件视频会议、DNS、在线游戏
pie
    title 典型应用占比
    "TCP" : 65
    "UDP" : 35

四、协议发展对比

维度TCP发展UDP发展
演进方向增强可靠性增强实时性
新技术案例TCP Fast Open (TFO)QUIC(基于UDP的可靠传输协议)
创新特征选择性确认(SACK)、零窗口探测多路复用、前向纠错(FEC)
典型成果支持HTTP/1.1、HTTPS支撑HTTP/3、WebRTC
硬件优化大文件传输专用网卡低延迟网络硬件加速

关键结论:

  1. TCP/UDP本质差异

    • TCP是保证正确性的「可靠信使」
    • UDP是追求速度的「快递小哥」
  2. 技术融合趋势

    graph LR
     传统TCP-->HTTP/3
     传统UDP-->|QUIC协议|HTTP/3
    

    现代协议(如HTTP/3)通过QUIC在UDP基础上实现TCP的可靠性,同时保持低延迟特性

  3. 选择标准

    • 需要可靠传输:银行交易(选TCP)
    • 需要实时响应:直播弹幕(选UDP)
    • 混合需求:视频会议(UDP+前向纠错)