计算机网络:TCP协议

概述

  • TCP全名是(Transport Control Protocol),是一个可以提供可靠的、支持全双工、连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。 传输数据过程

TCP的特点

  • 连接
    • 是虚拟、抽象的概念
    • 能让两个通信的程序间确保彼此都在线
    • 加快响应请求速度
    • 连接也被称为会话(Session)
    • 使通信更稳定、安全
    • 消耗更多资源
  • 全双工
    • 单工:任何时刻数据只能单向发送 单工

    • 半双工:允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输 半双工

    • 全双工:任何时刻都能双向发送数据 全双工

    • 可靠的

      • 可靠性指数据保证无损传输
        • 使无序的数据恢复原有顺序
        • 多播时每个接收方都获得无损副本

TCP协议的工作过程

  • 建立连接的过程(三次握手) 建立连接的过程(三次握手)

    • 1.客户端发送SYN,服务端准备好进行连接
    • 2.服务端针对客户端的SYN给ACK,服务端发送SYN
    • 3.客户端准备就绪,客户端发送ACK
  • 断开连接的过程(四次挥手) 断开连接的过程(四次挥手)

    • 1.客户端发送断开请求FIN
    • 2.服务端收到请求,发送ACK
    • 3.服务端经过一个等待(数据处理完毕),确定可以关闭连接,发送FIN
    • 4.客户端收到FIN,处理完自己的事情后发送ACK
  • 传输数据 TCP协议组成

    • 报文拆分

      • 应用层数据很大时无法一次性传输完
      • 拆分后可实现并行传输 报文拆分
    • 顺序保证

      • 思考:如果TCP段特别多的时候,该如何进行排序?时间窗口 顺序保证

        • TCP序号:发送序号(Seq)、接收序号(Ack)
        • 一个端的发送序号是另一个端的接受序号 发送序号

TCP头部结构

  • 结构图: TCP头部结构

  • 源端口:描述发送方机器上的应用

  • 目标端口:描述接收方服务器上的应用

  • 发送序号(Seq)/接收序号(Ack)

  • 标志位

    • NS、CWR、ECE:TCP扩展协议
    • ECN:显示拥塞控制协议,有助于帮助解决延迟和丢包问题,
    • URG:紧急标志位SYN(Synchronize Sequence Numbers):同步序号,也就是在建立连接。
    • FIN: 终止连接
    • ACK(Achnowledgment):响应。
    • PSH(push):传送数据
    • RST(Reset Connection): 重置连接

TCP协议周边配置

  • 纠错能力:保证数据可靠性;
    • TCP拥有一个16bit的Checksum字段
    • Checksum是一个函数,把原文映射到一个不可逆的16bit的编码中这样就可以知道原文传输过程中有没有发生变化
  • 流控能力:协同两边速率,保证可靠性;
    • 主要目标:让发送方和接收方协商一个合理的收发速率,让两边都可以稳定的工作。
    • 利用滑动窗口
  • 拥塞控制能力:确定网络的拥堵情况决定传输速度。