【嵌入式开发之网络编程】网络分层、OSI七层模型、TCP/IP及五层体系结构

news2024/12/23 12:53:04

计算机网络体系的形成

两台计算机要互相传送文件需解决很多问题,比如:

  1. 必须有一条传送数据的通路。
  2. 发起方必须激活通路。
  3. 要告诉网络如何识别接收方。
  4. 发起方要清楚对方是否已开机,且与网络连接正常。
  5. 发起方要清楚对方是否准备好接收和存储文件。
  6. 若文件格式不兼容,要完成格式的转换。
  7. 要处理各种差错和意外事故,保证收到正确的文件。

面对这一系列的问题,最初的 ARPANET 设计时提出了分层的设计方法,将庞大而复杂的问题,转化为若干较小的局部问题,1974 年,IBM 按照分层的方法制定并提出了系统网络体系结构 SNA (System Network Architecture),此后,其他一些公司也相继推出了具有不同名称的体系结构。

但由于网络体系结构的不同,不同公司的设备很难互相连通。

ISO (国际标准化组织) 提出的 OSI/RM (Open Systems Interconnection Reference Model) 是使各种计算机在世界范围内互连成网的标准框架,OSI/RM 只是个抽象的概念,1983年,形成了著名的 ISO 7498 国际标准,即七层协议的体系结构。

但最终ISO/OSI 失败了,而基于 TCP/IP 的互联网抢先在全球相当大的范围成功地运行。

所以存在两种国际标准:法律上的 (de jure) 国际标准 OSI,但并没有得到市场的认可;事实上的 (de facto) 国际标准 TCP/IP,获得了最广泛的应用。

协议与划分层次

网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。

协议包括两种形式:

  • 文字描述:便于人来阅读和理解。
  • 程序代码:让计算机能够理解。

由之前ARPANET 的研制经验表明:对于非常复杂的计算机网络协议,其结构应该是层次式的。

 

各层完成的主要功能:

  • 差错控制:使相应层次对等方的通信更加可靠。
  • 流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。
  • 分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
  • 复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
  • 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。 

网络的体系结构 (Network Architecture) 是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)。

实现 (implementation) 是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题。

体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。 

OSI 的七层协议体系结构

高层:负责主机之间的数据传输 

应用层 (Applications Layer)网络服务与最终用户的一个接口
表示层 (Presentation Layer)数据的表示、安全、压缩
会话层 (Session Layer)建立、管理、中止会话

低层:负责网络之间的数据传输 

运输层 (Transport Layer)定义传输数据的协议端口号,以及流控和差错校验
网络层 (Network Layer)进行逻辑地址寻址、差错校验等功能
数据链路层 (Data Link Layer)建立逻辑连接、进行硬件地址寻址、差错校验等功能
物理层 (Physical Layer)建立、维护、断开物理连接

TCP/IP协议族体系结构

TCP/IP 的体系结构是事实上的国际标准,实质上TCP/IP只有最上面的三层,最下面的网络接口层(链路层)并没有具体内容,链路层所使用的各种局域网标准是由IEEE的802委员会下属的各工作组负责制定的。

现在互联网使用的 TCP/IP 体系结构已经发生了演变,即某些应用程序可以直接使用 IP 层,或甚至直接使用最下面的网络接口层。

IP 层可以支持多种的运输层协议,IP 协议可以在多种类型的网络上运行,设计理念就是网络核心部分越简单越好。  

 五层协议的体系结构

应用层 

应用层的任务是通过应用进程间的交互来完成特定网络应用。

应用层的协议定义的是应用进程间通信和交互的规则。

把应用层交互的数据单元称为报文(message),例如:DNS,SMTP,FTP,RPC,SNMP。

运输层 

运输层的任务是负责向两台主机中进程之间的通信提供通用的数据传输服务。

运输层具有复用和分用的功能。

主要使用两种协议:

  1. 传输控制协议TCP(Transmission Control Protocol):提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段 (segment)。
  2. 用户数据报协议UDP (User Datagram Protocol):提供无连接的尽最大努力 (best-effort) 的数据传输服务(不保证数据传输的可靠性), 数据传输的单位是用户数据报。

网络层 

网际层为分组交换网上的不同主机提供通信服务。

两个具体任务:

  1. 路由选择:通过一定的算法,在互联网中的每一个路由器上,生成一个用来转发分组的转发表。
  2. 转发:每一个路由器在接收到一个分组时,要依据转发表中指明的路径把分组转发到下一个路由器。

互联网使用的网络层协议是无连接的网际协议 IP  (Internet Protocol) 和许多种路由选择协议,因此互联网的网络层也叫做网际层或 IP 层。IP 协议分组也叫做 IP 数据报,或简称为数据报。 

数据链路层 

数据链路层常简称为链路层。

数据链路层的任务是实现两个相邻节点之间的可靠通信。 在两个相邻节点间的链路上传送帧(frame)。

如发现有差错,就简单地丢弃出错帧。 如果需要改正出现的差错,就要采用可靠传输协议来纠正出现的差错。这种方法会使数据链路层协议复杂。

物理层

物理层的任务是实现比特(0 或 1)的传输。 确定连接电缆的插头应当有多少根引脚,以及各引脚应如何连接。需要注意的是:传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内,而是在物理层协议的下面。

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

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

相关文章

JS UI库DHTMLX Suite v8.4全新发布——图表、网格组件等API全面升级

DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。DHTMLX JS UI 组件可用于任何服务器端技术:PHP、Java、ASP.NET、Ruby、Grails、ColdFusion、Pyt…

糟糕界面集锦-控件篇10

想要让自己的程序别具一格,正是出于这种被误导的动机。IBM 的Aptiva Communitations Center 开发者决定不使用Windows 自己的控件,用自行开发的控件取而代之。他们非常成功地做到了这一点:该程序看上去与其他Windows 环境下运行的程序完全不同…

C语言-在主函数中输入10个等长的字符串。用另一函数对他们进行排序,然后再主函数输出这10个排好序的数列(分别用①数组法和②指针法实现)

在主函数中输入10个等长的字符串。用另一函数对他们进行排序&#xff0c;然后再主函数输出这10个排好序的数列&#xff08;分别用数组法和指针法实现&#xff09; 一、数组法实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void str_sort(char str[][32], …

【C语言】时间函数详解

目录 C语言时间函数详解表格汇总1. time2. localtime3. gmtime4. strftime5. clock6. difftime函数详解示例解释 7. mktime8. asctime9. ctime10. clock_gettime 和 clock_settime总结9. 结束语相关文章&#xff1a; C语言时间函数详解 在C语言中&#xff0c;时间处理功能由标…

【国奖学姐力荐】matlab智能算法的案例分析和源代码

现在各类数模比赛特别是国赛优化问题越来越多&#xff0c;而求解这些优化问题往往要用到智能启发式算法&#xff0c;今天带大家看一下matlab智能算法的案例分析和源代码&#xff0c;有两本书推荐给大家。 有需要这两本书籍电子版和单独案例的家人可以公屏留言&#xff0c;我会依…

【C# WPF WeChat UI 简单布局】

创建WPF项目 VS创建一个C#的WPF应用程序: 创建完成后项目目录下会有一个MainWindow.xaml文件以及MainWindow.cs文件,此处将MainWindow.xaml文件作为主页面的布局文件,也即为页面的主题布局都在该文件进行。 布局和数据 主体布局 Wechat的布局可暂时分为三列, 第一列为菜…

【Spring Boot】拦截器的使用

目录 前言 拦截器的使用 1.创建一个拦截器 2.注册拦截器 3.配置拦截器的匹配规则 拦截器的实际使用场景 拦截器 vs 过滤器 vs AOP 前言 在Spring Boot中&#xff0c;拦截器&#xff08;interceptor&#xff09;是一种用于拦截和处理请求的机制。通过拦截器&#xff0c;可…

聊天机器人正在膨胀技术

API 在软件中发挥的作用比任何其他东西都要大 当团队与外部 API&#xff08;包括第三方 AI&#xff09;集成时&#xff0c;他们可以将预制的外部功能引入产品中。我使用 API 让用户根据matchboxxr上的提示生成 3D 模型。 但是&#xff0c;尽管越来越多的初创公司只关注人工智能…

Java开发工具IDEA入门指南——如何从VS Code迁移到IDEA?(一)

IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的Java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 在本文中&#x…

【java基础】IDEA 的断点调试(Debug)

目录 1.为什么需要 Debug 2.Debug的步骤 2.1添加断点 2.2单步调试工具介绍 2.2.1 Step Over 2.2.2 Step Into 2.2.3 Force Step Into 2.2.4 Step Out 2.2.5 Run To Cursor 2.2.6 Show Execution Poiint 2.2.7 Resume Program 3.多种 Debug 情况介绍 3.1行断点 3.2方…

XSS GAME

源网站&#xff1a;XSS 游戏 - 学习 XSS 变得简单&#xff01; |创建者 PwnFunction 以下为解码工具&#xff1a; 在线 JSFuck 加密 - 百川在线工具箱 (chaitin.cn) CyberChef 1、Ma Spaghet! 条件 Difficulty is Easy.Pop an alert(1337) on sandbox.pwnfunction.com.No…

分析FP -Growth代码运行内存太大而无法运行的原因

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

随记 - 2024 年 4 月 12 日

写在前面 444 字 | 生活 | 经历 | 感触 正文 或许因为压力大&#xff0c;亦或者简单的糖分不足&#xff0c;今晚好想吃面包和蛋糕。 蛋糕吃不完也买不起&#xff0c;面包还是可以。 实在饿&#xff0c;出门了。 导航两家西点店&#xff0c;关门。怏怏地找另一家。 在十点前&a…

效果炫酷的3D翻转书特效WordPress主题模板MagicBook主题v1.19

正文&#xff1a; MagicBook是一款支持3D翻书特效的书籍WordPress主题。支持可视化页面搭建&#xff0c;3D菜单&#xff0c;完全自适应设计,WPML多语言支持。 这款主题一定会让你爱不释手。虽然他是英文的&#xff0c;但不可不承认的是&#xff0c;它优雅的设计会让你愿意花时…

[Linux]将一个文件复制到多个文件夹下

一、简介 本文介绍了在linux下如何使用cp命令将一个文件复制到多个文件夹、多个文件复制到一个文件夹和多个文件复制到多个文件夹下。 二、代码 假设初始时test/文件夹的结构如下&#xff1a; 1. 将一个文件复制到多个文件夹 a.命令示例 将file1复制到目录des_dir1/&#…

【PGCCC】pg_bestmatch.rs:使用 BM25 提升您的 PostgreSQL 文本查询#PCA

这是一个 PostgreSQL 扩展&#xff0c;它将最佳匹配 25 分数 (BM25) 文本查询的强大功能引入您的数据库&#xff0c;从而增强您执行高效和准确的文本检索的能力。此扩展允许用户从文本生成 BM25 统计稀疏向量&#xff0c;利用 BM25 在各种基准测试任务中经过验证的性能。 为什…

8.16 QT

1.思维导图 2 将day1做的登录界面升级优化【资源文件的添加】 2> 在登录界面的登录取消按钮进行一下设置&#xff1a; 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5…

《SPSS零基础入门教程》学习笔记——03.变量的统计描述

文章目录 3.1 连续变量&#xff08;1&#xff09;集中趋势&#xff08;2&#xff09;离散趋势&#xff08;3&#xff09;分布特征 3.2 分类变量&#xff08;1&#xff09;单个分类变量&#xff08;2&#xff09;多个分类变量 3.1 连续变量 &#xff08;1&#xff09;集中趋势 …

使用 Python 解密加密的 PDF 文件

使用 Python 进行 PDF 文件加密-CSDN博客文章浏览阅读89次&#xff0c;点赞2次&#xff0c;收藏2次。定义一个名为的函数&#xff0c;该函数接受三个参数&#xff1a;输入的 PDF 文件路径input_pdf、输出的加密 PDF 文件路径output_pdf和密码password。https://blog.csdn.net/q…

django中的MESSAGE组件

文章目录 message组件1 使用配置2 设置值3 读取值4 源码分析 message组件 1 使用配置 INSTALLED_APPS [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,"…