Skip to content

TCP/IP ​

TCP/IP ​

TCP/IP 协议族包含两个常见传输层协议,传输控制协议(TCP)、用户数据协议(UDP)

TCP——UDP ​

  • TCP 数据传输单位 TCP 报文段,UDP 数据传输单位 UDP 报文或者用户数据报
  • TCP 面向连接,UDP 面向无连接
  • TCP 提供有序可靠的字节流;UDP 自身不保证交付、顺序或去重
  • TCP 与 UDP 的性能取决于负载和应用协议,不能仅凭头部复杂性断言传输效率

TCP ​

传输控制协议,面向连接,可靠。一旦数据报被破坏或丢失将会重新传输,TCP 会检测传输错误并予修正,可靠全双工数据传输协议服务

主要功能 ​

  • 数据流的多路复用
  • 检测数据段完整性
  • 重新排序
  • 流量监控
  • 复杂的时钟机制
  • 高效的确认方式

TCP 报文 ​

TCP报文信息

  • 端口号:用来标识同一台计算机的不同的应用进程
    • 源端口:源端口和 IP 地址的作用是标识报文的返回地址
    • 目的端口:端口指明接收方计算机上的应用程序接口
  • 发送序列号
  • 确认号
  • 报头长度
  • 预留
  • 编码位
    • URG:紧急指针
    • ACK:确认号有效
    • PSH:要求接收端尽快将这个报文交给应用层
    • RST:复位一个 TCP 连接
    • SYN:同步序列号用于建立连接
    • FIN:发送端完成任务并要求终止传输
  • 窗口
  • 紧急指针
  • 选项
  • 填充
  • 数据

TCP 三次握手 ​

以下为客户端主动连接、握手报文不携带应用数据的普通情况。x、y 是双方初始序列号;SYN 各占一个序列号,ACK 标志本身不占序号。

方向标志seqack
客户端 → 服务端SYNx无有效确认号
服务端 → 客户端SYN, ACKyx+1
客户端 → 服务端ACKx+1y+1

确认号表示期望收到的下一个序号,不是“对端序号加随机数”。例如 x=100、y=300,后两次确认分别为 101 和 301。依据 RFC 9293 三次握手。

四次挥手 ​

  • 客户端发送---------------------FIN,ACK---------------------------->服务端

    FIN(终止传输)、ACK(确认收到最后一个包)

  • 客户端<--------------------------ACK-------------------------------------服务端发送

    ACK(确认收到)

  • 客户端<--------------------------FIN--------------------------------------服务端发送

    FIN(终止发送)

  • 客户端发送----------------------ACK----------------------------------->服务端

    ACK(确认终止发送)

UDP ​

继续阅读