一、传输层概述
1.定义
主机进程之间端到端的连通性。
该层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。其功能紧密地依赖于网络层的虚拟电路或数据报服务。
2.流程
传输层的服务一般要经历
- 传输连接建立阶段,
- 数据传送阶段,又分为以下两种形式
- 一般数据传送
- 加速数据传送
- 传输连接释放阶段
传输层中最为常见的两个协议分别是
- 传输控制协议TCP(Transmission Control Protocol
- 用户数据报协议UDP(User Datagram Protocol)) 。
传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。
传输层提供了主机应用程序进程之间的端到端的服务,
基本功能如下: - (1) 分割与重组数据
- (2) 按端口号寻址
- (3) 连接管理
- (4) 差错控制和流量控制,纠错的功能
传输层要向会话层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。
二、传输层关键技术
传输层关键技术主要围绕可靠性保障、传输效率优化及差异化服务实现展开。
1 可靠性保障技术
连接管理机制
- TCP协议通过三次握手建立连接,确保双方资源分配和参数协商完成 ;四次挥手实现有序释放连接,防止数据丢失 。该机制为数据传输提供端到端会话保障。
序列确认与重传控制 - 采用序列号标识数据字节顺序,确认号机制反馈接收状态 。动态计算往返时间(RTT)设置超时重传定时器,结合选择性重传(SACK)仅重传丢失数据包,避免全量重传带来的带宽浪费 。
差错控制体系 - 通过校验和检测数据损坏,配合自动重传请求(ARQ)实现错误恢复 。接收端严格按序重组数据,确保上层获取完整有序的数据流 。
2.传输效率优化技术
滑动窗口机制
- 发送窗口根据接收方通告窗口动态调整,实现流量控制与带宽利用率平衡 。接收窗口大小反映缓冲区容量,防止接收端溢出。
拥塞控制算法 。 - 包含慢启动、拥塞避免、快速恢复三阶段,通过拥塞窗口(cwnd)动态调节发送速率 。新增算法如BBR通过测量带宽和延迟优化吞吐量,减少传统基于丢包的判断误差。
多路复用技术 - 通过端口号实现应用进程级数据分用,支持单主机上多个应用并行通信 。源端口与目标端口的组合唯一标识通信会话。
3.差异化服务技术
协议分层设计
- TCP提供面向连接的可靠传输,适用于文件传输、网页访问等场景 ;UDP提供无连接轻量级传输,满足实时音视频、DNS查询等低延迟需求 。
服务质量(QoS)参数 - 支持配置最大报文段长度(MSS)、窗口缩放因子等参数,适应不同网络环境需求 。通过DSCP字段标记数据优先级,实现网络层QoS联动。
增强型传输协议 - 如QUIC协议在UDP基础上集成TLS加密、多路流等特性,解决TCP队头阻塞问题 。
RDMA技术通过旁路内核实现零拷贝传输,提升数据中心场景性能 。
三、传输层核心协议
1.TCP
- TCP(Transmission Control Protocol)
- 是面向连接的、可靠的进程到进程通信的协议。
TCP 提供全双工服务,即数据可在同一时间双向传输,每一个TCP 都有发送缓存和接收缓存,用来临时存储数据。
核心特性 - 面向连接 :通过三次握手建立端到端连接,确保通信双方资源
准备就绪;四次挥手有序释放连接,避免数据丢失 。 - 可靠传输 :采用序列号/确认号机制跟踪数据顺序,结合超时重
传和选择性确认(SACK)保障数据完整性 。 - 流量控制 :动态调整滑动窗口大小,防止发送速率超过接收方
处理能力。 - 拥塞控制 :通过慢启动、拥塞避免等算法自适应调节传输速率,
维护网络稳定性 。
1.1 TCP报文格式
源端口号:
- 发送方进程的端口号。
目标端口号: - 接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。
序号: - 发送端为每个字节进行编号,便于接收端正确重组。
- 当TCP从进程接收数据字节时,把它们分片成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。
确认号: - 对发送端的确认信息。
- 接收端响应消息时将会用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是X,就是表示前X-1个数据段都已经收到。
首部长度: - 用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。
控制位: - URG:紧急位。紧急指针有效位。
- ACK:确认位。只有当 ACK=1 时,确认序列号字段才有效;当 ACK=0 时,确认号字段无效。
- PSH:急迫位。标志位为 1 时,要求接收方尽快将数据段送达应用层。
- RST:重置位。当 RST 值为 1 时,通知重新建立 TCP连接。
- SYN:同步(连接)位。TCP需要建立连接时将这个值设为 1。
- FIN:断开位。当 TCP 完成数据传输需要断开连接时,提出断开连接的一方将这个值设为 1。
窗口大小: - 说明本地可接收数据段的数目。这个值的大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。
- 比如下载速度从一开始的几KB 逐渐提升到几MB 的过程。
p校验和: - 用来做差错控制。字段检验的范围包括首部和数据这两部分。数据在发送时和到达目的地时会进行校验和计算,若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。
紧急指针: - 和 URG配合使用,当 URG=1 时有效。
选项: - 在 TCP首部可以有多达 40 字节的可选信息。例如,最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最 大长度是 MSS 个字节。”
1.2典型应用场景
需高可靠性的业务:如网页访问(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP)等 。
需数据顺序性的场景:如数据库同步、远程登录(SSH)等。
2.UDP
2.1定义
- UDP(User Datagram Protocol) 。
- 是一个无连接、不保证可靠性的传输层协议,也就是说发送端不关心
发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。 - UDP 的首部结构简单,在数据传输时能实现最小的开销,如果进程想发送很短的报文而不关心可靠性,就可以使用 UDP。使用 UDP 发送很短的报文时,在发送端和接收端之间的交互要比使用 TCP 时少得多
- 因此,相比 TCP 协议,UDP 传输数据速度更快,效率更高。
2.2 核心特性
- 无连接通信 :无需握手直接发送数据包,降低传输延迟 。
- 轻量化设计 :不提供重传、拥塞控制等机制,协议头仅8字节,开销更小。
- 面向报文 :保持应用层报文边界,避免TCP的字节流合并问题 。
2.3UDP 报文格式
UDP报文格式简单清晰,一共只有四个字段:
- 源端口号
- 目的端口号
- 长度
- 检验和
源端口号(Source Port):
- 源端口号是发送数据报的应用程序所在的端口。它是一个16位的字段,取值范围是0到65535。通常情况下,源端口号由操作系统分配,用于标识发送数据报的应用程序。
目的端口号(Destination Port): - 目的端口号是接收数据报的应用程序所在的端口。它同样是一个16位的字段,取值范围也是0到65535。目的端口号用于确定数据报应该交给哪个应用程序处理。
长度(Length): - 长度字段表示整个UDP数据报的长度,包括UDP头部和数据部分。这个字段也是16位的,最小值是8,因为UDP头部的长度固定为8字节。如果数据部分的长度为0,那么整个UDP报文的长度就是8字节。
检验和(Checksum): - 检验和用于验证UDP报文在传输过程中是否发生了错误。它是一个16位的字段,通过UDP头部、数据部分以及伪首部进行计算。伪首部包括源IP地址、目的IP地址、协议号(17表示UDP)和UDP报文长度。
典型应用场景 - 实时性优先的业务:如视频会议(Zoom)、在线游戏、流媒体直播(RTSP)等 。
- 简单查询类服务:如DNS域名解析、SNMP网络管理等。