1. 传输层的作用概述


  • 提供 TCP/UDP 的数据传输服务
  • 维护会话状态
  • 对应用层数据进行分段和封装
  • 执行流量控制(Window 窗口大小)
  • TCP(IP 协议号 6) 面向连接(可靠),开销大(Header 复杂);在不可靠的链路可靠传输
  • 「UDP(IP 协议号 17)」: 无连接(不可靠),开销小(Header 简单);在较可靠的链路上传输
  • 「TCP/UDP」都是依靠端口号转发
  • 「TCP/UDP」不能被分片
  • 通过端口实现多路复用,可用的端口号最大 65535(216)
  • 小于1024(0~1023)的端口号为知名端口号(已有协议使用),其他为随机端口

    2. TCP


  • 面向连接,可靠的传输层协议,因为三次握手建立连接,四次挥手断开连接和重传机制
  • 端口号大的一端主动发起连接

image.png

1)建立和端口 Session 过程

TCP是一个[双向]协议,先建立「Session」(三次握手)在传输数据。如果 TCP 数据包丢了,可以通过「序列号(seq)」找出并重传丢失的数据包

image.jpeg

2)TCP Header Message 格式

TCP标准 Header 长度 20Byte。如果有可选项,长度持续增大

image.png

  • TCP Header Message 字段解释
    • Source Port:源端口
    • Destination Port:目的端口
    • Sequence Number:32bit,序列号(随机数),丢失检测、乱序重排
    • Acknowledgment Number:32bit,确认号(对端序列号+1)
    • Data Offset:4bit,Header 长度
    • Flags
      • URG:紧急位(需要尽快传送的高优先级流量,与紧急指针联动)
      • ACK:确认建立会话
      • PSH:尽快推送给应用层
      • RST:重新连接
      • SYN:请求建立会话(三次握手)
      • FIN:中止会话(四次挥手)
    • Window:16bit,滑动窗口(流控,控制发送数据 Byte 的大小)
    • Checksum:校验和
    • Urgent Pointer:紧急指针
    • Options:可选项
      • 常用「MSS(最大段尺寸)」 = MTU - IP Header - TCP Header

        3. UDP


  • 无连接,不可靠的传输协议,尽最大努力交付
  • 没有拥塞控制(没有流量控制)
  • 支持一对一、一对多、多对一和多对多
  • 首部开销小

    1)UDP Header 报文格式

    UDP Header 长度 8Byte

image.png

  • UDP Header 报文字段解释
    • Source Port:源端口
    • Destination Port:目的端口
    • Length:总长度(UDP Header + Data)
    • Checksum:校验和
    • Data:数据