计算机网络期末复习 (5)第五章运输层

运输层在计算机网络的七层OSI模型中处于网络层之上,应用层之下,它的主要职责是为应用进程之间的通信提供支持。以下是运输层的一些关键概念和职责:

运输层的主要功能

  1. 端到端通信

    • 运输层协议,如TCP和UDP,负责在两台主机的应用进程之间建立端到端的通信,而不仅仅是主机到主机的通信。
  2. 复用与分用

    • 复用:运输层将多个应用进程的数据复用到同一网络连接上,确保不同应用的数据可以同时在网络上传输。
    • 分用:在接收端,运输层根据数据包中的端口号将数据分发给正确的应用进程。
  3. 可靠性和服务质量

    • TCP提供了面向连接的服务,确保数据的可靠性,包括错误检测、丢失重传、顺序保证和流量控制。
    • UDP则提供了一种尽力而为的服务,不保证数据的可靠传输,但提供了较低的延迟和开销。
  4. 差错控制

    • 运输层通常提供某种形式的差错控制机制,例如TCP中的校验和和确认应答机制。
  5. 流量控制

    • 防止发送方的数据发送速率超过接收方的处理能力,避免网络拥塞。
  6. 拥塞控制

    • 在网络资源紧张时,运输层协议如TCP还提供机制以减少发送速率,防止网络过载。
  7. 多路复用与解复用

    • 使用端口号来区分不同的应用进程,实现多路复用和解复用。

运输层协议

  • TCP (Transmission Control Protocol):提供了一个全双工的、可靠的、面向连接的字节流服务,适用于要求高可靠性的应用,如Web浏览、文件传输和电子邮件。
  • UDP (User Datagram Protocol):提供了一个不可靠的、无连接的服务,适用于那些对速度有较高要求而对可靠性要求较低的应用,如实时音频/视频传输、DNS查询和游戏。

运输层与网络层的区别

  • 网络层关注的是主机到主机的通信,而运输层关注的是进程到进程的通信。
  • 网络层处理的是IP数据报或分组,而运输层处理的是报文段(对于TCP)或用户数据报(对于UDP)。

运输层通过抽象掉下层网络的复杂性,为上层应用提供了简单、一致的接口,使得应用开发人员无需关心底层网络的具体实现细节。



用户数据报协议UDP与传输控制协议TCP是运输层的两种主要协议,它们各自针对不同的网络需求和应用场景提供了不同的服务。下面是两者的主要对比:

用户数据报协议UDP

  • 无连接:UDP是一种无连接的协议,发送数据前不需要先建立连接,减少了通信延迟,适合实时应用如语音和视频流传输。

  • 支持多种通信模式:UDP不仅支持一对一通信,还支持一对多、多对一和多对多的广播或组播通信,适用于需要向多个接收者发送数据的场景。

  • 尽最大努力交付:UDP不提供数据包的可靠传输,即不保证数据包的顺序、完整性和重复问题,也不进行流量控制和拥塞控制,适用于对数据完整性要求不高但对传输延迟敏感的应用。

  • 首部开销小:UDP首部只有8字节,比TCP更轻量级,降低了处理开销,提高了数据传输效率。

传输控制协议TCP

  • 面向连接:TCP是一种面向连接的协议,发送数据前必须先建立连接(三次握手),确保了数据传输的可靠性和顺序性,适合于需要高度可靠的数据传输的应用。

  • 一对一通信:每一条TCP连接只能有两个端点,即只支持一对一的通信方式。

  • 可靠传输:TCP提供了流量控制和拥塞控制机制,通过序列号、确认应答、重传机制等保证数据的可靠传输,适合于需要数据完整性和顺序的应用,如网页浏览、文件传输等。

  • 首部开销较大:TCP首部最小20字节,最大可达60字节,比UDP的首部开销大,但也提供了更多的控制信息和功能。

总结

UDP和TCP的选择取决于具体的应用需求。UDP适合于实时性要求高、数据包丢失可以容忍的场景,如在线游戏、实时音视频通信等;而TCP则适合于需要高可靠性和数据完整性的场景,如文件传输、网页浏览等。V

在TCP协议中,流量控制是确保数据在发送方和接收方之间平稳传输的关键机制之一。流量控制的主要目的是防止发送方发送数据的速度超过接收方处理数据的能力,以免造成接收方缓冲区溢出。TCP使用滑动窗口机制来实施流量控制,其中"接收窗口"(rwnd)是一个关键参数,表示接收方当前可以接受多少额外数据而不至于溢出其缓冲区。

TCP流量控制示例

初始状态

假设主机A向主机B发送数据,初始时,主机B通告其接收窗口大小为某个非零值,比如100字节。

流量控制触发
  1. 主机A开始发送数据,比如发送了从序号1到序号100的数据。
  2. 主机B接收到数据后,发送ACK确认,同时通告其接收窗口大小,比如rwnd=300
  3. 主机A继续发送数据,直到某时刻主机B的接收缓冲区快满了,于是将接收窗口调整为0,并发送一个ACK,告知主机Arwnd=0,意味着暂停发送更多数据。
死锁情况

如果主机B后来接收缓冲区再次腾出了空间,比如rwnd=300,但是它发送的通告rwnd=300的数据包丢失了,主机A由于不知道B的缓冲区已有空间,将继续等待,形成一种死锁状态。

解决死锁:零窗口探测

为了解决这种死锁情况,TCP引入了零窗口探测机制:

  1. 主机A启动持续计时器,当持续计时器超时后,会发送一个特殊的零窗口探测报文,这个报文通常携带1字节的数据。
  2. 主机B接收到零窗口探测报文后,对其进行确认(ACK),并通告自己的接收窗口大小,比如rwnd=300
  3. 主机A收到确认后,得知主机B的缓冲区已腾出空间,可以继续发送数据,打破了之前的死锁状态。

小结

零窗口探测机制是TCP协议中解决接收窗口为零时可能发生的死锁问题的有效方法。通过发送少量数据(通常是1字节)作为探测报文,可以触发接收方更新接收窗口大小,从而允许发送方继续发送数据。这种方式既避免了缓冲区溢出,也确保了数据传输的连续性和效率。

TCP的流量控制机制是确保数据在网络中稳定传输的重要组成部分,尤其在处理不同速度的网络设备间的通信时。下面是对TCP流量控制机制的详细说明:

流量控制的重要性

在数据传输过程中,发送方和接收方的数据处理能力可能不同。如果发送方的数据传输速率超过了接收方的处理能力,接收方的缓冲区可能会溢出,导致数据包丢失。为了避免这种情况发生,TCP协议通过流量控制机制来调节发送方的发送速率,确保接收方能够及时处理接收到的数据。

滑动窗口机制

TCP的流量控制主要通过滑动窗口(sliding window)机制实现。滑动窗口是一个动态调整的窗口,表示接收方当前可以接收的数据量。每当接收方接收到数据后,它会向发送方发送一个确认(ACK),其中包含一个接收窗口(Receive Window,rwnd)的大小,告诉发送方它可以接收多少字节的数据。

发送窗口与接收窗口

  • 接收窗口(rwnd):由接收方确定,表示接收方当前可用的缓冲区大小,用于接收更多的数据。
  • 发送窗口(cwnd):由发送方根据接收方的接收窗口和网络状况动态调整,表示发送方可以发送但尚未收到确认的数据量。

零窗口通知与零窗口探测

  • 零窗口通知:当接收方的缓冲区满时,它会发送一个零窗口通知给发送方,此时发送方应停止发送数据,等待接收方的缓冲区腾出空间。
  • 零窗口探测:如果发送方收到零窗口通知,它会启动持续计时器。当持续计时器超时后,发送方会发送一个特殊的小数据包(通常为1字节),称为零窗口探测报文。这有助于检测接收方的接收窗口是否已经重新打开。

动态调整与重传机制

  • 动态调整:发送方会根据接收到的确认信息动态调整其发送窗口的大小,以适应网络条件的变化。
  • 重传机制:如果发送方未在合理时间内收到确认,或者持续计时器超时,它会重传未确认的数据包。

通过上述机制,TCP能够有效地控制数据的发送速率,确保数据在网络中可靠、有序地传输,同时避免了网络拥塞和数据丢失的情况。

TCP的拥塞控制

TCP的拥塞控制TCP的拥塞控制是网络通信中的一项重要机制,用于防止网络拥塞的发生,确保网络资源的公平分配和有效利用。网络拥塞通常发生在数据传输量超过了网络的承载能力时,这会导致数据包的大量丢弃、延迟增加和吞吐量下降,严重影响网络性能。TCP通过以下几种拥塞控制算法来应对这一挑战:

慢启动(Slow Start)

慢启动算法是TCP拥塞控制的基础,其目标是在连接建立初期逐步增加发送速率,避免突然大量数据涌入网络。慢启动使用一个名为"拥塞窗口"(Congestion Window,cwnd)的参数,初始值较小,每收到一个确认应答,cwnd就增加一个MSS(最大段长度)。当cwnd达到阈值ssthresh(slow start threshold)时,慢启动结束,进入拥塞避免阶段。

拥塞避免(Congestion Avoidance)

一旦慢启动结束,TCP进入拥塞避免阶段。在这个阶段,cwnd的增长速度减慢,不再是每收到一个确认就增加一个MSS,而是按照线性增长的方式,每次增加一个MSS/cwnd。这样做的目的是在接近网络容量时更加谨慎地增加发送速率,避免突然的拥塞。

快重传(Fast Retransmit)

快重传算法改进了传统的重传机制,当发送方连续收到三个重复的ACK时,它认为网络中很可能发生了数据包丢失,而不是等到重传计时器超时才重传丢失的数据包。这种方法可以更快地恢复丢失的数据,减少拥塞的可能性。

快恢复(Fast Recovery)

快恢复算法与快重传配合使用,当检测到数据包丢失时,TCP并不会立即回到慢启动阶段,而是进入快恢复阶段。在这个阶段,ssthresh设置为当前cwnd的一半,然后cwnd设置为ssthresh+3*MSS,之后每收到一个确认,cwnd增加一个MSS/ssthresh,直到收到丢失数据包的确认,然后进入拥塞避免阶段。

TCP Reno

TCP Reno是最早广泛应用的拥塞控制算法,它结合了慢启动、拥塞避免、快重传和快恢复算法。当检测到网络拥塞时,它会迅速降低发送速率,以减轻网络负担。

新型拥塞控制算法

除了经典的TCP Reno算法,还有多种新型的拥塞控制算法被提出,如CUBIC、BIC、Hybla等,它们旨在提高网络的效率和公平性,适应更复杂的网络环境,如移动网络和数据中心网络。

TCP的拥塞控制机制是动态的,会根据网络状况自动调整,以平衡数据传输速度和网络稳定性,确保网络资源的高效利用。


TCP的拥塞控制是网络通信中的一项重要机制,用于防止网络拥塞的发生,确保网络资源的公平分配和有效利用。网络拥塞通常发生在数据传输量超过了网络的承载能力时,这会导致数据包的大量丢弃、延迟增加和吞吐量下降,严重影响网络性能。TCP通过以下几种拥塞控制算法来应对这一挑战:

慢启动(Slow Start)

慢启动算法是TCP拥塞控制的基础,其目标是在连接建立初期逐步增加发送速率,避免突然大量数据涌入网络。慢启动使用一个名为"拥塞窗口"(Congestion Window,cwnd)的参数,初始值较小,每收到一个确认应答,cwnd就增加一个MSS(最大段长度)。当cwnd达到阈值ssthresh(slow start threshold)时,慢启动结束,进入拥塞避免阶段。

拥塞避免(Congestion Avoidance)

一旦慢启动结束,TCP进入拥塞避免阶段。在这个阶段,cwnd的增长速度减慢,不再是每收到一个确认就增加一个MSS,而是按照线性增长的方式,每次增加一个MSS/cwnd。这样做的目的是在接近网络容量时更加谨慎地增加发送速率,避免突然的拥塞。

快重传(Fast Retransmit)

快重传算法改进了传统的重传机制,当发送方连续收到三个重复的ACK时,它认为网络中很可能发生了数据包丢失,而不是等到重传计时器超时才重传丢失的数据包。这种方法可以更快地恢复丢失的数据,减少拥塞的可能性。

快恢复(Fast Recovery)

快恢复算法与快重传配合使用,当检测到数据包丢失时,TCP并不会立即回到慢启动阶段,而是进入快恢复阶段。在这个阶段,ssthresh设置为当前cwnd的一半,然后cwnd设置为ssthresh+3*MSS,之后每收到一个确认,cwnd增加一个MSS/ssthresh,直到收到丢失数据包的确认,然后进入拥塞避免阶段。

TCP Reno

TCP Reno是最早广泛应用的拥塞控制算法,它结合了慢启动、拥塞避免、快重传和快恢复算法。当检测到网络拥塞时,它会迅速降低发送速率,以减轻网络负担。

新型拥塞控制算法

除了经典的TCP Reno算法,还有多种新型的拥塞控制算法被提出,如CUBIC、BIC、Hybla等,它们旨在提高网络的效率和公平性,适应更复杂的网络环境,如移动网络和数据中心网络。

TCP的拥塞控制机制是动态的,会根据网络状况自动调整,以平衡数据传输速度和网络稳定性,确保网络资源的高效利用。




TCP的可靠传输实现依赖于一系列精心设计的机制,确保数据在不可靠的网络环境中能够准确无误地传输。以下是TCP实现可靠传输的关键点:

字节流与滑动窗口

TCP将数据视为一个连续的字节流,使用滑动窗口机制来控制数据的发送和接收。滑动窗口允许发送方在未收到确认的情况下,将一定数量的数据发送出去,同时确保接收方只接收落在其接收窗口内的数据。发送窗口的大小根据接收方的接收能力和网络的拥塞情况动态调整。

窗口值的同步与调整

虽然发送方的发送窗口基于接收方的接收窗口设置,但实际操作中,这两个窗口的大小可能并不完全一致。窗口值的同步和调整需要时间,而且网络的不确定性可能导致延迟。此外,发送方还可能根据网络的实时拥塞状况,主动减小自己的发送窗口,以避免加剧网络拥塞。

不按序数据的处理

TCP能够处理不按序到达的数据。接收方会暂时存储这些数据,在缺失的数据包到达后,按序重组数据流,再交付给上层应用进程。这样做避免了数据的重复传输,提高了网络资源的利用率。

确认机制

TCP要求接收方实现累积确认和捎带确认,以减少确认应答的传输开销。累积确认允许接收方累积多个数据包的确认,而捎带确认则允许在发送数据的同时携带确认信息。接收方不应过度延迟发送确认,以避免发送方不必要的超时重传,浪费网络资源。TCP标准建议确认延迟时间不应超过0.5秒。

全双工通信

TCP支持全双工通信,即通信双方可以同时发送和接收数据。这意味着每一方都有自己的发送窗口和接收窗口,需要独立管理。全双工特性使得TCP能够高效地处理双向数据流,即使在大多数应用程序不同时在两个方向上发送数据的情况下。

综上所述,TCP通过滑动窗口、数据排序、确认机制以及全双工通信等多种机制,实现了在网络层不可靠传输的基础上构建可靠的数据传输服务,确保了数据的准确性和完整性,同时优化了网络资源的利用效率。TCP的可靠传输实现依赖于一系列精心设计的机制,确保数据在不可靠的网络环境中能够准确无误地传输。以下是TCP实现可靠传输的关键点:

字节流与滑动窗口

TCP将数据视为一个连续的字节流,使用滑动窗口机制来控制数据的发送和接收。滑动窗口允许发送方在未收到确认的情况下,将一定数量的数据发送出去,同时确保接收方只接收落在其接收窗口内的数据。发送窗口的大小根据接收方的接收能力和网络的拥塞情况动态调整。

窗口值的同步与调整

虽然发送方的发送窗口基于接收方的接收窗口设置,但实际操作中,这两个窗口的大小可能并不完全一致。窗口值的同步和调整需要时间,而且网络的不确定性可能导致延迟。此外,发送方还可能根据网络的实时拥塞状况,主动减小自己的发送窗口,以避免加剧网络拥塞。

不按序数据的处理

TCP能够处理不按序到达的数据。接收方会暂时存储这些数据,在缺失的数据包到达后,按序重组数据流,再交付给上层应用进程。这样做避免了数据的重复传输,提高了网络资源的利用率。

确认机制

TCP要求接收方实现累积确认和捎带确认,以减少确认应答的传输开销。累积确认允许接收方累积多个数据包的确认,而捎带确认则允许在发送数据的同时携带确认信息。接收方不应过度延迟发送确认,以避免发送方不必要的超时重传,浪费网络资源。TCP标准建议确认延迟时间不应超过0.5秒。

全双工通信

TCP支持全双工通信,即通信双方可以同时发送和接收数据。这意味着每一方都有自己的发送窗口和接收窗口,需要独立管理。全双工特性使得TCP能够高效地处理双向数据流,即使在大多数应用程序不同时在两个方向上发送数据的情况下。

综上所述,TCP通过滑动窗口、数据排序、确认机制以及全双工通信等多种机制,实现了在网络层不可靠传输的基础上构建可靠的数据传输服务,确保了数据的准确性和完整性,同时优化了网络资源的利用效率。






相关推荐
hahaha601636 分钟前
ARINC818协议-持续
网络·fpga开发
Zz_waiting.39 分钟前
网络原理 - 初识网络 1
网络
卓豪终端管理1 小时前
如何安全地管理固定功能设备?
java·大数据·开发语言·网络·人工智能·安全
2302_799525742 小时前
【Linux】第十章 配置和保护SSH
linux·服务器·网络
庸子3 小时前
计算机网络参考模型
网络·osi七层模型
CQU_JIAKE4 小时前
4.15【Q】netsafe
网络
小杨xyyyyyyy4 小时前
计算机网络 - UDP协议
网络·网络协议·计算机网络·面试·udp
阳光普照世界和平9 小时前
网络安全与信息安全防护措施
网络·安全
学不完的9 小时前
ospf综合实验
网络·智能路由器
-曾牛9 小时前
Git完全指南:从入门到精通版本控制 ------- Git仓库创建 (5)
大数据·网络·git·学习·elasticsearch·个人开发