当大多数网络学生首次了解OSI模型时,他们会花费大量时间来尝试确定特定协议适合模型的哪一层。在此论坛上,我们有很多关于OSI层的问题,它们通常是:



IS-IS在哪个OSI层上运行?
HTML是表示形式还是应用程序协议?
VPN隧道是第2层还是第3层?



学生(或专业人士)应如何理解OSI模型与他//之间的协议之间的关系?她一起工作吗?

评论

作为拥有30多年OSI + TCP / IP实现者的人,答案很简单:使用模型了解全局。在那之后,尤其是对于任何不整洁的东西,请集中精力提供的服务和使用的服务。很少能提供清晰的画面。

#1 楼

关于OSI模型,要记住两个重要的事实:


这是一个概念模型。这意味着它描述了一组理想的,抽象的,理论上的网络功能。它没有描述某人实际构建的任何东西(至少没有今天使用的任何东西)。
它不是唯一的模型。还有其他模型,最著名的是TCP / IP协议套件(RFC-1122和RFC-1123),它与当前使用的模型非常接近。

一段历史:可能所有人都听说过分组网络的早期,包括Internet的前身ARPANET。除了美国国防部为创建网络协议所做的努力外,其他一些团体和公司也参与其中。每个小组都在崭新的分组交换领域中开发自己的协议。 IBM和电话公司正在开发自己的标准。在法国,研究人员正在研究自己的网络项目Cyclades。

OSI模型的研究始于1970年代后期,主要是对IBM,NCR,Burroughs等大公司日益增长的影响力的反应,霍尼韦尔(及其他),其专有协议和硬件。其背后的想法是创建一个开放标准,以提供不同制造商之间的互操作性。但是,由于ISO模式的范围是国际性的,因此它具有许多相互竞争的政治,文化和技术利益。花费了六年多的时间才能达成共识并发布标准。

同时,还开发了TCP / IP模型。它简单,易于实施,最重要的是,它是免费的。您必须购买OSI标准规范才能为其创建软件。 TCP / IP吸引了所有关注和发展。结果,OSI模型从未实现为一组协议,而TCP / IP成为Internet的标准。

关键是,当今使用的所有协议都是TCP / IP套件。路由协议,如RIP,OSPF和BGP;主机OS协议(例如Windows SMB和Unix RPC)在开发时就没有考虑OSI模型。它们有时有些相似之处,但是在开发过程中从未遵循过OSI标准。因此,尝试将这些协议添加到OSI中是愚蠢的事情。它们只是不完全匹配。学习它仍然是一个好主意,以便您可以了解一般概念。 OSI层的概念被编织成网络术语,以至于我们在日常网络演讲中谈论第1、2和3层。稍作斜视,第1、2和3层的定义就可以很好地达成共识。仅出于这个原因,就值得了解。

关于OSI(或任何其他)模型的最重要的了解是:


协议分为层
层提供封装
层提供抽象
层将功能与其他功能分离

将协议分为层可让我们分别讨论其不同方面。它使协议更易于理解和解决。我们可以轻松地隔离特定功能,并将其与其他协议的相似功能组合在一起。

每个“功能”(从广义上讲)都封装了其上方的层。网络层封装了其上方的各层。数据链路层封装了网络层,依此类推。

图层将其下面的图层抽象化。您的网络浏览器不需要知道您是在网络层上使用的是TCP / IP还是其他功能(好像还有其他功能)。对于您的浏览器,较低的层仅提供数据流。从浏览器中隐藏了该流如何显示。 TCP / IP不知道(或不在乎)您使用的是以太网,电缆调制解调器,T1线路还是卫星。它只处理数据包。想象一下设计一个必须处理所有这些问题的应用程序将有多么困难。这些层抽象了较低的层,因此软件的设计和操作变得更加简单。

解耦:理论上,您可以在同一层用一种特定的技术替代另一种特定的技术。只要该层以相同的方式与上一层和下一层进行通信,则实现的方式无关紧要。例如,我们可以删除非常著名的第3层协议IP版本4,并将其替换为IP版本6。其他所有工作都应该完全相同。对于您的浏览器或电缆调制解调器而言,它应该没有任何区别。

TCP / IP模型是TCP / IP协议套件所基于的(惊奇!)。它只有四层,传输之上的所有内容都只是“应用程序”。它更易于理解,并避免了诸如“是此会话层还是表示层?”之类的无尽问题。但是它也只是一个模型,有些东西也不适合它,例如隧道协议(GRE,MPLS,IPSec等)。

最终,模型是一种表示不可见的抽象概念的方法,例如地址,数据包和位。只要牢记这一点,OSI或TCP / IP模型对于理解网络很有用。

评论


我一直想知道为什么在现实中TCP / IP模型更适合该法案时我们为什么要使用OSI模型。

– Ryan Foley
2014年2月20日在8:01

@RyanFoley,在许多情况下是正确的。但是,在进行故障排除(尤其是进行故障排除)时,最好有单独的物理层和数据层来分别解决每个问题。例如,很高兴知道Cisco设备在启用/启用,启用/禁用和停用/禁用的接口之间的区别。

– YLearn♦
2014年5月30日在22:51

“例如,我们可以删除非常著名的第3层协议IP版本4,并将其替换为IP版本6。其他所有功能都应该完全相同。对于您的浏览器或电缆调制解调器,这应该没有什么区别。 ”不幸的是,它确实有所作为,因为抽象是泄漏的。应用程序和传输协议需要了解Internet协议使用的寻址。

– Peter Green
16年7月28日在16:11

好吧,这就是为什么模型只是模型。

–罗恩·托恩(Ron Trunk)
16年7月28日在16:15

joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions我们构建抽象来隐藏底层事物的丑陋细节,但是底层事物的某些细节却泄漏并导致问题。寻址系统就是其中之一,它一直泄漏到堆栈的顶部。

– Peter Green
19年2月8日在17:22

#2 楼

这里有些混乱。仅仅因为一个函数似乎不适合某个层并不意味着它不适合。 OSI是灵活的,并允许将实际实现映射到模型的对象和子层。一层的某些功能也可以在其他层重复。同样,处理不必在应用程序层进行。最后,OSI不仅仅是一个模型,它是由某些制造商完全实施的。我参与了DEC项目。实用性意味着今天仅使用OSI的某些部分。

#3 楼

所有IGP(内部网关协议)路由协议都在第3层工作。外部BGP在第4层工作,而内部BGP在第3层工作。

物理层-处理硬件网络设备,例如笔记本电脑,移动电话,台式机。已知第1层是冲突域,即第1层PDU(协议数据单元是位)。

数据/链路层-该层涉及第2层交换机,广播域,VLANS,STP,VTP 。该层的协议数据单元称为帧。

网络层-这是发生路由时,大多数路由协议都在此层工作。这也称为IP层,VLANS在其中进行通信。此层的PDU称为数据包。传输层-传输层处理TCP和UDP端口,这些端口是来自第3层的数据包发送到其目标端口的位置。重要的是要记住,TCP是面向连接的协议,而UDP是面向无连接的协议(非保证的数据传输)。该层的PDU是数据报。应用程序并将其转换为->

Presentation层-该层是关于您在Web浏览器中看到的客户端代码,或者当您右键单击并查看源代码时,主要是HTM / CSS / Javascript代码,它使您可以查看->

应用程序层-这是GUI(图形用户界面)将HTML / CSS代码从第6层转换到该层的地方。您在Web浏览器中看到的是前端GUI。第5、6、7层PDU称为消息。

我希望它们能回答所有与OSI相关的问题。

IS-IS在哪个OSI层上运行? -第3层
HTML是表示形式还是应用程序协议? -演示
VPN隧道是第2层还是第3层? -> L2TP是第2层-> VPN隧道通常在第3层(例如IPSEC)工作。

评论


这不能回答OP。他从来没有问过每一层做了什么,他问过人们应该对底层概念有所了解。

– Ryan Foley
2014年2月20日在7:51

信息丰富,但这是一个问题/解决方案的站点。如果问题是“ OSI模型的不同层是什么,每个层做什么?”,您的答案就很好。问题是关于支持OSI模型的基础知识,而不是直接支持OSI模型的问题。洞察力强,但对这个特定问题的答案很差。

– Ryan Foley
14年2月20日在8:57

克里斯,我感谢您的回答,在很大程度上,您是正确的。但是ISIS运行在IP之上,这使其成为第4层吗? BGP怎么样?它在TCP之上运行。是第5层吗?我的观点是,尽管您可以将协议压缩到各个层中,但它们实际上并不适合。如果您要查看OSI表示层规范,我认为HTML不太适合。甚至OSI也承认第2层太宽,因此他们不得不将其分为两个子层。

–罗恩·托恩(Ron Trunk)
2014年2月20日在11:23

OSI模型只是一个理论模型。即使路由协议使用(L2 | L3)数据包,它也是L7的一部分,因为它是一个应用程序,因此它必须计算路由表,甚至可能计算它们之间的同一层。并非所有事物都是黑白的。

– mulaz
2014年2月20日在12:14

@ Ron,ISIS不是本机IP协议。 OSPF是。 (只需增加更多的混乱即可。:-))

–约翰·詹森(John Jensen)
2014年2月20日在16:19



#4 楼

HTTP(非HTML)同时具有表示层和应用程序层。然后,您将可以在数据包中两次看到此添加的层。

评论


您当然可以标记合适的东西,但是HTTP的开发没有考虑OSI模型,并且它不符合规范。 VPN也是如此-OSI标准从未预见到它们。因此,正如他们所说,任何相似之处都是完全巧合的。

–罗恩·托恩(Ron Trunk)
17年2月19日在15:25

@RonTrunk-IP不是为OSI模型设计的,但它恰好适合第3层。OSI有一个模型,并且具有许多服务的详细规范。 HTTP不符合任何OSI服务规范,甚至不相符。但是我断言它确实可以解决OSI应用程序和表示模型层中已解决的问题。现在,我不知道该断言是否很有帮助,但这是有效的。

– Jeff Learman
12月18日,3:03



#5 楼

使用OSI模型的最佳方法是通用模型,并记住它通常不合适。对于那些似乎不容易适应的问题,不要强调“层”,而应将重点放在所提供的服务和所使用的服务上。例如,隧道协议可以使用传输层服务来提供链路层服务。这是哪一层?对用户而言,它看起来像2。对于所使用的层,它看起来像层3。试图将其压缩到任何单个层中,都完全失去了重点。它使用第2层的服务。OSPF也是第3层。它有助于网络层协议(IP)发挥作用。它使用IP来完成其工作,并且不直接使用第二层。
关于上层(会话,演示文稿,ACSE),最好不要忘记它们,除非它们有助于解决特定问题。事实证明,最好使用不同的非分层组织来完成他们的工作。

#6 楼

实际上,来自OSI模型的很少的东西之一是X.509证书和来自X.500的大量LDAP。另一件事是用于消息传递的X.400,MS Exchange至少在5.5中具有此功能,不确定是否包含更高版本。反对TCP / IP,我真的不明白为什么仍然要教给学生。试图将MPLS之类的东西放到这个模型中是没有任何意义的。过度设计一切。

评论


对于较低的4层,肯定有助于理解OSI模型或IP服务模型(在学术水平上足够类似。)但我希望老师将更多的精力放在服务上而不是层次上。这些图层只是大地图上的简单案例。了解了这些内容之后,您将根据提供的服务和使用的服务查看所有有趣的异常。

– Jeff Learman
12月18日,下午2:54

有趣的是,x.400可能仍然存在。我以为这是最后一个死了(仅剩下X.5xx和ISIS。)

– Jeff Learman
12月18日,下午2:56