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

news2025/3/1 1:57:20

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

  • 运输层
  • 运输层端口号
  • 复用分用
      • 复用(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.coloradmin.cn/o/1823226.html

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

相关文章

感受光子芯片中试线,如何点亮未来计算与通信的革命之路(2024青岛智能装备与通信技术展)

光子芯片中试线:点亮未来计算与通信的革命之路 在新一代信息技术的浪潮中,光子芯片以其低能耗、高速度的特点备受瞩目。首条光子芯片中试线的建立,标志着我国在光电子领域的重大突破,同时也为即将到来的量子计算时代奠定了坚实基…

【DivineCut 2】Blender商店10周年免费领礼物智能服装布料生成工具限时免费领取。(1个月免费使用)

Blender商店10周年免费领礼物:https://blendermarket.com/birthday DivineCut 2 智能服装生成工具限时免费领取。(1个月免费使用) (免费测试版资源库) DivineCut™是一款Blender工具,只需点击几下&#xf…

样本学习:当AI遇上“少见多怪”

东汉名臣牟融在其著作《牟子》写道:“少所见,多所怪,睹橐驼,谓马肿背。”意思是见闻少的人遇到不常见的事物就觉得奇怪,见到骆驼也以为是背肿了的马。因此,后人总用“少见多怪”来嘲笑见识浅陋的人。然而&a…

互联网创业项目,轻资产创业项目。

目录 前言: 一、当前有哪些热门的互联网轻资产创业项目? 二、这些项目是做什么的? 三、项目一般都是怎么做的? 前言: 当前互联网创作项目多多,该怎么选择合适自己的项目去做呢? 一、当前有哪…

Windows 文件夹(文件)备份脚本bat

使用xcopy 来实现 1、新建一个bat脚本 重命名文件为 windows_log_bak.bat 后缀也成修改为.bat 2、备份代码 xcopy参数: #可在命令窗口执行这个命今,查看所有参数详细 xcopy /? 使用的参数: /e:拷贝所有子目录,包括…

编译结果处理的shell脚本

#!/bin/bash WEB"web" DIST"dist" RED\033[0:31m GREEN\033[0;32m NC\033[0m #生产打包传参 BUILD"b" if [ -e ${WEB} ];then#删历史文件rm -r ${WEB}rm ${WEB}.zip fi #编辑文件 npm run build #检查构建是否成功 if[ -e ${DIST} ];then#改名mv…

Java基础:Stream流和方法引用

一、Stream流 1.引言 Test:给定一个集合,如果想要筛选出其中以 "a" 开头且长度为3的元素,并添加到新集合中去,最后遍历打印,如何实现? public class Test {public static void main(String[] …

【机器学习300问】118、循环神经网络(RNN)的基本结构是怎样的?

将讲解循环神经网络RNN之前,我先抛出几个疑问:为什么发明循环神经网络?它的出现背景是怎样的?这些问题可以帮助我们更好的去理解RNN。下面我来逐一解答。 一、循环神经网络诞生的背景 循环神经网络(RNN)的…

OrangePi Kunpeng Pro 安装 ROS2 + Gazebo

文章目录 1. 初识1.1 到手开箱1.2 OrangePi Kunpeng Pro1.2 上电 2. 安装Ubuntu2.1 准备工作2.2 安装 3. 安装ROS23.1 设置支持UTF-8的locale编码3.2 添加证书3.3 安装ROS3.4 设置环境变量3.5 小海龟来啦 4. 运行实例4.1 安装Gazebo4.2 安装turtlebot 总结 1. 初识 1.1 到手开…

springboot、springcloud、springcloudalibaba版本组件之间对应关系

参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E#%E6%AF%95%E4%B8%9A%E7%89%88%E6%9C%AC%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8 毕业版本依赖关系(推荐使用) 由于 Spring Boot 3.0&…

linux服务器网络配置

目录 1、centos的网络配置1.1 静态Ipv4配置方法:1.2 动态Ipv4的设置方法1.3 常见ping不通网关的原因:1.4 查看操作系统版本1.5 查看一台服务器的所有服务1.6 猜测所在房间网关ip 2、 Ubuntu的网络配置(静态ipv4)3、2024.6.14 解决…

《精通ChatGPT:从入门到大师的Prompt指南》第6章:日常对话与问答

第6章:日常对话与问答 6.1 提问技巧 提问技巧在使用ChatGPT时至关重要,因为高质量的提问能够得到更为准确和有价值的回答。以下是一些关键技巧和方法,帮助你掌握提问的艺术。 1. 明确问题目标 在提问之前,首先要明确你希望从C…

干G货,性能测试基本方法和原则,

一、性能测试关键点 评估性能指标——线程tps(可架构给) 吞吐量qps(可架构给) 错误率(可架构给) 平均响应时间(可架构给)模拟线上数据量了解接口有没有缓存,有缓存的需要…

同三维T80005EHS-4K60 4K60 HDMI/SDI编码器

1路4K60 HDMI或12G SDI输入,2路3.5MM音频输入,对应HDMI或SDI,1个USB口和1个SD卡槽,可录像到U盘/移动硬盘/SSD硬盘/TF卡 产品简介: 同三维T80005EHS-4K60 4K60HDMI/SDI H.265编码器采用最新高效H.265高清数字视频压缩…

CV预测:快速使用ResNet深度残差神经网络并创建自己的训练集

AI预测相关目录 AI预测流程,包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…

基于hispark_taurus开发板示例学习OpenHarmony编译构建系统(2)

3、hispark_taurus产品解决方案-Vendor 产品解决方案为基于开发板的完整产品,主要包含产品对OS的适配、组件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:vendor/{产品解决方案厂商}/{产品名称}_。_产品解决方案也是一个特殊的组…

Sentence Transformers x SwanLab:可视化Embedding训练

Sentence Transformers(又名SBERT)是访问、使用和训练文本和图像嵌入(Embedding)模型的Python库。 你可以使用Sentence Transformers快速进行模型训练,同时使用SwanLab进行实验跟踪与可视化。 1. 引入SwanLabCallback from swanlab.integra…

【Hachker News】如果你不需要钱,你会干什么?

Hachker News上的一个问题,标题是“如果你不需要钱,你会做什么?” 回答摘要 问题链接:What would you spend your time working on if you didn’t need money? A1: 我会把时间投入到城市周围的农村地区&#xff0c…

快慢指针在字符串中的应用-443. 压缩字符串

题目链接及描述 443. 压缩字符串 - 力扣(LeetCode) 题目分析 这个题目总体不算太难,如果之前接触过双指针(快慢指针)的话,比较好做。题目可以理解为计算数组中对应各个连续字符出现的次数,并将…