传输层基础概念
- [1. 传输层基础概念](#1. 传输层基础概念)
-
- [1.1 传输层的定义与作用](#1.1 传输层的定义与作用)
- [1.2 传输层在网络模型中的位置](#1.2 传输层在网络模型中的位置)
- [1.3 传输层与其他层的关系](#1.3 传输层与其他层的关系)
- [1.4 传输层的主要功能](#1.4 传输层的主要功能)
-
- [1.4.1 复用与分用](#1.4.1 复用与分用)
- [1.4.2 连接管理](#1.4.2 连接管理)
- [1.4.3 可靠传输](#1.4.3 可靠传输)
- [1.4.4 流量控制](#1.4.4 流量控制)
- [1.4.5 拥塞控制](#1.4.5 拥塞控制)
- [1.4.6 差错控制](#1.4.6 差错控制)
- [1.4.7 服务质量保证](#1.4.7 服务质量保证)
1. 传输层基础概念
1.1 传输层的定义与作用
传输层是计算机网络体系结构中的第四层,位于网络层之上,应用层之下。它是整个网络体系结构中的关键部分,提供了端到端的通信服务,使得应用程序能够在不同主机之间可靠地交换数据,而无需关心底层网络的复杂性。
传输层的核心作用可以概括为以下几点:
-
提供端到端的通信服务:传输层建立了应用进程之间的逻辑通信,使得通信双方的应用进程认为它们是直接相连的,尽管实际上它们可能位于地球的两端,中间经过了复杂的网络路径。
-
屏蔽底层网络的差异:传输层向上层提供统一的接口,使应用层无需关心底层网络的具体实现和差异,从而简化了应用程序的开发。
-
提供多种服务质量选择:传输层提供了不同类型的服务(如TCP的可靠传输和UDP的快速传输),应用程序可以根据自身需求选择合适的传输服务。
-
实现数据的可靠传输:通过各种机制(如确认、重传、流量控制等)确保数据能够正确、完整地从源主机传输到目标主机。
-
提供多路复用与分用功能:允许多个应用进程共享网络资源,并确保数据能够准确地交付给正确的应用进程。
传输层的出现解决了一个关键问题:如何在不可靠的网络基础设施上构建可靠的通信服务。在互联网发展的早期,网络基础设施并不稳定,数据包可能会丢失、损坏或乱序到达。传输层通过一系列精心设计的协议和机制,使得应用程序能够在这种不可靠的环境中进行可靠的通信。
1.2 传输层在网络模型中的位置
传输层在不同的网络模型中都占有重要位置。在两个最著名的网络模型中,传输层的定位如下:
OSI七层模型中的传输层
在OSI(开放系统互连)七层模型中,传输层是第四层,位于网络层之上,会话层之下。其主要职责是提供端到端的可靠数据传输服务,并执行流量控制和差错控制。
OSI七层模型从下到上依次为:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
TCP/IP四层模型中的传输层
在实际应用更为广泛的TCP/IP四层模型中,传输层同样位于网络层之上,应用层之下。TCP/IP模型从下到上依次为:
- 网络接口层
- 互联网层(对应OSI的网络层)
- 传输层
- 应用层(对应OSI的会话层、表示层和应用层)
在TCP/IP模型中,传输层的主要协议是TCP(传输控制协议)和UDP(用户数据报协议),它们分别提供了面向连接的可靠传输服务和无连接的不可靠传输服务。
传输层的数据单元
传输层处理的数据单元通常称为"段"(segment)或"数据报"(datagram):
- TCP处理的数据单元称为"段"(TCP segment)
- UDP处理的数据单元称为"数据报"(UDP datagram)
这些数据单元包含了传输层的头部信息(如源端口、目标端口、校验和等)和来自上层的数据。
传输层的地址机制
传输层使用"端口号"(port number)作为地址机制,用于标识同一主机上的不同应用进程。端口号是一个16位的数值,范围从0到65535:
- 0-1023:熟知端口(Well-known ports),分配给常用服务
- 1024-49151:注册端口(Registered ports),分配给用户进程或应用程序
- 49152-65535:动态或私有端口(Dynamic or Private ports),临时分配给客户端程序
通过IP地址和端口号的组合,传输层能够唯一地标识网络中的每个应用进程,实现精确的数据交付。
1.3 传输层与其他层的关系
传输层在网络体系结构中扮演着承上启下的角色,它与相邻的网络层和应用层有着密切的交互关系。
与网络层的关系
传输层依赖于网络层提供的服务,主要关系包括:
-
服务依赖:传输层使用网络层提供的主机到主机的数据传输服务,在此基础上提供进程到进程的通信服务。
-
地址转换:传输层需要将应用层使用的端口号与网络层使用的IP地址结合,形成完整的通信标识(套接字)。
-
数据封装:传输层将自己的头部信息(包含端口号等)添加到应用层数据之前,然后交给网络层进行进一步封装。
-
服务质量映射:传输层可能需要将应用层的服务质量要求映射到网络层的服务质量参数上。
-
错误处理:传输层可能需要处理网络层报告的错误,如ICMP(互联网控制消息协议)消息。
与应用层的关系
传输层为应用层提供服务,主要关系包括:
-
服务提供:传输层通过套接字接口向应用层提供数据传输服务,应用程序通过API调用这些服务。
-
服务类型选择:应用层可以根据需求选择使用TCP或UDP服务,分别适用于对可靠性要求高和对实时性要求高的场景。
-
数据边界处理:TCP提供字节流服务,不保留应用层消息的边界;而UDP保留消息边界,一次读取一个完整的数据报。
-
流量控制:传输层实现的流量控制机制可以防止应用层发送数据过快,导致接收方缓冲区溢出。
-
连接管理:对于使用TCP的应用,传输层负责管理连接的建立、维护和终止,应用层通过这些连接发送和接收数据。
数据流转过程
一个完整的数据传输过程中,传输层的数据流转如下:
发送方向:
- 应用层将数据交给传输层
- 传输层添加自己的头部(包含源端口、目标端口等信息)
- 传输层将数据段/数据报交给网络层
- 网络层添加IP头部并进行路由
- 数据通过数据链路层和物理层传输到目标主机
接收方向:
- 数据通过物理层和数据链路层到达目标主机
- 网络层处理IP头部,确认数据是发给本机的
- 网络层将数据交给传输层
- 传输层根据头部中的端口号,确定数据应该交给哪个应用进程
- 传输层将数据交给相应的应用进程
这种分层设计使得每一层都可以专注于自己的功能,同时通过标准化的接口与相邻层交互,实现了模块化和灵活性。
1.4 传输层的主要功能
传输层提供了多种关键功能,使其成为网络通信中不可或缺的一部分。以下是传输层的主要功能:
1.4.1 复用与分用
**复用(Multiplexing)**是指多个应用进程共享同一个传输层协议和网络层服务的能力。在发送方,传输层从多个应用进程收集数据,添加适当的头部信息后,将它们交给网络层。
**分用(Demultiplexing)**是指接收方传输层根据头部信息(主要是端口号)将收到的数据正确地分发给不同的应用进程。
复用和分用功能使得多个应用可以同时使用网络资源,大大提高了网络的利用效率。
实现机制
传输层通过端口号和套接字实现复用与分用:
- 端口号:16位数值,用于标识主机上的应用进程
- 套接字(Socket):IP地址和端口号的组合,唯一标识网络中的一个应用进程
在TCP中,分用基于四元组(源IP、源端口、目标IP、目标端口);而在UDP中,分用仅基于二元组(目标IP、目标端口)。
1.4.2 连接管理
对于面向连接的传输协议(如TCP),连接管理是一项重要功能,包括连接的建立、维护和终止。
连接建立:在数据传输前,需要通过握手过程建立连接,确认双方都准备好进行通信,并协商通信参数。
连接维护:在数据传输过程中,需要维护连接状态,处理可能出现的各种异常情况。
连接终止:在数据传输完成后,需要通过挥手过程正常关闭连接,释放资源。
连接管理确保了通信双方的同步,并为可靠传输提供了基础。
1.4.3 可靠传输
可靠传输是传输层的核心功能之一,特别是对于TCP这样的可靠传输协议。它通过多种机制确保数据能够正确、完整地从发送方传输到接收方。
确认机制:接收方通过发送确认消息,告知发送方已成功接收的数据。
重传机制:当发送方在一定时间内未收到确认,或收到重复确认时,会重新发送未被确认的数据。
序列号:为每个数据段分配唯一的序列号,用于标识数据顺序和检测丢失或重复的数据。
校验和:通过计算校验和,检测传输过程中可能出现的数据错误。
这些机制共同作用,使得即使在不可靠的网络环境中,也能提供可靠的数据传输服务。
1.4.4 流量控制
流量控制是防止发送方发送数据的速率超过接收方处理能力的机制。它主要解决的是通信双方速率不匹配的问题。
滑动窗口机制:接收方通过通告窗口大小,告知发送方自己能够接收的数据量,发送方据此调整发送速率。
零窗口探测:当接收方通告窗口为零时,发送方会定期发送探测包,检查接收方是否已经有能力接收更多数据。
流量控制确保了通信的平稳进行,防止了接收方缓冲区溢出导致的数据丢失。
1.4.5 拥塞控制
拥塞控制是防止过多数据注入到网络中,导致网络性能下降的机制。它主要解决的是网络资源有限的问题。
慢启动:连接初始阶段,发送方会以较低的速率发送数据,然后逐渐增加发送速率。
拥塞避免:在接近网络容量时,发送方会谨慎地增加发送速率,避免造成拥塞。
快速重传和快速恢复:当检测到轻微拥塞时,发送方会迅速减小发送速率,但不会回到最初的低速状态。
拥塞控制不仅保护了网络,也提高了整体的网络效率,使得所有用户都能获得合理的服务质量。
1.4.6 差错控制
差错控制是检测和处理传输过程中可能出现的错误的机制。
校验和:通过计算校验和,检测数据在传输过程中是否被损坏。
确认和重传:当检测到错误或丢失的数据时,通过重传机制恢复数据。
序列号和确认号:用于检测重复的数据段或丢失的数据段。
超时机制:当长时间未收到确认时,假定数据或确认已丢失,触发重传。
差错控制确保了数据的完整性和正确性,是可靠传输的重要组成部分。
1.4.7 服务质量保证
不同的应用对网络服务有不同的要求,传输层通过提供不同类型的服务,满足各种应用的需求。
可靠性:对于文件传输、电子邮件等应用,数据的完整性和正确性至关重要,TCP提供了可靠传输服务。
实时性:对于视频会议、在线游戏等应用,数据的及时到达比完全可靠更重要,UDP提供了低延迟的传输服务。
带宽:对于流媒体等应用,需要保证一定的带宽,传输层可以通过拥塞控制和流量控制机制间接地影响带宽分配。
延迟和抖动:对于实时应用,除了低延迟外,还需要保证延迟的稳定性(低抖动),传输层可以通过适当的缓冲机制减少抖动。
通过提供这些不同类型的服务,传输层能够满足各种应用的需求,为互联网上丰富多样的应用提供支持。