当前位置: 首页 > news >正文

TCP/IP--七层通信

文章目录

  • TCP/IP--七层通信
    • 先来看一下会话层以上的处理
    • 再来看一下传输层以下的处理

TCP/IP–七层通信

下面举例说明7层网络模型的功能。假设使用主机A的用户A要给使用主机B的用户B发送一封电子邮件。
在七层OSI模型中,如何模块化通信传输?

先来看一下七层通信的整体架构,如下图:
在这里插入图片描述
发送端发送邮件的时候是先从应用层传输,再逐次向下到物理层;而当接收端接收邮件的时候,是先从物理层进行接收,然后逐次向上到应用层;还有就是在接收端的每一层处理内容的时候,都会给内容加上一个“首部信息”,用来指定内容发送的信息,比如说应用层写好一封邮件之后,就会给内容加上一个首部信息,这个首部信息可能包括邮件内容“早上好”和收件人“B”;而在接收端对应的层,也就是在接收端的应用层会把首部信息和发送端的发送内容相分离。因此发送端从上到下处理内容,达到物理层的时候已经给内容包括七层首部信息了,当接收端开始从物理层处理发送端发送来的内容的时候,首先物理层会把物理层的首部信息和内容分离,相当于去除了发送端发送来的内容的一层首部信息,等到接收端的应用层处理内容的时候,就可以去掉第七层首部信息了,就相当于发送端是一层一层的包裹,而接收端则是一层一层的拆封,先拆最外层,逐次到最里层。
还有就是每一层都有每一层的通信协议,有了同一个通信协议,每一层才能正确的解析对方发送来的信息。

注意每一层的通信协议都是相同的,如下图:
在这里插入图片描述

先来看一下会话层以上的处理

1.首先说一下应用层
在这里插入图片描述

应用层可以简单的想象成是应用程序的页面,比如说现在A用户想要给B用户发送一封邮件,那么A用户就需要去打开自己电脑上的邮箱,新建一封邮件。比如A用户新建邮件内容“早上好”,收件人“B用户”。那么在接收方B用户接收到发送放的内容之后,当内容被接收方的应用层处理的时候,首先因为发送方的应用层和接收方的应用层使用的是同一个通信协议,因此接收方能够正确解析发送方发来的数据,然后接收方应用层会取出内容的首部信息,得到真正的邮件信息,最后接收方应用层会把邮件存储到接收方的硬盘或者其它存储器里面。
并且如果接收方邮件已满,会给发送方应用层返回一个错误提示信息,这也是应用层干的事情。

2.再来说下表示层
在这里插入图片描述

表示层是用来提供一个“网络通用的标准数据格式”的。在邮件发送初期,必须要求发送方和接收方使用的是同一个类型的邮箱,比如说都是qq邮箱,这样接收端才能正确解析发送端邮箱发送来的数据格式。但是这对用户来说就非常的不方便,就是我如果想要给你发邮件,还必须下载和你一样的邮箱客户端,这太麻烦了。而表示层可以将“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”,这样我们只需要让每一种类型的邮箱都能够处理“网络通用的标准数据格式”就ok了。比如说现在A用户使用的是A类型的邮箱,而B用户使用的是B类型的邮箱,A类型的邮箱的数据格式是A数据格式,B类型的邮箱的数据格式是B数据格式,如果没有表示层,B用户肯定是不能处理A用户发送来的数据格式的,但是有了表示层之后,表示层可以把A用户发送来的A数据格式转换为“网络通用的标准数据格式”,而B类型的邮箱可以对“网络通用的标准数据格式”进行正确的转换,可以转换成B数据格式,这样就不会出现A邮箱和B邮箱的数据格式不通问题了。

3.接着说下会话层
在这里插入图片描述
会话层主要是确定采用何种连接方法的。比如说现在A用户想要给B用户发送五封邮件,那么是建立一次连接,一次发送五封邮件?还是建立5次连接,一次发送一封邮件。这个是会话层主要负责的。

再来看一下传输层以下的处理

4.然后是传输层
在这里插入图片描述

传输层的作用主要是建立连接和断开连接,以及当检测到目标主机上没有接收到全部的发送数据时,它会重发数据。当主机A向主机B发送邮件的时候,主机A会确保与主机B之间能够成功通信以便后面发送数据,确保通信其实就是建立连接。当主机A成功发送数据到主机B,并且主机B也全部接收了,那么这个时候传输层又会负责断开连接。
还有就是传输层可以重发数据,比如说现在主机A给主机B发送的邮件内容是“早上好”,但是主机B接收到的内容却只有“早上”,后面主机A会确认主机B是否接收到了全部的数据,检测结果是没有全部接收到,那么这个时候主机A会把“好”重新发送给主机B。

5.接着是网络层
在这里插入图片描述
在这里插入图片描述

网络层主要时进行发送数据的,传输层是负责连接和重发数据的。
网络层的作用是在网络与网络互相连接的环境中,准确的把数据从发送端主机发送到接收端主机的,这个过程中目标ip地址非常重要,它是找到目的主机的关键,目标ip地址可以理解成我们生活中的电话号码。

网络层与传输层是相互协作的关系,网络层不能确保数据一定能传达到对方的主机上,比如说本来的发送内容是“早上好”,但是发送到接收端主机之后,它只接收到了“早上”。这个时候就需要传输层起作用了,需要传输层来进行重发操作。

6和7.数据链路层和物理层
在这里插入图片描述

通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。数据链路层会把传输的数据转换成0,1二进制的形式。

然后就是物理层,物理层可以理解成之前老的座机电话的电话线。物理层可以将0,1二进制数据转换为电压和脉冲信号,进而通过物理的传输介质,比如说电话线,把电信号和脉冲信号通过物理介质传输到对端。

主机B端的处理
接收端主机B上的处理流程正好与主机A相反,它从物理层开始将接收到的数据逐层发送给上一分层来进行处理,从而使用户B最终在主机B上使用邮件客户端软件接收用户A发送过来的邮件,并可以读取相应内容为“早上好”。

相关文章:

TCP/IP--七层通信

文章目录 TCP/IP--七层通信先来看一下会话层以上的处理再来看一下传输层以下的处理 TCP/IP–七层通信 下面举例说明7层网络模型的功能。假设使用主机A的用户A要给使用主机B的用户B发送一封电子邮件。 在七层OSI模型中,如何模块化通信传输? 先来看一下七…...

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

1 数据对象的创建 CtrlH打开Model Explorer,在Base workspace中点击工具栏add,出现如下界面, 可以看到Simulink提供了多种数据类型 Matlab Variable:Simulink.Parameter:使用该数据对象表示工程应用中的标定量Simuli…...

重启某个节点、重启电脑服务器后,kubernetes无法运行,k8s无法运行

问题描述 环境:ubuntu18.04 LTS 现象:按步骤安装kubernetes后,正常启动,各个命令均可正常使用。服务器重启后,执行命令错误信息如下: sudo kubectl get nodesThe connection to the server 127.0.0.1:644…...

【ARMv8 SIMD和浮点指令编程】浮点加减乘除指令——四则运算

浮点指令有专门的加减乘除四则运算指令,比如 FADD、FSUB、FMUL、FDIV 等。 1 FADD (scalar) 浮点加法(标量)。该指令将两个源 SIMD&FP 寄存器的浮点值相加,并将结果写入目标 SIMD&FP 寄存器。 该指令可以产生浮点异常。根据 FPCR 中的设置,异常会导致在 FPSR 中…...

JDBC SQL Server Source Connector: 一览与实践

在快速发展的数据驱动业务环境中,确保数据在各个系统间高效、准确地同步至关重要。为了进一步的数据处理和分析,经常需要将这些数据同步到其他数据处理系统。Apache SeaTunnel 提供了一个强大而灵活的数据集成框架,使得从 SQL Server 到其他系…...

WebDAV之π-Disk派盘 + Keepass2Android

推荐一款密码管理器,允许人们使用复杂的组合进行登录,而不必记住所有的组合。 Keepass2Android可以支持大多数安卓互联网浏览器, Android设备上同步软件,还支持通过WebDAV添加葫芦儿派盘。 Keepass2Android 目前安全方面最大的问题之一是大多数人几乎在任何地方都使用通用…...

AspectJX - Android开发平台的AOP框架

官网 GitHub - HujiangTechnology/gradle_plugin_android_aspectjx: A Android gradle plugin that effects AspectJ on Android project and can hook methods in Kotlin, aar and jar file. 项目简介 一个基于AspectJ并在此基础上扩展出来可应用于Android开发平台的AOP框架…...

【TDK 电容 】介电质 代码 对应温度及变化率

JB 电解质是什么?没找到,只有TDK有,也只有这个温度的区别,并且已经停产在售。 对比发现是mouser网站关于电容的描述错误。下图显示正确的,再然后是错误的。 在TDK官网,这样的描述 温度特性 分类标准代码温…...

随笔--解决ubuntu虚拟环境的依赖问题

文章目录 问题一:在conda虚拟环境中报错ImportError: libcupti.so.11.7:cannot open shared object file: No such file or directory解决步骤问题二: RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling cublasSgemmStridedBatched( …...

Gin学习笔记

Gin学习笔记 Gin文档:https://pkg.go.dev/github.com/gin-gonic/gin 1、快速入门 1.1、安装Gin go get -u github.com/gin-gonic/gin1.2、main.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {// 创建路由引…...

使用 OpenTracing 和 LightStep 监控无服务器功能

无服务器功能的采用在企业组织内达到了创纪录的水平。有趣的是,鉴于越来越多的采用和兴趣,许多监控解决方案孤立了在这些环境中执行的代码的性能,或者仅提供有关执行的基本指标。为了了解应用程序的性能,我想知道存在哪些瓶颈、时…...

Sleep(0)、Sleep(1)、SwitchToThread()

当 timeout 参数为 0 时(如 Sleep(0)),操作系统会检查可运行队列中是否有高于或等于当前线程优先级的其他就绪线程。如果有,当前线程将被移除并放弃处理器时间,让其他线程执行。如果没有高优先级的线程,当前…...

前端食堂技术周刊第 103 期:10 月登陆 Web 平台的新功能、TS 5.3 RC、React 2023 状态、高并发的哲学原理、Web 资源加载优先级

美味值:🌟🌟🌟🌟🌟 口味:夏梦玫珑 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...

Python(三)数据类型转换

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …...

linq to sql性能优化技巧

linq to sql 是一个代码生成器和ORM工具,他自动为我们做了很多事情,这很容易让我们对他的性能产生怀疑 linq to sql 是一个代码生成器和ORM工具,他自动为我们做了很多事情,这很容易让我们对他的性能产生怀疑。但是也有几个测试证明显示在做好优化的情况下,linq to sql的…...

ubuntu20.04 安装cudnn

中文地址是.cn:cuDNN 历史版本 | NVIDIA 开发者 英文地址是.com:cuDNN 历史版本 | NVIDIA 开发者 1、下载cudnn:cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb 解压并安装:sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8…...

手机转接器实现原理,低成本方案讲解

USB-C PD协议里,SRC和SNK双方之间通过CC通信来协商请求确定充电功率及数据传输速率。当个设备需要充电时,它会发送消息去给适配器请求充电,此时充电器会回应设备的请求,并告知其可提供的档位功率,设备端会根据适配器端…...

RDS for MySQL 是什么

RDS for MySQL 是一种托管型数据库服务,RDS代表“关系数据库服务”(Relational Database Service)。这是云服务提供商提供的一种服务,用于简化关系数据库的设置、操作和扩展。对于MySQL版本的RDS,意味着它是专门为运行MySQL数据库管理系统的实…...

Java开发注意事项和细节说明

👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:Java开发注意事项和细节说明&…...

springboot中使用Java代码进行MongoDB集合数据备份

有时候mongo的集合中数据量太大,查询或翻页时可能会超过最大数量报错,可以给mongo的集合进行备份并保留最近一段时间的数据即可 下面是通过Java代码进行mongo的集合备份单元测试 import cn.hutool.core.date.DateUtil; import com.nuoyi.study.dao.mongo…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...