热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记之TCP/IP协议分层与OSI參考模型

1.协议的分层ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论,终于提出了作为通信协议设计指标的OSI參考模型。这一模型将通信协议中必要的功能分成了7层。通过
1.协议的分层
     ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型。这一模型将通信协议中必要 的功能分成了7层。通过这些分层,使得那些比較复杂的网络协议更加简单化。

在这一模型中每一个分层都接收由它下一层所提供的特定服务,而且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口。同一层之间的交互所遵循的约定叫做协议”。

协议分层就如同计算机软件中的模块化开发。OSI參考模型的建议是比較理想化的。它希望实现从第一层到第七层的全部模块并将它们组合起来实现网络 通信。分层能够将每一个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统。因此,能够构造一个扩展性和灵活性都较强的系统。此外,通过分层能够细分通信功能更易于单独实现每一个分层的协议,并界定各个分层的详细责任和义务。这些都属于分层的长处。而分层的劣势,可能就在于过分模块化、使处理变得更加沉重以及每一个模块都不得不实现相似的处理逻辑等问题。
技术分享
2.通过对话理解分层

关于协议的分层,我们再以AC的对话(见上一节)为例简单说明一下。在此,我们仅仅考虑语言层和通信设备层这两个分层的情况。首先,以电话聊天为例,见下图,上半部分中的AC两个人正在通过电话 (信设备)用汉语(语言协议)聊天。我们具体分析一下这张图。

技术分享

表面上看AC是在用汉语直接对话,但实际上AC都是在通过电话机的听筒听取声音都在对着麦克风说话。想象一下假设有一个素未见过电话机的人见到这个场景会怎么想?恐怕他一定会以为AC在跟电话机聊天吧。事实上在这个图中,他们所用的语言协议作为麦克风的音频输入,在通信设备层被转换为电波信号传送出去了。传送到对方的电话机后,又被通信设备层转换为音频输出,传递给了对方。因此,AC事实上是利用电话机之间通过音频转化声音的接口实现了对话。

     通常人们会认为拿起电话与人通话,事实上就好像是直接在跟对方对话,然而假设细致分析,在整个过程中实际上是电话机在做中介,这是不可否认的。假设A的电话 机所传出的电子信号并未能转换成与C的电话机同样频率的声音,那会怎样?这就如 同A的电话机与C的电话机的协议互不同样。C听到声音后可能会认为自己不是在跟 A而是在跟其它人说话。频率若是相去甚远,C更有可能会认为自己听到的不是汉语。

那么假设我们假定语言层同样而改变了通信设备层,情况会怎样?比如,将 电话机改为无线电。通信设备层假设改用无线电,那么就得学会使用无线电的方 法。因为语言层仍然在使用汉语协议,因此使用者能够全然和以往打电话时一样 正常通话上图左下部分)。

那么,假设通信设备层使用电话机而语言层改为英语的话情况又会怎样? 非常显然,电话机本身不会受限于使用者使用的语言。因此,这样的情况与使用汉语 通话时全然一样,依旧能够实现通话上图右下部分)。

   到此为止,读者可能会认为这些都是再简单只是的、理所当然的事。在此仅举出简单的样例,权作对协议分层及其便利性的一个解释,以加深对分层协议的理解。


3.OSI參考模型
  前面仅仅是将协议简单地分为了两层进行了举例说明。然而,实际的分组通信协议 会相当复杂。OSI參考模型将这样一个复杂的协议整理并分为了易于理解的7个分层。
技术分享
     osi參考模型对通信中必要的功能做了非常好的归纳。网络project师在讨论协议 相关问题时也常常以osi參考模型的分层为原型。对于计算机网络的刚開始学习的人,学 习osi參考模型能够说是通往成功的第一步。只是,osi參考模型终究是一个“模型”,它也仅仅是对各层的作用做了一系列 粗略的界定,并没有对协议和接口进行具体的定义。它对学习和设计协议仅仅能起 到一个引导的作用。因此,若想要了解协议的很多其它细节,还是有必要參考每一个协 议本身的详细规范。很多通信协议,都相应了 OSI參考模型7个分层中的某层。通过这一点,可 以大致了解该协议在整个通信功能中的位置和作用。

4.OSI參考模型中各个分层的作用
    在此,下面图为例简单说明OSI參考模型中各个分层的主要作用。
技术分享
  • 应用层
为应用程序提供服务并规定应用程序中通信相关的细节。包含文件传输、电 子邮件、远程登录(虚拟终端)等协议。
  • 表示层
将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换 为上层可以处理的格式。因此它主要负责数据格式的转换。
详细来说,就是将设备固有的数据格式转换为网络标准传输格式。不同设备 对同一比特流解释的结果可能会不同。因此,使它们保持一致是这一层的主要 作用。
  • 会话层
负责建立和断开通信连接(数据流动的逻辑通路),以及数据的切割等数据 传输相关的管理。
  • 传输层
起着可靠传输的作用。仅仅在通信两方节点上进行处理,而无需在路由器上 处理。
  • 网络层
将传输数据到目标地址。目标地址能够是多个网络通过路由器连接而成的某 一个地址。因此这一层主要负责寻址和路由选择。
  • 数据链路层 
负责物理层面上互连的、节点之间的通信传输。比如与1个以太网相连的2 个节点之间的通信。
将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。
  • 物理层
负责0、1比特流(0、1序列)与电压的髙低、光的闪灭之间的互换。





学习笔记之TCP/IP协议分层与OSI參考模型


推荐阅读
  • 深入解析Java虚拟机的内存分区与管理机制
    Java虚拟机的内存分区与管理机制复杂且精细。其中,某些内存区域在虚拟机启动时即创建并持续存在,而另一些则随用户线程的生命周期动态创建和销毁。例如,每个线程都拥有一个独立的程序计数器,确保线程切换后能够准确恢复到之前的执行位置。这种设计不仅提高了多线程环境下的执行效率,还增强了系统的稳定性和可靠性。 ... [详细]
  • 在 Mac 上查看隐藏文件和文件夹的详细指南。通过终端命令,您可以轻松地显示或隐藏这些文件。具体步骤如下:输入 `defaults write com.apple.finder AppleShowAllFiles -bool true` 以显示所有隐藏文件,或使用 `defaults write com.apple.finder AppleShowAllFiles -bool false` 以重新隐藏它们。此方法适用于各种版本的 macOS,帮助用户更好地管理和访问系统文件。 ... [详细]
  • 如何在PDF文档中添加新的文本内容?
    在处理PDF文件时,有时需要向其中添加新的文本内容。这是否可以直接实现呢?有哪些简便且免费的方法可供选择?使用极速PDF阅读器打开文档后,可以通过点击左上角的“注释”按钮切换到注释模式,并选择相应的工具进行编辑。此外,还可以利用其他功能丰富的PDF编辑软件,如Adobe Acrobat DC或Foxit PhantomPDF,它们提供了更多高级的编辑选项,能够满足更复杂的需求。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • 本文详细解析了逻辑运算符“与”(&&)和“或”(||)在编程中的应用。通过具体示例,如 `[dehua@teacher~]$[$(id -u) -eq 0] && echo "You are root" || echo "You must be root"`,展示了如何利用这些运算符进行条件判断和命令执行。此外,文章还探讨了这些运算符在不同编程语言中的实现和最佳实践,帮助读者更好地理解和运用逻辑运算符。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 蚂蚁课堂:性能测试工具深度解析——JMeter应用与实践
    蚂蚁课堂:性能测试工具深度解析——JMeter应用与实践 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • 题目 E. DeadLee:思维导图与拓扑结构的深度解析问题描述:给定 n 种食物,每种食物的数量由 wi 表示。同时,有 m 位朋友,每位朋友喜欢两种特定的食物 x 和 y。目标是通过合理分配食物,使尽可能多的朋友感到满意。本文将通过思维导图和拓扑排序的方法,对这一问题进行深入分析和求解。 ... [详细]
  • 深入解析Linux内核中的进程上下文切换机制
    在现代操作系统中,进程作为核心概念之一,负责管理和分配系统资源,如CPU和内存。深入了解Linux内核中的进程上下文切换机制,需要首先明确进程与程序的区别。进程是一个动态的执行流,而程序则是静态的数据和指令集合。进程上下文切换涉及保存当前进程的状态信息,并加载下一个进程的状态,以实现多任务处理。这一过程不仅影响系统的性能,还关系到资源的有效利用。通过分析Linux内核中的具体实现,可以更好地理解其背后的原理和技术细节。 ... [详细]
  • 题目要求解决一个有趣的编程挑战,即计算由四个自然数 \( p, q, r, s \) 组成的分数序列的和。具体来说,需要编写一个 C# 程序来处理这些自然数,并通过特定的数学运算得出最终结果。该任务不仅考验编程技能,还涉及对数学公式的理解和应用。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
author-avatar
892974506_bdb55d_896
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有