39、传输层的任务和协议

news2024/12/23 17:27:52

从本节内容开始,我们学习TCP/IP模型的传输层的知识。传输层是TCP/IP模型中的重要组成部分,如果没有传输层的处理,那么源主机发送的IP数据包到达目的主机之后,目的主机将不知道这个数据是哪个应用程序的数据,就不能很好地跟应用层对接,最终无法面向用户。所以传输层是一个非常重要存在,在各类考试当中,尤其是计算机考研408科目中,根据传输层的知识点出的题目也占有较高的比重。


传输层的任务

首先,我们仍然要回忆一下TCP/IP模型,传输层的位置处在网络层和应用层之间,它接受网络层提供的服务,同时为应用层提供服务。

从数据封装与解封装过程的角度看,发送方应用层的数据到达传输层,加上传输层的首部,向下交给网络层;接收方网络层去除 IP首部后将其数据部分向上交给传输层,由传输层进行处理。

传输层负责的任务是:为两台主机中的应用进程之间的通信提供通用的数据传输服务。在这里,有两个主要的地方:

第一,应用进程,这是一个计算机操作系统领域的概念,可以通俗的理解为计算机中正在运行的应用程序。那么,传输层为两台主机中的应用进程之间的通信提供数据传输服务是什么意思呢?其实,我们之前所说的两台主机之间的通信,这种说法是不够准确的,更准确的说法是两台主机的应用进程之间在互相通信。例如,QQ、微信这是两个不同的应用程序,它们在运行的时候各自创建一个应用进程,主机A的用户用QQ和主机B的用户消息聊天,这其实是双方主机上的QQ进程在通信。

那么在这里,传输层存在的意义就在于:如果主机B用户同时登录着QQ、微信,还有其他的应用程序,那么当主机A的消息发送过来以后,让主机B能够知道这是一个应该由QQ进程接收的消息。

所以,网络层负责解决的是:数据怎么能够从源主机传输到目的主机;而传输层负责解决的是:数据到达目的主机之后,应该交由哪一个具体的应用程序来接收。

谢希仁教授的教材中有这样一个很好的例图(图中,AP1、AP2指的就是不同的应用进程;另外图中还标注出了端口,端口的概念在本节的后半部分会解释):4945e30795f8464b9fea7842176beac1.png

第二,通用的数据传输服务,“通用”的意思就是,不针对特定的应用,多种应用可以使用同一个运输层服务。拿上面的例子来说,不管是QQ还是微信,或者其他的应用,这些数据在经过传输层封装的时候都是使用传输层的协议(TCP或UDP)。

这就有点类似于我们前面学过的多路复用,发送方多个应用程序的数据“复用”传输层的TCP或UDP,数据到达接收方的传输层后再进行“分用”,上交给应用层的不同应用程序。


传输层的两大协议

传输层这一部分的学习内容,其实主要就是学习传输层的两大协议:TCP和UDP。这两个协议各有特点:TCP提供可靠传输的机制,UDP提供不可靠但简单有效的传输机制。我们知道网络层的IP协议提供的是尽最大努力交付的不可靠的服务,如果数据传输出错,会通过ICMP差错报告通知源主机,由高层来实施处理,这里的高层就是传输层,如果传输层使用TCP协议,TCP会通过重传数据等方式解决问题。

不过这两种协议虽是一个可靠,一个不可靠,但都有各自的用处:对一些时延不敏感,而且要保证数据准确度的应用,应使用可靠的TCP协议传输;而对一些时延比较敏感,比如在网络上看个直播,这时候就需要用UDP协议传输了,虽然不如TCP可靠,但是使用UDP反而效果要好,因为即使在UDP传输过程中,可能会出现偶尔的丢包,表现在看直播上会有一点小卡顿,但并不会影响太大。试想这种情况下如果用TCP的话,只要出一点错误就重传一次数据,那么直播的画面可能一直在重复“倒带”,观看效果就更差了。


好了,以上就是传输层第一节的内容,主要是了解传输层为主机之间不同应用进程的通信提供服务。包括两大协议,TCP和UDP。下一节内容我们学习另一个重要的基础性概念——端口号。

参考教材:谢希仁《计算机网络》第八版

 

 

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

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

相关文章

RTT(RT-Thread)线程间同步(保姆级)

目录 线程间同步 信号量 信号量结构体 信号量的使用和管理 动态创建信号量 实例 静态创建信号量 初始化和脱离信号量 获取信号量 信号量的互斥操作 获取信号量函数 释放信号量 信号量同步实例 互斥量(互斥锁) 互斥量的使用和管理 动态创…

【nacos】Param ‘serviceName‘ is illegal, serviceName is blank

报错信息 解决方式 一&#xff1a;缺少依赖 SpringBoot2.4之后不会默认加载bootstrap.yaml&#xff1b;需要手动在pom中加入如下依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-boot…

SCAU操作系统知识点之(一)计算机系统概述

缩写词&#xff1a; OS: Operating System 操作系统 PSW: Program Status Word 程序状态字 FCFS: First Come First Serve 先来先服务 PCB: Process Control Block 进程控制块 DMA: Direct Memory Access 直接存储器存取 MMU: Memory Management Unit 内存管理单元 SSTF: Short…

【maven】通过profiles实现:怎样激活某个仓库、同时加载多个profile、不同环境加载不同依赖jar

文章目录 一. 基本用法二. 仓库激活方式1. 使用activeProfile激活2. 使用-P参数激活3. 使用-P参数不激活 三. 查看激活的仓库四. 不同环境依赖不同版本的jar Maven中的profile是一组可选的配置&#xff0c;可以用来设置或者覆盖配置默认值。有了profile&#xff0c;你就可以为不…

(el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

Ⅰ、Element-plus 提供的 Form 表单组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Form 表单组件情况&#xff1a; 其一、Element-plus 自提供的 Form 代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环…

(JS逆向专栏十四)某游平台网站登入SHA1

声明: 本文章中所有内容仅供学习交流&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 名称:逗游 目标:登入参数 加密类型:SHA1 目标网址:https://www.doyo.cn/passport/l…

HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成&#xff0c;准备继续完善SysInfo&#xff0c;增加用户帐户信息&#xff0c;其中涉及到Win32_Account结构&#xff0c;其C定义如下&#xff1a; [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…

SpringBoot整合、SpringBoot与异步任务

目录 一、背景描述二、简单使用方法三、原理五、使用自定义线程池六、Async失效情况 一、背景描述 java 的代码是同步顺序执行&#xff0c;当我们需要执行异步操作时我们通常会去创建一个新线程去执行。比如new Thread()。start()&#xff0c;或者使用线程池线程池 new Thread…

Rust 编程小技巧摘选(6)

目录 Rust 编程小技巧(6) 1. 打印字符串 2. 重复打印字串 3. 自定义函数 4. 遍历动态数组 5. 遍历二维数组 6. 同时遍历索引和值 7. 检查数组是否包含某个值 8. 二维矩阵中查找某个值 附&#xff1a;迭代器方法的区别 Rust 编程小技巧(6) 1. 打印字符串 fn main() …

案例10 Maven入门案例

基于Maven构建快速构建项目&#xff0c;输出“Hello World&#xff01;”。 1.选择Maven快速构建项目 ​2.设置Maven项目信息 ​3.设置Maven环境信息 ​4.项目结构 ​ 5.Maven操作 ​6.执行结果

Android图形-合成与显示-SurfaceTestDemo

目录 引言&#xff1a; 主程序代码&#xff1a; 结果呈现&#xff1a; 小结&#xff1a; 引言&#xff1a; 通过一个最简单的测试程序直观Android系统的native层Surface的渲染显示过程。 主程序代码&#xff1a; #include <cutils/memory.h> #include <utils/L…

vue左右div结构手动拉伸并且echarts图表根据拉伸宽高自适应

需求&#xff1a; 左右结构的div&#xff0c;可以根据数据抬起按下进行拉伸修改容器宽度的操作给左右结构某一图表设置拉伸自适应左右结构都设置个最小宽度&#xff0c;只能到一定区域内拉伸解决echarts的bug&#xff08;重复加载chart实例&#xff09;&#xff1a;[ECharts] …

数据通信——VRRP

引言 之前把实验做了&#xff0c;结果发现我好像没有写过VRRP的文章&#xff0c;连笔记都没记过。可能是因为对STP的记忆&#xff0c;导致现在都没忘太多。 一&#xff0c;什么是VRRP VRRP全名是虚拟路由冗余协议&#xff0c;虚拟路由&#xff0c;看名字就知道这是运行在三层接…

python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等

项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化&#xff0c;但是没有代码基础不知道怎么做&#xff1f;或者有自动化…

Fairy下载和使用

写在最前&#xff1a;本系列中将会涉及到 Unity&#xff0c;C#&#xff0c;Lua和FairyGUI&#xff08;FGUI&#xff09;。 FairyGUI介绍 官网&#xff1a; FairyGUI 编辑器下载&#xff1a; FairyGUI 截至文档记录最新版&#xff1a; https://res.fairygui.com/FairyGUI-Ed…

Exams/ece241 2013 q4

蓄水池问题 S3 S2 S1 例如&#xff1a;000 代表 无水 &#xff0c;需要使FR3, FR2, FR1 都打开&#xff08;111&#xff09; S3 S2 S1 FR3 FR2 FR1 000 111 001 011 011 001 111 000 fr代表水变深为…

Eleastisearch5.2.2利用镜像迁移构建实例后ES非健康状态

正常迁移完成后启动服务&#xff0c;查看ES非健康状态 此时观察ES集群状态&#xff1a;curl -XGET -u elastic:xxx localhost:9200/_cluster/health?pretty 注意到"active_shards_percent_as_number" : 88.8888 该项的值不产生变化;集群状态"status" : “…

LAXCUS如何通过技术创新管理数千台服务器

随着互联网技术的不断发展&#xff0c;服务器已经成为企业和个人获取信息、进行计算和存储的重要工具。然而&#xff0c;随着服务器数量的不断增加&#xff0c;传统的服务器管理和运维方式已经无法满足现代企业的需求。LAXCUS做为专注服务器集群的【数存算管】一体化平台&#…

JVM—内存管理(运行时数据区)、垃圾回收

背景介绍 当JVM类加载器加载完字节码文件之后&#xff0c;会交给执行引擎执行&#xff0c;在执行的过程中会有一块JVM内存区域来存放程序运行过程中的数据&#xff0c;也就是我们图中放的运行时数据区&#xff0c;那这一块运行时数据区究竟帮我们做了哪些工作&#xff1f;我们…