IP传输层协议在通信系统中的介绍
一、三种传输层协议简介
1、用户数据包协议(UDP)
UDP是一个简单的传输层协议。应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装成一个IP数据报,然后发往到目的地。
UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。每个UDP数据报都有一个长度。如果一个数据报正确地到达其目的地,那么该数据报的长度将随数据一道传递给接收端应用进程。
TCP是一个字节流协议,没有任何记录边界,这一点不同于UDP。UDP提供无连接的服务,因为UDP客户与服务器之间不必存在任何长期的关系。
举例来说,一个UDP客户可以创建一个套接字并发送一个数据报给一个给定的服务器,然后立即用同一个套接字发送另一个数据报给另一个服务器。同样地,一个UDP服务器可以用同一个UDP套接字从若干个不同的客户接收数据报,每个客户一个数据报。
2、传输控制协议(TCP)
由TCP向应用进程提供的服务不同于由UDP提供的服务。
(1)面向连接的通信
TCP提供客户与服务器之间的连接。TCP客户先与某个给定服务器建立一个连接,再跨该连接与那个服务器交换数据,然后终止这个连接。
(2)可靠性的通信
当TCP向另一端发生数据时,它要求对端返回一个确认。如果没有收到确认,TCP就自动重传数据并等待更长的时间。在数次重传失败后,TCP才放弃,如此在尝试发送数据上所花的总时间一般为4~10分钟。
(3)自动排序与重复性检测
TCP通过给其中每个自己关联一个序列号对所发送的数据进行排序。
举例来说,假设一个应用写2048字节到一个TCP套接字,导致TCP发送2个分节:第一个分节所含数据的序列号为1~1024,第二个分节所含数据的序列号1025~2048.(分节是TCP传递给IP的数据单元。)如果这些分节非顺序到达,接收端TCP将先根据它们的序列号重新排序,再把结果数据传递给接受应用。如果接收端TCP接收到来自对端的重复数据,它可以判定数据是重复的,从而丢弃重复数据。
(4)TCP提供流量控制。
TCP总是告知对端在任何时刻它一次能够从对端接收多少字节的数据,这称为通告窗口。
在任何时刻,该窗口指出接收缓冲区中当前可用的空间量,从而确保发送端发送的数据不会使接收缓冲区溢出。该窗口时刻动态变化:当接收到来自发送端的数据时,窗口大小就减小,但是当接收端应用从缓冲区中读取数据时,窗口大小就增大。
通告窗口大小减小到0是可能的:当TCP对应某个套接字的接收缓冲区已满,导致它必须等待应用从该缓冲区读取数据时,方能从对端再接收数据。
3、流控制传输协议(SCTP)
SCTP提供的服务与UDP和TCP提供的类似。SCTP在客户和服务器之间提供关联,并像TCP那样给应用提供可靠性、排序、流量控制以及全双工的数据传送。
SCTP中使用“关联”一词取代“连接”是为了避免这样的内涵,一个连接口涉及两个IP地址之间的通信。一个关联指代两个系统之间的一次通信,它可能因为SCTP支持多宿而涉及不止两个地址。
二、典型应用和关键特性
在通信系统中,不同的网络平面负责不同类型的任务,而TCP、UDP、SCTP这三种传输层协议凭借各自的特点,为这些平面提供了差异化的支持。为了让你快速把握核心关系,下面这个表格汇总了它们在不同通信平面中的典型应用和依据的关键特性。
通信平面 | 核心职责 | 首选协议 | 关键协议特性利用 |
|---|---|---|---|
管理面 | 设备监控、配置、告警 | TCP | 可靠连接、有序交付、确保配置指令无误 |
业务数据面 | 传输用户实际数据(如网页、视频) | UDP (实时媒体) | 低开销、高效率 (UDP) |
同步面 | 保持设备间时间/频率同步 | UDP | 低延迟、可容忍一定程度丢包 |
信令面 | 建立、维护、拆除通信连接 | SCTP | 多宿、多流、消息边界、可靠性 |
三、协议与平面搭配的深层原因
理解协议为何适用于特定平面,需要深入其技术细节。
1、管理面与TCP的可靠性
管理操作(如设备配置、软件升级)要求指令万无一失且顺序正确。TCP通过确认、重传、排序机制保障数据可靠有序送达,其流量控制能避免管理指令压垮网络。
2、业务数据面与协议选择
业务数据面根据业务类型选择协议:
- UDP用于实时业务:视频会议、在线游戏等应用追求低延迟,能容忍少量数据丢失。UDP无需建连、没有重传机制,开销小、传输快的特点正合需求。
- TCP用于可靠业务:网页浏览(HTTP)、文件传输(FTP)等要求数据完整无误,TCP的可靠性和流量控制能确保数据正确传输。
3、同步面与UDP的效率
时间同步协议(如NTP)通常使用UDP。同步信息需频繁发送,且网络延迟抖动比偶尔丢包影响更大。UDP的低延迟特性至关重要。
4、信令面与SCTP的先进性
信令面负责控制通信连接,对可靠、高效和韧性要求高。SCTP的现代特性在此凸显:
- 多宿:通信两端可绑定多个IP地址,当主要路径故障,自动切换到备用路径,极大增强可靠性。
- 多流:在单一关联内建立多个独立的逻辑流。一个流的丢包或阻塞不会影响其他流,有效解决了TCP的"队头阻塞"问题。
- 消息边界:SCTP是面向消息的,能保持应用消息的完整边界,非常适合信令消息的传输。
四、如何选择传输层协议
在实际项目或学习中,你可以参考以下思路来选择或理解协议的应用:
1、评估应用的核心需求
- 绝对可靠性优先:如关键配置、金融交易,选TCP。
- 速度和实时性优先:如视频直播、电话、实时游戏,可考虑UDP,或在应用层设计容错。
- 需要可靠性与消息结构,且连接易中断:如信令传输、关键任务通信,深入研究SCTP。
2、考虑网络环境
- 网络质量差、延迟高、丢包多时,TCP的重传可能加剧拥堵,需优化或谨慎使用。
- 有冗余网络路径且要求高可用时,SCTP的多宿是显著优势。
3、了解SCTP的适用场景
SCTP虽强大,但在编程和支持上不如TCP/UDP普遍。它特别适用于:
- 4G/5G基站信令(如S1接口)。
- 需要避免队头阻塞的Web应用(如通过HTTP/2 over SCTP)。
- 对网络故障恢复有极高要求的系统。
