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

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

  • 运输层
  • 运输层端口号
  • 复用分用
      • 复用(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确保了数据的可靠、有序传输,以及在端到端连接上的错误处理,这对于网页浏览这类需要高可靠性的应用至关重要。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新大屏幕互动系统PHP源码 附动态背景图和配乐素材

本文来自:最新大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程 - 源码1688 应用介绍 简介: 最新大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程 测试环境:NginxPHP7.0MySQL5.6 前端图片: 后台图片&#x…

0106__Linux下反编译命令objdump快速学习总结(附实例操作)

Linux下反编译命令objdump快速学习总结(附实例操作)_linux反编译-CSDN博客

【算法专题--链表】相交链表--高频面试题(图文详解,小白一看就会!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 --- 数学思维 ⭐双指针 --- 按链表长度计算 🥝 判断相交 🍇 求出交点 🍍实现步骤 四、总结与提炼 五、共勉 一、前言 相交链表这道题,可以说是--链表专题--&#xf…

OpenAI半年收入达34亿美元:年化收入翻倍,CTO却揭露:ChatGPT与免费模型差距不大

根据硅谷知名付费科技媒体The Information的独家报道,自12月以来,OpenAI的年化收入翻了一番,达到34亿美元,其中大部分收入来自订阅和API访问(32亿美元)。 没体验过OpenAI最新版GPT-4o?快戳最详细…

【日常记录】【node】从零开发一个node命令行工具

1、命令行工具 命令行工具(Cmmand Line Interface)简称cli,顾名思义就是在命令行终端中使用的工具。我们常用的 git 、npm、vim 等都是 cli 工具,比如我们可以通过 git clone 等命令简单把远程代码复制到本地。 再比如&#xff1a…

我是计算机专业的学生,请帮我分析“程序,进程,线程,超线程“之间的联系和区别。

程序、进程、线程、超线程之间的联系与区别分析如下: 一、程序 定义:程序是一组指令的集合,用于描述完成特定任务的步骤和操作。它通常以源代码的形式编写,并使用编程语言如C、Java、Python等来表示。程序本身是静态的&#xff…

记录一些互联网实习面经

1 地平线 视觉工程师 1、问每个项目,比如yolo 检测用到的损失函数是什么? 2、训练过程中loss出现nan怎么办?解决方法? 3、训练过程中,训练和验证torch的parameter? 4、项目中用到的分割方法是什么&#xf…

Apache druid未授权命令执行漏洞复现

简介 Apache Druid是一个实时分析型数据库,旨在对大型数据集进行快速的查询分析("OLAP"查询)。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景,同时,Druid也通常被用来助力分析型应用的图…

QVector使用详解

QVector使用详解 一、 创建和初始化1. 默认构造函数2. 指定大小的构造函数3. 指定大小和初始值的构造函数4. 使用 std::initializer_list 初始化5. 拷贝构造函数6. 从指针和大小初始化7. 使用 std::vector 初始化8. 使用 QList 初始化9. 使用 QVector 初始化 QList10. 使用 fil…

力扣2861.最大合金数

力扣2861.最大合金数 对每一台机器都做一次二分答案 class Solution {public:int maxNumberOfAlloys(int n, int k, int budget, vector<vector<int>>& composition, vector<int>& stock, vector<int>& cost) {int res 0;int mx rang…

5款好用的轻量云服务器(618超便宜轻量云)

轻量云服务器是一种面向入门级用户和小型业务的云服务器产品&#xff0c;它们通常价格更实惠&#xff0c;管理起来也相对简单&#xff0c;以下是五款好用的轻量云服务器产品&#xff1a; 1.阿里云 优势&#xff1a;阿里云是国内最大的云服务提供商之一&#xff0c;拥有丰富的配…

二 分 模 板

bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid 1, r]时使用&#xff1a; int bsearch_1(int l, int r) {while (l < r){int mid l r >> 1;if (check(mid)) r mid; // check()判断mid是否满足性质else l mid 1…

BT音频方案

一、缩写 缩写 全程 释义 I2S I2S 音频传输接口总线 PCM Pulse-Code Modulation 基础音频数据或翻译为音频接口总线 HFP Handsfree 蓝牙通话协议 A2DP Advanced Audio Distribution Profile 蓝牙媒体音频协议 二、音频流转策略 蓝牙音频功能分为通话声音和媒体…

电脑数字键被锁住不能输入数字

情况: 反复点击数字键盘的NumLock,看它的灯是否能正常启动 1.如果NumLock灯可以正常的打开和关闭,并且无法输入内容 1.1打开控制面板 1.2 进入轻松使用中选择更改键盘的工作方式 1.3找到并点击设置鼠标键 1.4 赵到NumLock设置为关闭,然后确定即可

线性规划问题——单纯形算法

第一步&#xff1a;化“约束标准型” 在每个等式约束中至少有一个变量的系数为正&#xff0c;且这个变量只在该约束中出现。在每个约束方程中选择一个这样的变量称为基本变量。 剩下变量称为非基本变量。 一个简单的栗子 上图是一个约束标准型线性规划的例子。 等式1&#x…

理解查准率P、查全率R及Fβ度量怎么得来的

如果得到的是一组样本在两个算法上的一次预测结果&#xff0c;其中每个样本都被赋予了一个为正样本的概率&#xff08;例如&#xff0c;通过逻辑回归或朴素贝叶斯分类器得到的概率估计&#xff09;&#xff0c;那么可以通过改变不同的阈值点来利用这些预测结果画出PR曲线。 如果…

blender

通用设置: 仅显示/取消隐藏:数字键盘/移动视角:shift+鼠标中键Blender如何给场景添加参考图片-百度经验 (baidu.com)进入编辑模式:Tab编辑模式:点-线-面 反选:ctrl+按键重新计算面朝向:shift+n水密:+修改器:焊接连选的区别: 视窗设置 两个视图 …

Pytorch环境配置的方法

Pytorch虚拟环境配置全流程 以安装pytorch1.9.1为例 1. 创建虚拟环境 安装Anaconda3&#xff0c;打开 PowerShell 创建虚拟环境并进入&#xff1a; conda create -n torch1.9.1 python3.8 conda activate torch1.9.1 conda create -n torch1.9.1 python3.8 conda activate to…

Python - 处理电子书的库

kindleunpack&#xff1a; 转换azw3为epub https://github.com/kevinhendricks/KindleUnpackkindlegen 转换epub为mobiOpenBookPublishers https://github.com/orgs/OpenBookPublishers/repositories?qsort%3Astarsepub2pdf : converting fixed-layout manga/comic files(epub…