OSI参考模型通信处理例子【图解TCP/IP(笔记四)】

news2024/11/18 10:45:04

文章目录

    • OSI参考模型通信处理举例
      • 7层通信
      • ■ 应用层
      • ■ 表示层
      • ■ 会话层
      • ■ 传输层
      • ■ 网络层
      • ■ 数据链路层、物理层

OSI参考模型通信处理举例

下面举例说明7层网络模型的功能。假设使用主机(这里所指的主机是指连接到网络上的计算机。按照OSI的惯例,进行通信的计算机称为节点。然而在TCP/IP中则被叫做主机。A的用户A要给使用主机B的用户B发送一封电子邮件。

7层通信

发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原状。

请添加图片描述

假定用户A要给用户B发送一封内容为“早上好”邮件。网络究竟会进行哪些处理呢?我们由上至下进行分析。
请添加图片描述

■ 应用层

请添加图片描述
用户A在主机A上新建一封电子邮件,指定收件人为B,并输入邮件内容为“早上好”。

收发邮件的这款软件从功能上可以分为两大类:一部分是与通信相关的,另一部分是与通信无关的。例如用户A从键盘输入“早上好”的这一部分就属于与通信无关的功能,而将“早上好”的内容发送给收件人B则是其与通信相关的功能。因此,此处的“输入电子邮件内容后发送给目标地址”也就相当于应用层。

从用户输入完所要发送的内容并点击“发送”按钮的那一刻开始,就进入了应用层协议的处理。该协议会在所要传送数据的前端附加一个首部(标签)信息。该首部标明了邮件内容为“早上好”和收件人为“B”。这一附有首部信息的数据传送给主机B以后由该主机上的收发邮件软件通过“收信”功能获取内容。主机B上的应用收到由主机A发送过来的数据后,分析其数据首部与数据正文,并将邮件保存到硬盘或是其他非易失性存储器(数据不会因为断电而丢失的一种存储设备) 以备进行相应的处理。如果主机B上收件人的邮箱空间已满无法接收新的邮件,则会返回一个错误给发送方。对这类异常的处理也正属于应用层需要解决的问题。

主机A与主机B通过它们各自应用层之间的通信,最终实现邮件的存储。

■ 表示层

请添加图片描述
表示层的“表示”有“表现”、“演示”的意思,因此更关注数据的具体表现形式(最有名的就是每款计算机对数据在内存中相异的分配方式。最典型的是大实体和小实体。) 。

利用表示层,将数据从“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”后再发送出去。接收端主机收到数据以后将这些网络标准格式的数据恢复为“该计算机特定的数据格式”,然后再进行相应处理。

在前面这个例子中,由于数据被转换为通用标准的格式后再进行处理,使得异构的机型之间也能保持数据的一致性。这也正是表示层的作用所在。即表示层是进行“统一的网络数据格式”与“某一台计算机或某一款软件特有的数据格式”之间相互转换的分层。

此例中的“早上好”这段文字根据其编码格式被转换成为了“统一的网络数据格式”。即便是一段简单的文字流,也可以有众多复杂的编码格式。就拿中文来说,有UTF-8以及GBK等编码格式。如果未能按照特定格式编码,那么在接收端就是收到邮件也可能会是乱码。

表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层去处理。

■ 会话层

请添加图片描述
我们来分析在两端主机的会话层之间是如何高效地进行数据交互、采用何种方法传输数据的。

假定用户A新建了5封电子邮件准备发给用户B。这5封邮件的发送顺序可以有很多种。例如,可以每发一封邮件时建立一次连接(指通信连接。) ,随后断开连接。还可以一经建立好连接后就将5封邮件连续发送给对方。甚至可以同时建立好5个连接,将5封邮件同时发送给对方。决定采用何种连接方法是会话层的主要责任。

会话层也像应用层或表示层那样,在其收到的数据前端附加首部或标签信息后再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息。

■ 传输层

请添加图片描述
主机A确保与主机B之间的通信并准备发送数据。这一过程叫做“建立连接”。有了这个通信连接就可以使主机A发送的电子邮件到达主机B中,并由主机B的邮件处理程序获取最终数据。此外,当通信传输结束后,有必要将连接断开。

如上,进行建立连接或断开连接的处理(此处请注意,会话层负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理。) ,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用。此外,传输层为确保所传输的数据到达目标地址,会在通信两端的计算机之间进行确认,如果数据没有到达,它会负责进行重发。

保证数据传输的可靠性是传输层的一个重要作用。为了确保可靠性,在这一层也会为所要传输的数据附加首部以识别这一分层的数据。然而,实际上将数据传输给对端的处理是由网络层来完成的。

■ 网络层

请添加图片描述
网络层的作用是在网络与网络相互连接的环境中,将数据从发送端主机发送到接收端主机。如下图所示,两端主机之间虽然有众多数据链路,但能够将数据从主机A送到主机B也都是网络层的功劳。请添加图片描述
在实际发送数据时,目的地址至关重要。这个地址是进行通信的网络中唯一指定的序号。也可以把它想象为我们日常生活中使用的电话号码。只要这个目标地址确定了,就可以在众多计算机中选出该目标地址所对应的计算机发送数据。基于这个地址,就可以在网络层进行数据包的发送处理。而有了地址和网络层的包发送处理,就可以将数据发送到世界上任何一台互连设备。网络层中也会将其从上层收到的数据和地址信息等一起发送给下面的数据链路层,进行后面的处理。

传输层与网络层的关系

在不同的网络体系结构下,网络层有时也不能保证数据的可达性。  
例如在相当于TCP/IP网络层的IP协议中,就不能保证数据一定会发送到对端地址。  
因此,数据传送过程中出现数据丢失、顺序混乱等问题可能性会大大增加。  
像这样没有可靠性传输要求的网络层中,可以由传输层负责提供“正确传输数据的处理”。  
TCP/IP中,网络层与传输层相互协作以确保数据包能够传送到世界各地,实现可靠传输。

■ 数据链路层、物理层

请添加图片描述
通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。

物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为MAC(Media Access Control,介质访问控制。) 地址,也可称为物理地址或硬件地址。采用MAC地址,目的是为了识别连接到同一个传输介质上的设备。因此,在这一分层中将包含MAC地址信息的首部附加到从网路层转发过来的数据上,将其发送到网络。

网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据。

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

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

相关文章

C++——this指针

1.什么是this指针? this指针是C中的一个特殊指针,它指向当前对象的地址。在类的成员函数中,this指针可以用来访问当前对象的成员变量和成员函数。this指针的作用是区分同名的成员变量和局部变量,以及在成员函数中访问其他成员函数…

C# PaddleOCR ch_PP-OCRv3 ch_PP-OCRv4测试

效果 未开启Onnx,V3 未开启Onnx,V4 开启Onnx,V3 开启Onnx,V4 项目 VS2022.net 4.8OpenCvSharp4 Sdcb.PaddleInference/2.5.0-preview.1 Sdcb.PaddleOCR/2.6.0.6-preview.1 代码 using OpenCvSharp; using Sdcb.PaddleInference; using Sdcb.PaddleOCR; using Sdcb.Paddle…

Spark—通过Java、Scala API实现WordCount案例的基本操作

实验原理 Spark的核心就是RDD,所有在RDD上的操作会被运行在Cluster上,Driver程序启动很多Workers,Workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),然后对RDD在…

Centos7编译安装ffmpeg

1、准备工作,安装必要的环境 yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c git libtool make mercurial pkgconfig zlib-devel 2、创建目录 ffmpeg_sources 目录是下载软件包的目录 ffmpeg 目录是安装目录 mkdir /usr/local/ffmpeg_sour…

库表实验操作

目录 1、创建数据库Market,在 Market中创建数据表customers。​编辑 2、在Market中创建数据表orders。 3、创建数据库Team,定义数据表player。 1、创建数据库Market,在 Market中创建数据表customers。 (1)mysql>…

CentOS7下安装设置MySQL

CentOS7下安装设置MySQL 1.下载MySQL 1.1下载安装MySQL官方yum源配置 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 1.2yum下安装MySQL yum -y install mysql57-community-release-el7-11.noarch.rpm 1.3安装MySQL服务器 yum -y install mysq…

一文讲解Linux上部署Web项目(war包)

一文讲解Linux上部署Web项目(war包) 生成war包 ​ 首先,我们要先将Web项目打成war包 ​ 连接Linux服务器 ​ 这里我们通过SSH客户端,连接远程Linux服务器,需要提前知道Linux的IP地址、登录用户名、密码等&#x…

zabbix基础5——screen屏幕展示、主机模板的使用、用户权限设置

文章目录 一、screen1.1 zabbix屏幕展示1.2 screen命令 二、zabbix模板2.1 创建模板2.2 复制模板2.3 模板导出2.4 模板删除2.5 模板导入 三、主机和主机组3.1 添加主机组3.2 导出主机模板3.3 导入主机模板 四、用户和用户组4.1 创建用户组4.2 创建用户4.3 用户权限设置 一、scr…

ETHERNET/IP 转ETHERCAT连接ethercat总线伺服如何控制

远创智控YC-EIP-ECT网关连接到ETHERNET/IP总线中做为从站使用,连接到ETHERCAT总线中做为从站使用,可以同时满足多种工业生产的需求。支持广泛的设备类型,可以和多种不同的设备进行通讯。 技术参数 ETHERNET/IP 技术参数 ● 网关做为 ETHERN…

LeetCode 方法整理(部分更新中)

1、迭代,链表反转 listNode prev null, next, curr head; while (curr ! null) {next curr.next;curr.next prev;curr next;prev curr;curr next; } return prev;2、递归,链表反转 /*// 两个节点时 head.next.next head; head.next…

苹果手机怎么设置日程安排提醒闹钟?简单几步

在忙碌的工作和生活中,我们经常会忘记重要的约会、会议和任务。这时候,一个可靠的日程提醒闹钟就显得尤为重要了。通过在手机上设置日程安排提醒闹钟,让我们不再错过任何重要的事情。 那么苹果手机怎么设置日程安排提醒闹钟? 敬…

硬件电路设计--运算放大器(一)参数和分类

文章目录 前言一、运放分类1.1 功能分类1.2 按单颗IC封装1.3 第一脚的判断 二、运放参数2.1 理想运放2.2 实际运放2.3 数据手册中的重要参数2.3.1 供电电压Vs(power supply)2.3.2 虚短虚断2.3.3 输入偏置电流Ib2.3.4 噪声Vn2.3.5 静态电流IQ2.3.6 输入失…

用户端Web测试方法与技术

目录: WEB 测试概念WEB 测试的价值WEB 测试学习路线WEB 基础知识html讲解javascript讲解css讲解web项目测试流程web测试设计思路web端常见bug解析Litemall购物车功能测试用例设计浏览器开发者工具web兼容测试策略Litemall购物车功能测试执行 1.WEB 测试概念 WEB…

【InnoDB 存储引擎】5.4.5 The Slow Query Log(慢日志实验)

文章目录 1 慢日志实验环境准备2 开始实验2.1 实验 1:超过查询时间相关慢日志并观察2.2 实验 2:不使用索引相关慢日志并观察2.3 实验 3:打印额外的慢日志信息2.4 实验 4:使用 mysqldumpslow 工具分析日志文件2.5 实验 5&#xff1…

《UNUX环境高级编程》(7)进程环境

1、引言 2、main函数 main函数的原型/*argc是命令行参数的数目,argv是指向各个指针所构成的数组*/ int main(int argc,char *argv[]);3、进程终止 有八种方式使进程终止。其中5种是正常,它们是: 从main函数返回调用exit调用_exit或_Exit最后…

看一看LRU与LFU

LRU(Least recently used:最近最少使用)和LFU(Least frequently used:最不经常使用),两个都是以链表结构为基础,一般是作为缓存使用,当然,既然是缓存&#xf…

第六章:L2JMobius学习 – 源码讲解网络数据通信

本章节介绍客户端和服务器端的网络数据通信,使用的技术是Java NIO(也就是套接字Socket)。服务器端和客户端使用Socket通信的原因在于,它是双向的,持久的。也就是说,服务器端可以随时的向客户端发送数据&…

Tomcat7部署war包getshell 漏洞复现

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 验证方式03 利用方式04 修复方案 01 漏洞描述 Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相…

pycharm如何给一串中文快捷加引号(方法一)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 门前冷落鞍马稀,老大嫁作商人妇。 大家好,我是皮皮。 一、前言 前几天在Python白银群【此类生物】问了一个Pycharm基础的问题&a…

Linux文件管理常用命令补充

(该图由AI绘制 关注我 学习AI画图) 目录 一、查看文件内容 more分屏显示文件内容(了解) less分屏显示文件内容(重点) 二、文件统计命令 1、wc命令 2、du命令 三、文件处理命令 1、find命令 2、gr…