计算机网络 —— 运输层(运输层概述)

计算机网络 —— 运输层(运输层概述)

  • 运输层
  • 运输层端口号
  • 复用分用
      • 复用(Multiplexing)
      • 分用(Demultiplexing)
  • 常用端口号
  • 页面响应流程

我们今天进入到运输层的学习:

运输层

我们之前学习的物理层,数据链路层,网络层,都只是解决了计算机之间怎么交互数据?
在这里插入图片描述但是,我们一般进行交互是计算机里面一个个的进程进行交互的:
在这里插入图片描述在这里插入图片描述
运输层(Transport Layer)是计算机网络中的一个重要层次,位于OSI模型的第四层或TCP/IP模型的第二层。这一层的主要职责是负责端到端的通信(进程与进程之间的通信)即确保数据能够从源主机的应用层无差错地传输到目的主机的应用层。运输层为上层应用提供了一个屏蔽底层网络技术细节的接口,使得高层应用可以不必关心底层网络的复杂性。

运输层有两个主要的协议,分别是传输控制协议(Transmission Control Protocol, TCP)和用户数据报协议(User Datagram Protocol, UDP):

  1. 传输控制协议(TCP):TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过建立连接、数据传输和连接终止三个阶段来确保数据的可靠传输。TCP提供了错误检测、流量控制、拥塞控制等机制,以保证数据的顺序、无丢失和无重复传输,适合于对可靠性要求较高的应用,如Web浏览、电子邮件等。
  1. 用户数据报协议(UDP):UDP是一种无连接的、不可靠的、基于数据报的传输层协议。与TCP不同,UDP不建立连接,也不保证数据的可靠传输,数据包可能丢失、重复或乱序到达。但正因为省去了建立连接和维护连接状态的过程,UDP具有较低的传输延迟,适用于实时性要求高但能容忍一定数据丢失的应用,如在线视频、语音通话、游戏等。

总的来说,运输层在计算机网络中起到了承上启下的关键作用,它通过TCP和UDP两种不同的服务模式,满足了不同应用场景的需求,既保证了数据传输的可靠性,也支持了对低延迟的需求。

运输层端口号

现在有一个问题,我计算机上面的应用程序那么多,我发送信息如何让对方识别是我这个应用程序发的呢?

所以我们有了端口号的概念:

运输层端口号是一个16位的数字,用于标识网络中进程间的通信。它允许不同的应用层协议和进程在同一台主机上运行,并且能够独立接收和发送数据,而不会发生混淆。端口号的取值范围是0到65535,根据用途可分为以下几类:

  1. 熟知端口号(Well-Known Ports):范围从0到1023,这些端口被预留给标准的、众所周知的服务,如HTTP(80)、HTTPS(443)、FTP(21)等。它们由互联网数字分配机构(IANA)管理并分配给特定的服务。
  1. 登记端口号(Registered Ports):范围从1024到49151,用于已向IANA注册但不是广泛认可的服务。这些端口通常用于公司内部或者非标准化的服务。
  1. 短暂端口号(Ephemeral Ports):范围从49152到65535,这些端口用于客户端程序临时选择的,未被IANA正式分配的端口。当客户端需要发起对外连接时,操作系统会从这个范围内分配一个未被使用的端口作为源端口。

比如我规定QQ发消息用1203端口,腾讯看视频用9076端口,这样每个进程都有相对应的端口,就不会混了(还记得Tomcat的端口是8080吗?)

端口号在TCP和UDP中都存在,它们与IP地址结合形成套接字(Socket),这是网络编程中的一个基本概念,用于唯一标识网络中的应用程序进程。通过端口号,运输层能够实现复用(Multiplexing)和分用(Demultiplexing),即多个不同应用层协议或进程可以共享同一IP地址的网络连接,同时确保每个数据包都能正确地送达目标进程。

在这里插入图片描述

复用分用

复用(Multiplexing)和分用(Demultiplexing)是计算机网络中,特别是在运输层中非常重要的两个概念,它们描述了如何在单一的网络连接上高效地处理多个不同应用或服务的数据传输需求。

复用(Multiplexing)

复用是指在一个共享的通信资源(如一条网络连接)上,同时传输多路信号或数据流的技术。在运输层中,这意味着多个应用层的进程可以通过同一个IP地址和端口号组合(实际上是不同的源端口号)共享网络连接,发送数据到不同的目的地,而不会相互干扰。

例如,当你正在浏览网页(使用HTTP或HTTPS协议,通常通过端口80或443)的同时,还在使用即时通讯软件(可能使用自定义端口),尽管两者的通信都是通过同一个网络出口进行的,但运输层能够区分出哪些数据包属于网页浏览,哪些属于即时通讯,然后将它们“复用”在同一物理链路上发送出去。

分用(Demultiplexing)

分用则是复用的逆过程,它发生在数据接收端。当多个应用的数据经过复用后通过网络到达接收方时,运输层需要根据数据包中的信息(主要是目标端口号)将这些数据正确地分发到相应的应用层进程

继续上面的例子,当你的计算机接收到包含网页数据和即时通讯消息的数据包时,运输层会检查每个数据包的目标端口号,然后将网页数据分发给浏览器进程,将即时通讯消息分发给对应的聊天软件进程。这样,尽管所有数据都共享了相同的入口,但每个应用都能准确无误地获得自己的数据,这就是分用。

举个例子:

想象一家大型的快递配送中心,这个配送中心就像是计算机的运输层。

复用(Multiplexing)
假设配送中心每天要处理来自不同电商平台的大量包裹,这些包裹最终都要通过同一辆货车运送到各个居民区。为了高效利用货车的空间,配送中心会对这些包裹进行分类和标记,但不立即分配到特定的小区或门牌号,而是先全部装车。在这个过程中,虽然来自不同电商平台的包裹混在一起,但每个包裹上都有明确的标识(比如条形码或二维码),代表了它的来源和目的地信息。这就像在网络传输中,不同应用的数据包通过同一个网络出口发送,但每个数据包都包含了目标端口号这样的标识信息。

分用(Demultiplexing)
当货车到达居民区后,配送员开始根据包裹上的标识信息进行分拣。他们将来自不同电商平台的包裹分别送往不同的小区,再进一步按照门牌号精确投递。这样,尽管所有的包裹最初是混合装载的,但通过分拣过程,每个包裹都能准确无误地到达收件人的手中。在计算机网络中,这就好比运输层在接收端根据数据包中的目标端口号,将数据正确地分发给对应的应用程序,如浏览器、邮件客户端等。

通过这个例子,我们可以看到,复用允许在有限的资源(如货车/网络带宽)上高效地合并和传输多样化的数据(包裹/数据包),而分用则确保这些数据在目的地能够被正确识别并送达至各自的目的地(收件人/应用程序),整个过程既高效又有序。

简而言之,复用让多个数据流能够在单个通信通道中共存和传输,而分用则确保这些数据流在接收端能够被正确地区分开来,送达至各自的应用程序,从而实现了网络资源的有效利用和数据的有序传输。

在这里插入图片描述

常用端口号

常用端口号是指在网络通信中被广泛认知和采用的端口号,它们与特定的服务或协议关联。以下是一些常见的端口号及其对应的服务:

  1. HTTP (Hypertext Transfer Protocol): 端口号 80,用于网页浏览,尽管现在普遍使用HTTPS。
  2. HTTPS (HTTP Secure): 端口号 443,提供加密的网页浏览服务。
  3. FTP (File Transfer Protocol): 控制连接端口号 21,用于文件传输服务。
  4. SSH (Secure Shell): 端口号 22,用于安全的远程登录和文件传输。
  5. SMTP (Simple Mail Transfer Protocol): 端口号 25,用于发送电子邮件。
  6. POP3 (Post Office Protocol version 3): 端口号 110,用于接收电子邮件。
  7. IMAP (Internet Message Access Protocol): 端口号 143(非SSL)或 993(SSL),用于邮件访问和管理。
  8. DNS (Domain Name System): 端口号 53,用于域名解析服务。
  9. SQL Server: 默认端口号 1433,用于微软SQL Server数据库服务。
  10. MySQL: 默认端口号 3306,用于MySQL数据库服务。
  11. MongoDB: 默认端口号 27017,用于MongoDB数据库服务。
  12. Telnet: 端口号 23,一种古老的远程终端访问协议。
  13. LDAP (Lightweight Directory Access Protocol): 端口号 389,用于访问目录服务。
  14. HTTPS Alt (Alternative HTTPS Port): 端口号 8443,作为HTTPS的替代端口。
  15. HTTP Alt (Alternative HTTP Port): 端口号 8080,常被用作HTTP服务的替代端口,特别是测试环境或避免权限问题时。

在这里插入图片描述

页面响应流程

当您在浏览器中输入一个网页网址(URL)并按下回车键后,一系列复杂的操作在幕后迅速展开,直至您看到页面内容。在整个过程中,运输层扮演着确保端到端可靠或无连接数据传输的关键角色。

  1. 用户输入网址: 用户在浏览器地址栏输入想要访问的网址,并按下回车键。
  2. DNS查询(通过UDP): 浏览器首先需要将您输入的域名转换为服务器的IP地址。它通过运输层的UDP协议向本地DNS解析器发送查询请求,使用UDP端口53。这是因为DNS查询通常较小,对速度要求较高,UDP的无连接特性能够提供更快的查询响应,尽管牺牲了TCP提供的可靠性保证。如果DNS响应超时或失败,浏览器可能会尝试使用TCP重新进行DNS查询,以增加成功率。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  1. 解析与IP地址获取: 本地DNS服务器处理请求,如果缓存中已有记录则直接返回,否则向上级DNS服务器查询,直至获得域名对应的IP地址。
  2. 建立TCP连接: 获取到IP地址后,浏览器通过运输层的TCP协议与Web服务器建立连接,涉及三次握手过程,以确保数据传输的可靠性。此时,会指定目标端口(通常是HTTP的80或HTTPS的443)以及一个随机的源端口号。
    在这里插入图片描述
  1. 发送HTTP/HTTPS请求与接收响应: 建立连接后,浏览器通过TCP发送HTTP或HTTPS请求到服务器,并等待服务器响应。TCP负责数据包的顺序、错误检测及重传,确保请求和响应的完整性。
    在这里插入图片描述在这里插入图片描述
  1. 数据传输与页面渲染: 接收到服务器的响应数据后,TCP在接收端对数据包进行排序和错误处理,保证数据的正确性。浏览器利用这些数据渲染出网页内容。
    在这里插入图片描述
  1. 连接关闭: 数据传输完毕,TCP通过四次挥手过程关闭连接,释放资源。

在整个过程中,运输层的核心功能体现在TCP和UDP协议的使用上,特别是TCP确保了数据的可靠、有序传输,以及在端到端连接上的错误处理,这对于网页浏览这类需要高可靠性的应用至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/700538.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vitis HLS 学习笔记--矢量数据类型

目录 1. 简介 2. 用法详解 2.1 存储器布局 2.2 示例展示 2.3 综合报告 3. 总结 1. 简介 在 Vitis HLS 中,矢量数据类型是一种特殊的数据类型,它允许你一次处理多个数据元素,就像一排并排的盒子,每个盒子里都装着一个数据元…

短视频矩阵源码---矩阵托管1000个账号如何正规开发规则实现

一、短视频矩阵源码开发实现规则: 1.首先是确保各个官方平台api接口的稳定性,一定要是各个平台正规的api 2.其次是保证服务器运行,带宽保证能够并行,目前我们这边用的是源码所需服务器配置:规格:最低8核16G2、硬盘:系…

易舟云财务软件:引领财务数字化转型的新篇章

在数字化浪潮的推动下,财务软件已经成为企业财务管理不可或缺的工具。而易舟云财务软件,作为一款深受用户喜爱的财务管理系统,正引领着财务数字化转型的新篇章。 财务软件行业背景与易舟云的定位 财务软件行业正经历着前所未有的变革。随着《…

视频行人搜索 (Person Search in Videos)

文章目录 视频行人搜索 (Person Search in Videos)图像行人搜索存在问题Video PS 定义MTA-PS数据集First person search dataset in videosComplicated ambient conditions and realistic monitoring scenariosPrivacy insensitivity 方法 视频行人搜索 (Person Search in Vide…

数字芯片——时钟与复位

关于此次章节我想要探讨的问题是门控时钟的处理(Clock Gating Methodology)和时钟复位策略。在低功耗设计中,门控时钟是结构最简洁,最容易实现的电路结构。如上期所讲的,一个控制信号和时钟逻辑与在一起输出的信号作用…

万界星空科技定制化MES系统,实现数字化生产

一、MES生产管理系统强调三个方面: 1、MES是对整个车间制造过程的优化,而不是单一的解决某个生产瓶颈。 2、MES必须提供实时收集生产过程中数据的功能,并作出相应的分析和处理。 3、MES需要与计划层和控制层进行信息交互,通过企业…

程序员,真有不变的技术和稳定的工作吗?

在程序员这个充满变化和创新的领域,很多人追求“稳定”的工作,认为找到一个合适的公司和岗位就能安心一辈子。然而,技术的快速更新迭代和市场需求的不断变化,使得真正的稳定变得越来越难以捉摸。作为程序员,我们需要反…

C# Winform内嵌窗体(在主窗体上显示子窗体)

在开发Winform项目中,经常会要切换不同的窗体。通常程序都有一个主窗体,在切换窗体时往往需要关闭其他子窗体,这个实例就来介绍MDI主窗体内嵌子窗体的实现方法。 MDI主窗体要设置一个比较重要的属性,IsMdiContainertrue。子窗体的…

【云原生】创建harbor私有仓库及使用aliyun个人仓库

1.安装docker #删除已有dockersystemctl stop docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine #安装docker yum install -y docker-ce-20.10.1…

NLP中的Tokenizer分词器的概念与实现

Tokenizer 在开始学习 NLP 相关知识之前,先要学习一个叫 Tokenizer 的概念,这可谓是所有 NLP 模型开始训练前需要做的一个步骤,那么 Tokenizer 是什么? 在计算机处理一行语句的时候,我们给其输入一个 String&#xff…

Android Media Framework(五)Tunnel Mode

本篇将聚焦Android Tunnel Mode,详细解析组件之间隧道连接过程、数据传递过程、组件销毁过程。通过阅读本篇内容,我们应能对tunneled组件的连接过程和buffer分配过程有所了解。 1、Tunnel Mode介绍 IL Spec详细描述了Tunnel Component的实现方式&#x…

【ArcGISProSDK】OpenItemDialog打开文件对话框

打开单个文件 效果 代码 public async void OpenFunction() {// 获取默认数据库var gdbPath Project.Current.DefaultGeodatabasePath;OpenItemDialog openItemDialog new OpenItemDialog() { Title "打开要素文件",InitialLocation gdbPath,Filter ItemFilte…

Linux 性能优化实战

文章目录 33 | 关于 Linux 网络,你必须知道这些(上)设计高并发架构需要考虑什么?如何理解分布式?如何理解云计算?如何理解微服务?TCP/IP网络分层模型是什么?每一层的功能是什么&…

矩阵练习2

48.旋转图像 规律: 对于矩阵中第 i行的第 j 个元素,在旋转后,它出现在倒数第i 列的第 j 个位置。 matrix[col][n−row−1]matrix[row][col] 可以使用辅助数组,如果不想使用额外的内存,可以用一个临时变量 。 还可以通…

STM32项目分享:智能窗帘系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

基于VLC可见光通信的室内光通信信道信噪比分析matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... % 接收功率计算Pr …

使用spark基于出租车GPS数据实现车辆数量统计以及北京每个城区的车辆位置点数分析

使用spark基于出租车GPS数据实现车辆数量统计以及北京每个城区的车辆位置点数分析 本文将介绍如何使用pyspark以及scala实现的spark分析出租车GPS数据,具体来说,我们将计算每个北京城区内的车辆位置点数,以及统计出租车的数量。我们将使用两…

Vue 3与ESLint、Prettier:构建规范化的前端开发环境

title: Vue 3与ESLint、Prettier:构建规范化的前端开发环境 date: 2024/6/11 updated: 2024/6/11 publisher: cmdragon excerpt: 这篇文章介绍了如何在Vue 3项目中配置ESLint和Prettier以统一代码风格,实现代码规范性与可读性的提升。通过设置规则、解…

49、Flink 的数据源的 SplitReader API 详解

SplitReader API a)概述 核心的 SourceReader API 是完全异步的,但实际上,大多数 Sources 都会使用阻塞的操作,例如客户端(如 KafkaConsumer)的 poll() 阻塞调用,或者分布式文件系统&#xff…

商业智能(BI)期末复习

商业智能(BI)期末复习 商业智能(BI)期末复习 2024/06/17 13:30-15:00 1.工作簿包含工作表 2.tableau是一款轻型BI工具 3.敏捷BI成本比较低 因为可以不建立数据仓库 4.敏捷BI的能带来更高的质量系统 是在用户监督下建立起来的 …