在这个视频中,我们要探讨TCP/IP模型。对于TCP/IP模型考试的要求是这样的,首先我们需要记住它各个层次的名称和顺序,以及我们需要了解TCP/IP 模型和OSI参考模型,它们在设计理念上有哪些区别,设计理念的区别又导致了TCP/IP模型和OSI参考模型的各个层次之间功能上也会有一些区别。接下来,我们会依次展开探讨这些问题。

首先我们尝试记住TCP/IP模型的各个层次。TCP/IP模型总共只有四个层次,第一层叫做网络接口层,它的作用类似于OSI参考模型的第一层和第二层。接下来TCP/IP模型的第二层叫做网络层,它的作用和OSI参考模型的网络层是类似的。紧接着,第三层传输层,它和OSI参考模型的传输层也非常类似,最顶层是应用层,这一层的作用相当于OSI参考模型的会话层、表示层以及应用层。这是TCP/IP模型的四个层次,接下来我们要探讨TCP/IP模型和OSI参考模型在设计理念上有哪些区别。

首先我们来回顾OSI参考模型的5、6、7三个层次,重点关注第五层和第六层。在计算机网络的分层结构当中,上面一层会使用下一层提供的服务,或者说会使用下一层已经实现的功能。在OSI参考模型中,应用层会使用表示层的功能,也就是数据格式转换,而表示层又会使用会话层的功能,也就是会话管理。之前的视频中我们说过会话管理的效果类似于文件的断点续传,现在思考这样一个问题:会话管理的功能和数据格式转换的功能,对于每一个应用程序都是必要的吗?显然不是。比如说一个应用给另一个应用传文件,如果左边这台机器的数据编码格式和右边这台机器数据编码格式是完全一样的,数据格式转换的功能就没有必要存在了。另一方面,如果传文件的过程当中网络出现了问题,也就是文件的传输可能在中间某个点被中断了。那么当网络重新恢复的时候,我们必须断点续传吗?也不一定,事实上我们也可以选择在网络恢复的时候重新传整个文件。这也是一种可行的解决方案。所以会话管理这个功能对于有些应用程序来说,它也是可有可无的。既然对于某些应用程序来说,数据格式转换、会话管理这些功能可有可无的话,表示层和会话层这两个层次是不是就也没有必要非得让它存在?如果我们去掉这两个层次,其实可以让整个网络体系结构更简洁,层次越少,其实效率也会越高。

这就是TCP/IP模型和OSI参考模型在设计上的第一个很大的不一样,它把表示层和会话层给干掉了。因为表示层和会话层所提供的这些功能,并不是所有的网络应用都需要的,所以这两个层次不需要存在。

如果说某些应用程序,它确实需要数据格式转换、会话管理这些比较个性化的功能怎么办呢?我们只需要让这些比较个性的功能用应用层的某些协议去实现就可以了。假设微信和微信之间的通信需要使用会话管理的功能,那么这两个应用程序在通信的时候,使用包含会话管理功能的协议就可以。相反的,如果不需要使用会话管理功能,我们就换一个不包含会话管理的协议。也就是说,我们把这两种功能放在应用层去实现,应用程序对于这两种功能使用与否的选择是非常灵活的。相比之下,在OSI参考模型中,一个应用程序,不管是否需要使用数据格式转换,是否需要使用会话管理的功能,它一定都会经过表示层和会话层的处理。对于这两个层次功能的选择是不灵活的,非选不可。所以TCP/IP模型的应用层在功能上其实包含了OSI参考模型的表示层,以及会话层。只不过TCP/IP模型的应用层在实际使用的时候功能的选择会更灵活。

接下来我们再来回顾OSI参考模型的第一层和第二层。第一层物理层,需要去定义电路接口的参数,比如说网线的接口长什么样子,光纤的接口长什么样子,是什么尺寸,以及电信号、光信号分别是什么含义等等,这些东西都需要在物理层中去进行说明。另外,数据链路层需要实现差错控制、流量控制的功能。也就是说OSI参考模型对于第一层要干什么,第二层要干什么,分别需要支持哪些功能,具有哪些特性,都需要有清晰明确的规定。这就意味着一个网络硬件厂商,他在研发物理层和数据链路层的设备的时候,必须遵循OSI参考模型的规定。从某种意义上来讲,OSI参考模型对于第一层,第二层的规定太死,反而会导致这些网络硬件厂商在进行设备研发的时候更不灵活,本来可以有更多的创新,但是为了贴合这个参考模型的要求,创新被限制了。所以TCP/IP模型在底层的部分,它有不一样的设计思路。TCP/IP模型认为,网络硬件的种类很繁多,并且通信技术其实日新月异,可能每隔几年就会有更高性能的设备,更先进的通信技术出现,所以TCP/IP 模型认为,在网络层之下的部分,到底如何实现相邻的两个节点之间比特流的传输,这个其实不应该有太多的限制,这是TCP/IP模型的一个理念。

基于这样的理念,TCP/IP模型在网络层之下,只有一层叫做网络接口层。TCP/IP模型只规定网络接口层的任务是什么,就是要实现相邻节点之间的数据传输。如果从垂直视角来看,就是为网络层传输分组,网络层会把分组交给这个网络接口层,网络接口层可以用比较灵活多样的方式去传输这个分组的数据,具体是怎么传输的不做特别的规定。这样的设计思想使得TCP/IP体系结构拥有更强的灵活性和适应性,每一个网络设备商都可以去发挥自己的创造力,去研发更先进的,更好的网络接口层技术,只要研发的通信设备、通信技术能够和网络层正确的交互就可以了。

我们做一个阶段性的总结, OSI参考模型的会话层和表示层主要的功能是会话管理和数据管理,因为这两个功能并不是所有的应用都需要的,所以这两个层次可以直接干掉, TCP/IP模型会在应用层去灵活的支持数据格式转换和会话管理这些比较个性化的功能。另一方面,OSI参考模型的物理层和数据链路层,详细的规定了这两个层次需要支持哪些功能,规定的太多,反而会导致物理层和数据链路层的设备厂商,他们在生产研发设备的时候不太好发挥,有很多限制。相比之下TCP/IP 模型的网络接口层,在功能上虽然类似于物理层和数据链路层。但是TCP/IP模型对于网络接口层要实现哪些功能,需要支持哪些协议,并没有做具体的规定,而是交给网络设备商去自由的发挥,这也使得TCP/IP模型能够被更多的设备厂商所支持,最终也使得TCP/IP模型在商业上取得了巨大的成功。

到目前为止,我们探讨的是这两种模型在结构上的明显区别,现在我们关注中间的两个层次,可以看到两种模型都有网络层,网络层之上也都是传输层。那么这些层次之间又有哪些设计理念上的区别呢?我们不妨先回顾一下OSI参考模型的网络层和传输层分别需要实现哪些功能。首先OSI的网络层和传输层都需要实现差错控制、流量控制,连接管理和可靠传输管理这些功能。只不过,网络层针对的是数据报,而传输层针对的是报文段。另外,数据链路层也需要支持差错控制和流量控制的功能,只不过数据链路层针对的是帧。

之前的视频中我们说过,各个层次传输数据的单位是不一样的,越上面的层次,每一次传输的数据单位也会更长,比如说应用层以报文为单位,而报文交给传输层之后,传输层会把报文拆分成多个报文段。当然,如果报文很小的话,也可以不拆分。类似的,当传输层把报文段交给网络层之后,网络层会把比较长的报文段拆分成多个数据报,或者说拆分成多个分组。类似的,网络层把一个分组交给数据链路层之后,数据链路层又会把比较长的分组拆分成多个帧。也就是说,越靠下的层次,传输数据的单位是越局部的,而越靠上面的层次,传输的数据是越接近全局的。显然数据的局部正确不可以推出数据的全局正确,也就是说数据链路层只能确保每一个帧的传输是没问题的,但是无法确保每一个分组的传输是没有问题的。因此OSI参考模型认为,在网络层这儿,又需要对分组进行差错控制、流量控制,以此去保证分组的数据传输没有问题。同样的道理,网络层保证了分组局部数据的正确性,但是无法保证报文段这个全局数据的正确性。因此在传输层,OSI又会再一次进行差错控制、流量控制,以确保报文段的传输是没有问题的,连接管理和可靠传输这两个功
能也是类似的道理,就是说网络层这儿可以确保数据分组的传输有序、不重复、不丢失。但是不意味着报文这个全局数据的传输有序、不重复、不丢失。所以网络层这儿实现过的功能,在传输层这儿又需要再重新去支持,重新去实现。这是OSI参考模型的设计思路。数据的局部正确,不可以保证数据全局正确。我们不妨换一个思路,如果我们能够确保数据的全局是正确的,是否可以推出数据的局部也是正确的。显然,这个逻辑也是成立的。也就是说,事实上,网络层、数据链路层、物理层这几个层次,它可以不管自己的这个数据传输到底有没有出现错误,可不可靠,反正最终都让这个传输层以报文段为单位去确保数据的传输是没有出错的,是有序的,是可靠的就可以了。因为只要我们检测出数据全局正确,那么数据的局部肯定也是正确的。

所以基于这样的思路,TCP/IP模型的网络层,去除掉了差错控制、流量控制、连接的管理以及可靠传输管理。它去除掉了这些功能,网络层去除掉这些功能之后,就会使得网络层的数据传输变得不再可靠。比如说现在传输层把一个报文段交给网络层,让它去传输,网络层会把报文段拆分成若干个分组,然后再把分组交给网络接口层去传输,网络接口层的数据传输是不可靠的。也就说一个分组从A结点传输到相邻的B结点,在这个传输的过程当中,分组的数据就有可能出现错误了,中间节点的网络层接收到一个分组之后,即便这个分组有可能出错,甚至分组有可能会丢失,但都没有关系,反正中间节点接收到一个分组之后,把它尽最大努力转交给下一个节点就可以了。所以最终目的结点接收到的这些分组序列有可能是有错误的,有可能是失去的。这些分组最终会被合并成报文段,再转交给上层的传输层。只不过刚才我们说,由于中间的传输过程网络层并没有进行差错控制、流量控制、连接管理、还有可靠传输管理。因此,最终这个目的结点收到的报文段就有可能是有问题的,所以TCP/IP模型的网络层,它的理念就是主打一个摆烂,我只尽我最大的能力去交付这些分组,去传输这些分组。数据的传输我知道是不可靠的,但是我就是摆烂。摆烂的结果就是
目的节点的传输层,他收到的报文段数据有可能是错的,当然也有可能是对的。

接下来目的节点的传输层就会对报文段进行差错控制、流量控制、连接管理、可靠传输管理去确保报文段的传输,这个全局数据的传输是没有问题的。所以TCP/IP模型它并不是完全不管数据传输的正确性、可靠性这些东西,只不过这些任务都会由传输层来完成。

相比之下OSI参考模型的网络层也需要实现差速控制、流量控制、连接的建立与释放、可靠传输的功能。这些额外的功能就会使得网络的核心部分,这些路由器它需要承载更多的事情,功能变得更复杂,负载变得更高,造价也会变得更高。而TCP/IP模型,它的网络层功能相对简单,这也使得网络的核心部分这些路由器,它的负载变得更低,功能变得更简单,造价也可以变得更低。刚才也说了TCP/IP模型的传输层会负责保证数据的正确性、有序性、可靠性等等这些方面。也就是说数据传输的正确性、可靠性的保障是交给了网络的边缘部分,交给了这些主机。所以相当于把网络核心部分的压力降低了,然后把压力给到网络的边缘部分的主机,这就会使得网络的核心部分,这些路由器传输分组的整体性能可以得到大幅度的提升,因为它不需要去管什么差错、流量,这些乱七八糟的东西。所以TCP/IP模型和OSI参考模型在网络层这个层次,设计理念上是有很大的区别的。

在这个视频中,我们介绍了TCP/IP模型,TCP/IP相比于OSI参考模型来说,层次更少也更简洁。在这个图当中,总结了的TCP/IP四个层次,分别需要完成什么样的任务,以及各个层次具体需要实现哪些功能,标蓝字的这些部分是TCP/IP模型和OSI参考模型有不同的地方。注意在网络层这个地方差错控制、流量控制,连接管理,可靠传输管理这几个功能点都是画了删除线的。这就意味着,在OSI参考模型中,这几个功能是存在于网络层当中的,但是在TCP/IP模型当中,这几个功能从网络层当中删除了。

我们在这个视频中也简单介绍了OSI和TCP/IP它们的层次结构有什么区别,OSI参考模型的会话层、表示层和应用层,在TCP/IP模型当中对应应用层。而OSI参考模型的物理层和数据链路层的功能,对应了TCP/IP模型的网络接口层。

另外在这个视频中,我们也详细介绍了OSI参考模型和TCP/IP模型网络层的设计理念区别,OSI参考模型要求网络层必须实现差错控制、流量控制、连接管理,还有可靠传输管理这些功能。而TCP/IP模型的网络层不需要支持这几个功能,也正是因为这个差别,在OSI参考模型中,网络层可以向上层,也就是向传输层提供有连接可靠的服务以及无连接不可靠的服务。之前我们提到过分组交换,或者说数据报交换,其实就是无连接不可靠的服务。网络层在传输分组的时候不确保分组有序到达,也不保证分组不丢失。所以当不使用网络层的差错控制、流量控制、连接管理,还有可靠传输管理这些功能的时候,它所能提供的就是数据报服务,是无连接不可靠的。而如果网络层的这些功能全部被启用,那么它就可以为上层传输层提供有连接可靠的服务,也就是虚电路交换的服务。在虚电路交换中,可以保证分组是有序到达的,无差错的以及不丢失的。再看TCP/IP的网络
层,由于它不支持差错控制、流量控制这些乱七八糟的东西,所以TCP/IP的网络层只能向上层提供无连接不可靠的服务,也就是不保证分组的正确性、有序性。另外在TCP/IP模型中数据传输的可靠性是由传输层去实现的,如果传输层使用TCP协议,就可以保证数据的传输是有连接的、可靠的,也就是说数据的正确性,有序性等等都可以得到保证。当然TCP/IP模型的传输层也可以向上层应用层去提供无连接不可靠的服务。如果使用UDP协议去传输数据的话,那么数据的传输就是无连接不可靠的。关于TCP和UDP的具体内容我们会在之后的章节中进行更详细的探讨,这儿大家先有个印象就可以。事实上,有的应用程序进行网络通信的时候,是可以允许数据的传输不可靠这件事情的。比如说当我们看直播的时候,我们可能对直播的流畅性要求很高,但是直播的画面丢失了几个帧,或者直播的声音停了几秒钟,这个其实是可以忍受的。所以在现在的网络应用当中,无连接不可靠的这种数据传输服务,也是有必要存在的。相比之下OSI参考模型大概是上个世纪80年代提出来的,在那个年代其实并没有预见网络世界能够发展的如此迅速,应用如此广泛。所以那个年代的设计者认为,传输层只能向上层提供有连接的可靠的数据传输服务。也就是说,数据传输出现一些错误或者出现丢失是不被允许的,是不可以容忍的。这也是OSI的传输层和TCP/IP传输层的一个区别。在考试中,这两种体系结构的网络层和传输层是最喜欢放在一起来考察的。随着这门课后续章节的学习,大家对于这些功能到底有什么作用,以及是如何确保数据传输的正确可靠的,会有更直观的理解。所以在当前阶段看到这些什么有连接的可靠的服务,无连接不可靠的服务,看见这些东西感觉比较模糊是很正常的。

以上就是这小节的全部内容。

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

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

相关文章

EVOLVEpro安装使用教程-蛋白质语言模型驱动的快速定向进化

写在前面:蛋白质是生命活动的基石,其功能和序列之间的复杂关系长期以来吸引着科学家们的关注。尽管深度突变扫描等实验方法可以解析蛋白质突变的功能影响,但这些技术的应用范围局限于序列空间的一小部分。近年来,基于蛋白质语言模…

【Linux】Rocky Linux 清华镜像源安装 GitLab

使用清华镜像源安装 GitLab 地址:清华镜像源 1. 搜索 gitlab,我们选择 gitlab-ce 社区版进行安装 2. 新建 /etc/yum.repos.d/gitlab-ce.repo,内容为 注意:el$releasever 是清华镜像源内的文件夹版本 [gitlab-ce] nameGitlab C…

【龙泽科技】新能源汽车维护与动力蓄电池检测仿真教学软件【吉利几何G6】

产品简介新能源汽车维护与动力蓄电池检测仿真教学软件是依托《全国职业院校技能大赛》“新能源汽车维修”赛项中“新能源汽车维护与动力蓄电池检测” 竞赛模块,自主开发的一款仿真教学软件。软件采用仿真技术对车辆进行指定维护作业,并对动力蓄电池总成进…

UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI

文章目录根据小兵队伍更换小兵的皮肤管理小兵的生成使用对象池来管理小兵的生成为小兵设置一个目标小兵生成完整代码调整一下小兵的UI根据小兵队伍更换小兵的皮肤 懒得开UE了,增加一个Minion类继承基类角色CCharacter // 幻雨喜欢小猫咪#pragma once#include &qu…

Clojure持久化数据结构的底层实现

文章目录一、Clojure的持久化数据结构二、向量(Vector)/Map的底层结构​1. HAMT 哈希数组映射字典树(1)简介(2)HAMT 的核心思想(3)HAMT 的结构​a. 基本组成​b. 树的分支因子​(4)H…

面试150 二叉树展开为链表

思路 思路:使用列表存储先序遍历的相关节点。然后遍历列表,分别获取前驱节点和当前节点,将前驱节点的左指针指向空,前驱节点的右指针指向当前节点。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, …

代码随想录算法训练营第十七天

目录 LeetCode.654 最大二叉树 题目链接 最大二叉树 题解 解题思路 LeetCode.617 合并二叉树 题目链接 合并二叉树 题解 解题思路 LeetCode.700 二叉搜索树中的搜索 题目链接 二叉搜索树中的搜索 题解 解题思路 解题思路 LeetCode.98 验证二叉搜索树 题目链接 验…

pycharm无法识别pip安装的包

在使用conda创建一个新的环境后,有些包通过pip的方式安装更方便有效,若在pip安装后,遇到该环境没有此包,或pycharm监测不到此包,通常是pip的环境指向有问题。 解决措施: # 首先检查当前pip的指向 which pip…

Elasticsearch 的 `modules` 目录

Elasticsearch 的 modules 目录是存放**核心功能模块**的目录,这些模块是 Elasticsearch 运行所必需的基础组件,**随官方发行版一起提供**,但设计上允许通过移除或替换模块来**定制化部署**(比如构建一个最小化的 Elasticsearch 实…

https——TCP+TLS

https——TCPTLS主题:基于mbedtls-2.16.0,验证TLS会话复用功能验证环境:1.TLS服务端2.TLS客户端2.1 基于Sesssion ID2.1.1mbedtls-2.16.0库的宏配置2.1.2 初始化配置2.1.3 TCP连接2.1.4 首次TLS连接2.1.4.1 发送加密算法列表2.1.4.2 选择加密…

uni-app uni-push 2.0推送图标不展示问题

问题现象:我在uni-app的配置文件,配置了推送的大图标小图标发现在真机测试无法展示配置的推送图标问题 官网文档:开通 | uni-app官网 解决方法: 在uni-app官网中说的并不是很清楚只给了一个简单的示例,配置并没有告诉我…

scp:上传大型数据集到实验室服务器

我通过百度网盘下载了大概200GB的LUNA-2016的肺结节CT数据。实验是在实验室服务器上进行的,我现在需要将本地的数据集传输到实验室的服务器上。我已经通过remote-ssh连接上了实验室的服务器,但是如果通过这个插件上传数据的话,一方面不支持上…

量子计算突破:8比特扩散模型实现指数级加速

目录 一、量子扩散模型(Quantum Diffusion) 二、DNA存储生成(Biological-GAN) 三、光子计算加速 四、神经形态生成 五、引力场渲染 六、分子级生成 七、星际生成网络 八、元生成系统 极限挑战方向 一、量子扩散模型&…

Flask3.1打造极简CMS系统

基于Flask 3.1和Python 3.13的简易CMS以下是一个基于Flask 3.1和Python 3.13的简易CMS管理系统实现方案,包含核心功能和可运行代码示例。环境准备安装Flask和其他依赖库:pip install flask3.1.0 flask-sqlalchemy flask-login配置数据库在config.py中设置…

用 Node.js 构建模块化的 CLI 脚手架工具,从 GitHub 下载远程模板

本文将手把手带你构建一个支持远程模板下载、自定义项目名称,并完成模块化拆分的 CLI 脚手架工具,适用于初创项目、团队内部工具或者开源项目快速初始化。🧩 为什么要自己造一个 CLI 脚手架? 在日常开发中,我们常用脚手…

08.如何正确关闭文件

如何正确关闭文件(File Handling Best Practices) 文件操作是日常开发中非常常见的任务,正确关闭文件对于避免资源泄漏尤为关键。错误的文件关闭方式可能导致文件未保存、锁定或其他异常。 1. 常见的错误方式:手动 close() 许多初学者会手动调用 close() 关闭文件,这在异…

算法入门--动态规划(C++)

深入浅出掌握动态规划核心思想,图文并茂实战代码 什么是动态规划? 动态规划(Dynamic Programming, DP) 是一种高效解决多阶段决策问题的方法。它通过将复杂问题分解为重叠子问题,并存储子问题的解(避免重…

[2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型

论文结构解析​ 本文采用经典学术论文结构: ​引言​:阐述病理图像分析的挑战与现有方法局限性​相关工作​:系统梳理MIL、视觉语言预训练和生物医学语言模型三大领域​方法​:详细阐述GNN-ViTCap四阶段架构​实验​:在BreakHis和PatchGastric数据集验证性能​讨论​:通…

Java SE--图书管理系统模拟实现

一.设计思路首先这个系统可以由俩种用户使用,分别为管理者用户和普通者用户,根据不同的用户有不同的界面,每个界面有不同的功能。二.代码实现创建三个包和一个类book包:包括Book类和Booklist类Book类:package book; pu…

[RPA] 批量数据抓取指定商品名称信息

影刀RPA案例:批量数据抓取指定商品名称信息流程图:操作步骤:涉及的影刀RPA大致指令: 1. 打开影刀商城页面 2. 使用【填写输入框(web)】指令输入用户名和密码,并点击"登录"按钮 3. 切换到"订单管理"…