前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中… 

计网期末复习指南(一):计算机网络体系结构计网期末复习指南(二):物理层计网期末复习指南(三):数据链路层
计网期末复习指南(四):网络层计网期末复习指南(三):运输层计网期末复习指南(六):应用层

计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)插图


目录

一.运输层概述

二.TCP协议

▐ 可靠传输的工作原理

停止等待ARQ(Stop-and-Wait ARQ)

回退N步ARQ(Go-Back-N ARQ)

选择性重传ARQ(Selective Repeat ARQ)

示例说明

▐ TCP的特点

▐ 三次握手与四次挥手

▐ TCP报文结构

▐ 超时重传时间 

详细步骤

示例计算

三.UDP协议

▐ UDP的特点

▐ UDP报文结构

▐ UDP的工作过程

四.UDP与TCP的比较

五.端口

▐ 端口号的分类

▐ 常见的端口号


一.运输层概述

在计算机网络中,运输层(Transport Layer)是OSI(开放系统互联)模型中的第四层,它位于网络层之上,会话层之下。运输层的主要功能是为应用层提供可靠的端到端通信服务,确保数据在网络中传输的完整性和顺序性。

在TCP/IP模型中向上为应用层提供通信服务,从通信和信息处理的角度上来说,运输层属于面向通信部分的最高层,同时也是用户功能中的最底层。运输层主要提供应用进程之间的逻辑通信,它与网络层的区别在于,网络层主要为主机之间通信提供服务,而运输层则在网络层的基础上,为应用进程之间的通信提供服务。

  • OSI模型:在OSI模型中,运输层位于网络层之上,会话层之下,主要负责端到端的数据传输和控制。
  • TCP/IP模型:在TCP/IP模型中,运输层对应于传输层,负责提供传输服务,主要包括TCP和UDP协议。

根据应用程序的不同需求,运输层主要提供俩中不同的运输协议:面向连接的TCP和无连接的UDP。通过使用TCP和UDP协议,运输层满足了不同应用对传输服务的需求,既能提供高可靠性,也能满足对低延迟的要求。

运输层的功能大致总结如下

  1. 数据分段与重组

    • 运输层将来自应用层的大块数据分成更小的段,以便通过网络传输。
    • 到达目的地后,运输层负责将这些段重新组装成原来的数据。
  2. 端到端连接

    • 运输层在发送端和接收端之间建立和维护连接,确保数据的有序传输。
    • 提供连接管理,包括建立连接、数据传输和连接释放。
  3. 流量控制

    • 运输层通过流量控制机制,防止发送端发送数据过快而导致接收端缓存溢出。
    • 常见的流量控制机制包括滑动窗口协议。
  4. 错误检测与纠正

    • 运输层使用校验和等技术检测数据传输中的错误。
    • 提供错误恢复机制,如重传错误数据段,以确保数据的完整性。
  5. 可靠传输

    • 通过确认和重传机制,确保数据段成功送达接收端。
    • 提供超时重传机制,当确认未在预期时间内收到时,重传数据段。
  6. 多路复用与多路分解

    • 运输层通过端口号区分不同的应用进程,允许多个应用共享同一个网络连接。
    • 多路复用:将来自不同应用的数据封装到相同的网络连接上。
    • 多路分解:将收到的数据段分发到正确的应用进程。

二.TCP协议

TCP协议(Transmission Control Protocol,传输控制协议)是一种基于连接的、可靠的、面向字节流的传输层通信协议。它是Internet协议套件中的一部分,用于实现可靠的数据传输。

TCP协议提供了可靠的、有序的、面向连接的数据传输。它通过建立连接、拆分数据成小块(称为段),并使用确认和重传机制来确保数据的可靠传输。TCP通过流量控制和拥塞控制机制,调整数据的传输速率,以避免网络拥塞和丢包现象。

TCP协议提供了端到端的传输,即数据从发送方传输到接收方,保持了数据的完整性和顺序。它还支持全双工通信,即发送和接收数据同时进行。TCP协议使用IP地址和端口号来标识发送方和接收方,以便正确地将数据传输到目标设备上的相应进程。

▐ 可靠传输的工作原理

我们说TCP协议是属于可靠传输协议,对于这里的可靠性,我们需要通过一种机制来保证。

自动重传请求(Automatic Repeat reQuest,ARQ)是一种可靠传输机制,用于确保数据在通信过程中正确、无误地到达接收方。ARQ机制通过在数据包出错或丢失时重新传输数据包来实现可靠传输。ARQ主要有三种类型:停止等待ARQ、回退N步ARQ(Go-Back-N ARQ)和选择性重传ARQ(Selective Repeat ARQ)。

停止等待ARQ(Stop-and-Wait ARQ)

在停止等待ARQ中,发送方发送一个数据包后必须等待接收方的确认(ACK)才能继续发送下一个数据包。如果在一定时间内未收到确认,发送方会重传该数据包。

工作原理:

  1. 发送方发送数据包,并启动定时器。
  2. 接收方收到数据包后,发送确认(ACK)回给发送方。
  3. 发送方收到确认后,发送下一个数据包。
  4. 如果发送方未在超时时间内收到确认,重传数据包。

优点:实现简单。

缺点:信道利用率低,因为发送方必须等待确认后才能发送下一个数据包。

回退N步ARQ(Go-Back-N ARQ)

在Go-Back-N ARQ中,发送方可以连续发送多个数据包,而不必等待每个数据包的确认。接收方按序接收数据包,若发现某个数据包有错误或丢失,接收方将丢弃该数据包以及其后的所有数据包,并发送该错误数据包的编号回给发送方。发送方收到该编号后,回退到该编号重新发送。

工作原理:

  1. 发送方连续发送多个数据包,并为每个数据包分配序列号。
  2. 接收方收到数据包后,按序确认(ACK)已收到的数据包。
  3. 如果接收方发现某个数据包有错误或丢失,发送一个负确认(NAK)或不发送确认。
  4. 发送方收到NAK或超时后,回退到错误数据包的序列号,重新发送从该序列号开始的所有数据包。

优点:提高了信道利用率。

缺点:重传开销较大,因为需要重传错误数据包之后的所有数据包。

选择性重传ARQ(Selective Repeat ARQ)

在选择性重传ARQ中,发送方也可以连续发送多个数据包,但接收方只请求重传有错误或丢失的数据包,而不是所有后续数据包。接收方会缓存按序到达的数据包,并在收到所有必要的数据包后将其按序提交给上层应用。

工作原理:

  1. 发送方连续发送多个数据包,并为每个数据包分配序列号。
  2. 接收方收到数据包后,发送确认(ACK)已收到的数据包。
  3. 如果接收方发现某个数据包有错误或丢失,只请求重传该数据包。
  4. 发送方只重传接收方请求的有错误或丢失的数据包。

优点:

  • 提高了信道利用率。
  • 减少了重传开销,因为只重传有错误或丢失的数据包。

缺点:

  • 实现较复杂,需要接收方具备缓存能力以按序存储和重组数据包。

示例说明

假设窗口大小为N,数据包按序号编号为1, 2, 3, …, n。

停止等待ARQ

  • 发送方发送数据包1,等待ACK1。
  • 收到ACK1后,发送数据包2,等待ACK2。
  • 重复上述过程。

回退N步ARQ

  • 发送方连续发送数据包1, 2, 3, …, N。
  • 接收方按序接收并确认(ACK1, ACK2, …)。
  • 如果数据包3丢失,接收方丢弃后续包,发送ACK2(或NAK3)。
  • 发送方收到ACK2(或NAK3),重传数据包3及后续数据包。

选择性重传ARQ

  • 发送方连续发送数据包1, 2, 3, …, N。
  • 接收方按序接收并确认(ACK1, ACK2, …)。
  • 如果数据包3丢失,接收方发送NAK3。
  • 发送方只重传数据包3。

▐ TCP的特点

TCP协议的主要特点包括:面向连接、可靠传输、流量控制、差错检测

  1. 面向连接:TCP 是面向连接的协议,在数据传输前需要建立连接,并在传输完成后释放连接。三次握手(Three-way Handshake):建立连接的过程。四次挥手(Four-way Handshake):断开连接的过程。

  2. 可靠传输:TCP 提供可靠的数据传输,通过序列号、确认号和重传机制确保数据的完整性和顺序性。超时重传:如果数据包未在预期时间内收到确认,TCP 会重传数据包。

  3. 流量控制:TCP 使用滑动窗口机制来控制发送方发送数据的速率,防止接收方缓存溢出。

  4. 拥塞控制:TCP 包括拥塞控制算法,如慢启动、拥塞避免、快速重传和快速恢复,以防止网络拥塞。

在上述特点中,滑动窗口机制和拥塞控制算法非常的重要,需要明白大致是怎么样个流程。

▐ 三次握手与四次挥手

三次握手本质上是建立连接的过程,分为以下三步骤

  • SYN:客户端向服务器发送一个 SYN (synchronize) 包,表示请求建立连接。
  • SYN-ACK:服务器接收到 SYN 包后,向客户端发送一个 SYN-ACK 包,表示同意建立连接并进行确认。
  • ACK:客户端接收到 SYN-ACK 包后,向服务器发送一个 ACK (acknowledgment) 包,表示确认连接建立。

连接建立完成后,客户端和服务器可以开始数据传输。

在数据传输又包含了以下要点

  • 数据分段:TCP 将大块数据分段成适合网络传输的小段,每个段都有序列号。
  • 确认机制:接收方收到数据段后,发送确认包 (ACK) 给发送方,确认已接收到的数据段。
  • 重传机制:如果发送方未在预期时间内收到确认包,会重传数据段。
  • 窗口机制:滑动窗口用于流量控制,决定发送方在未接收到确认前可以发送的数据量。

四次挥手本质上是断开连接的过程

  • FIN:一方(通常是客户端)发送一个 FIN (finish) 包,表示希望关闭连接。
  • ACK:接收方接收到 FIN 包后,发送一个 ACK 包,表示确认接收到关闭请求。
  • FIN:接收方也发送一个 FIN 包,表示同意关闭连接。
  • ACK:发送方接收到 FIN 包后,发送一个 ACK 包,表示确认关闭连接。

连接释放完成后,双方的通信连接正式断开。

▐ TCP报文结构

TCP 报文段由头部和数据部分组成。头部的结构如下:

字段名长度 (比特)描述
源端口16发送方的端口号
目的端口16接收方的端口号
序列号32数据段的序列号
确认号32确认收到的数据的序列号
数据偏移4TCP 头部的长度
保留字段3保留字段,通常为 0
标志位9控制标志,如 SYN、ACK、FIN
窗口大小16流量控制,表示接收方的缓冲区大小
校验和16用于错误检测
紧急指针16紧急数据的指针
选项和填充可变可选字段,用于扩展功能
数据可变实际传输的数据

TCP 适用于需要高可靠性和顺序性的数据传输的应用,TCP的应用场景包含:

  • 网页浏览 (HTTP/HTTPS):确保网页内容完整地传输。
  • 文件传输 (FTP):确保文件不丢失和损坏。
  • 电子邮件 (SMTP/IMAP/POP3):确保邮件内容正确传输。

▐ 超时重传时间 

在TCP中,计算超时重传时间(Retransmission Timeout, RTO)是确保数据可靠传输的关键部分。TCP使用自适应的算法来计算这个时间,以适应不同网络条件下的延迟变化。这个算法基于测量往返时间(Round-Trip Time, RTT)并进行统计处理。以下是计算RTO的主要步骤:

1. 测量往返时间(RTT)

  • RTT:发送数据包到接收到相应确认(ACK)的时间。

2. 计算平滑的往返时间(RTTs)

  • 初始情况下,TCP设置一个估计的RTT。
  • 当实际测量到RTT时,TCP更新平滑的RTT(RTTs):RTTs=(1−α)×RTTs+α×RTT
    通常,α的值为0.125(即1/8)。

3. 计算RTT的变化(RTTd)

  • RTTd表示RTT的变化范围,用于估计RTT的波动:RTTd=(1−β)×RTTd+β×∣RTT−RTTd∣
    通常,β的值为0.25(即1/4)。

4. 计算重传超时时间(RTO)

  • 最终,RTO由 RTTs 和 RTTd 决定:RTO=RTTs+max(1, 4×RTTd)
    其中,max(1,4×RTTd) 确保RTO不会过小。

详细步骤

  1. 初始设置

    • RTTs 设为第一次测得的RTT。
    • RTTd 设为第一次测得的RTT/2。
    • RTO=RTTs+max(1, 4×RTTd)。
  2. 更新算法

    • 每次测得新的RTT时,计算RTT偏差(RTT – RTTs)。
    • 更新RTTd:

      RTTd=(1−0.25)×RTTd+0.25×∣RTT−RTTs∣

    • 更新SRTT:

      RTTs=(1−0.125)×RTTs+0.125×RTT

    • 计算新的RTO:

      RTO=SRTT+max(1, 4×RTTd)

示例计算

假设我们测量到的RTT值依次为:100ms, 120ms, 110ms, 90ms。

  1. 初始值

    • 第一次RTT:100ms
    • RTTs = 100ms
    • RTTd = 100 / 2 = 50ms
    • RTO = 100 + max(1, 4×50) = 100 + 200 = 300ms
  2. 第二次RTT:120ms

    • 偏差 = 120 – 100 = 20ms
    • 更新RTTd:RTTd = 0.75 imes 50 + 0.25 imes 20 = 37.5ms
    • 更新RTTs :RTTs = 0.875 imes 100 + 0.125 imes 120 = 102.5ms
    • 计算新的RTO:RTO = 102.5 + max(1, 4×37.5) = 102.5 + 150 = 252.5ms
  3. 第三次RTT:110ms

    • 偏差 = 110 – 102.5 = 7.5ms
    • 更新RTTd:RTTd = 0.75 imes 37.5 + 0.25 imes 7.5 = 30ms
    • 更新RTTs :RTTs = 0.875 imes 102.5 + 0.125 imes 110 = 103.44ms
    • 计算新的RTO:RTO = 103.44 + max(1, 4×30)= 103.44 + 120 = 223.44ms

通过以上步骤,TCP可以自适应地调整RTO,以适应不同网络条件下的延迟变化,确保数据传输的可靠性。


三.UDP协议

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议。它通过将数据分割成称为数据报的小单元来传输数据,每个数据报都包含源和目的端口号等信息。与TCP协议不同,UDP不提供可靠性、流控制、拥塞控制或错误检测和重传等功能。UDP被广泛用于需要实时性和可能容忍丢包的应用,如音视频传输、在线游戏、广播等。

▐ UDP的特点

  • 无连接:UDP是无连接的协议,数据可以在任何时候发送,而不需要先建立连接。每个数据包(称为数据报)独立传输,彼此之间没有任何关联。

  • 不可靠传输:UDP不保证数据包的送达顺序,也不保证数据包的送达。没有确认机制、重传机制或超时重传机制。

  • 轻量级:UDP的头部开销较小,总共只有8个字节。由于没有连接建立、维护和释放过程,UDP的开销比TCP更小,适用于对传输速度要求高但对可靠性要求低的应用。

  • 实时性:由于没有流量控制和拥塞控制,UDP可以提供较低的延迟。适用于实时应用,如视频流、在线游戏和语音通话等。

▐ UDP报文结构

UDP报文段由头部和数据部分组成,头部的结构如下:

字段名长度 (比特)描述
源端口16发送方的端口号
目的端口16接收方的端口号
长度16UDP头部和数据的总长度
校验和16用于错误检测
数据可变实际传输的数据
  0      7 8     15 16    23 24    31 (位)
 +--------+--------+--------+--------+
 |  源端口号  |  目的端口号  |
 +--------+--------+--------+--------+
 |   长度   |  校验和   |
 +--------+--------+--------+--------+

▐ UDP的工作过程

UDP是一种无连接的传输层协议,它的工作过程如下:

  1. 应用程序发送数据报:应用程序将要发送的数据报传递给UDP协议。
  2. 数据报划分成数据段:根据UDP协议的要求,将数据报分割成一个个数据段,每个数据段包含一个头部和一部分数据。
  3. 添加UDP头部:在每个数据段的开头添加UDP协议的头部,包括源端口号和目的端口号等信息。
  4. 数据发送:将数据段通过网络发送给目的主机。
  5. 数据接收:目的主机接收到数据段后,将其交给UDP协议。
  6. 检查数据完整性:UDP协议检查数据段的完整性,如果校验和出现错误,则丢弃该数据段。
  7. 数据分组重组:UDP协议将接收到的数据段按照序列号重新组装成完整的数据报,并将其传递给应用程序。
  8. 应用程序接收数据报:应用程序接收到UDP传递的数据报,进行处理。

UDP的工作过程简单高效,但不保证数据的可靠性和顺序性。

由于没有建立连接和提供流量控制机制,UDP通常被用于那些对数据传输速度和实时性要求较高、对数据可靠性要求较低的应用,如音频、视频、实时游戏等。


四.UDP与TCP的比较

  • 连接性

    • TCP:面向连接,数据传输前需建立连接。
    • UDP:无连接,数据随时可以发送。
  • 可靠性

    • TCP:提供可靠传输,保证数据的完整性和顺序。
    • UDP:不保证数据的送达和顺序。
  • 开销

    • TCP:头部较大,包含流量控制、拥塞控制等机制。
    • UDP:头部开销小,无流量控制和拥塞控制。
  • 延迟

    • TCP:较高的延迟,适合需要高可靠性的应用。
    • UDP:较低的延迟,适合实时性要求高的应用。

五.端口

前文中反复提到一个关键词——端口

在计算机网络中,端口是一个逻辑概念,用于标识特定的网络服务或应用进程。端口号是一个 16 位的整数,范围从 0 到 65535。它在运输层协议(如 TCP 和 UDP)中用于区分同一主机上不同的应用程序或服务。

端口是网络通信中用于标识特定进程或网络服务的一个编号。它与 IP 地址结合使用,形成一个完整的网络端点(也称为套接字)。每个网络连接可以通过一个唯一的 IP 地址和端口号对来标识。

端口的作用

  1. 区分应用程序:不同的应用程序和服务通过不同的端口号进行通信。这样,即使它们在同一主机上运行,也可以互不干扰。

  2. 网络服务定位:客户端应用程序可以通过特定的端口号连接到服务器上的特定服务。例如,Web 服务器通常监听 80 或 443 端口,FTP 服务器监听 21 端口。

▐ 端口号的分类

端口号根据用途和管理方式,可以分为以下几类:

  1. 知名端口号(Well-known Ports):范围:0-1023

    这些端口号通常分配给常见的标准服务。例如:

    • SSH:22
    • FTP:21
    • HTTPS:443
    • HTTP:80
  2. 注册端口号(Registered Ports):范围:1024-49151

    这些端口号通常分配给用户或组织注册的应用程序和服务。例如:

    • Microsoft SQL Server:1433
    • MySQL 数据库:3306
  3. 动态/私有端口号(Dynamic/Private Ports):范围:49152-65535

    这些端口号通常用于客户端应用程序动态分配的临时通信。客户端在与服务器建立连接时,会从这个范围内分配一个临时端口号。

▐ 常见的端口号

下面是常见端口号及其对应的服务的表格:

端口号协议服务名称描述
20TCPFTP Data文件传输协议 (数据传输)
21TCPFTP文件传输协议 (控制)
22TCPSSH安全外壳协议,用于加密的远程登录
23TCPTelnet明文远程登录协议
25TCPSMTP简单邮件传输协议
53UDPDNS域名系统
67UDPDHCP Server动态主机配置协议 (服务器端)
68UDPDHCP Client动态主机配置协议 (客户端)
80TCPHTTP超文本传输协议
110TCPPOP3邮局协议版本3
119TCPNNTP网络新闻传输协议
123UDPNTP网络时间协议
143TCPIMAP互联网消息访问协议
161UDPSNMP简单网络管理协议
194TCPIRC互联网中继聊天
443TCPHTTPS安全的超文本传输协议
465TCPSMTPS用于加密的简单邮件传输协议
993TCPIMAPS用于加密的互联网消息访问协议
995TCPPOP3S用于加密的邮局协议版本3
1433TCPMicrosoft SQL ServerMicrosoft SQL Server 数据库
3306TCPMySQLMySQL 数据库
3389TCPRDP远程桌面协议
5432TCPPostgreSQLPostgreSQL 数据库
6379TCPRedisRedis 内存数据库
8080TCPHTTP Alternate备用 HTTP 端口



计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)插图(1) 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)插图(2)如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)插图(3)有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)插图(3)

本站无任何商业行为
个人在线分享 » 计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)
E-->