【JavaEE】从收发消息的角度理解 TCP/IP 五层网络模型的封装与分用

news2024/11/18 3:31:15

文章目录

  • 1 为什么需要分层?
  • 2 TCP/IP 五层网络模型
  • 3 数据的封装(发送消息为例)
  • 4 数据的分用(接收消息为例)
  • 5 实际网络环境上的封装与分用
  • 写在最后


1 为什么需要分层?

你问我为啥需要分层?那必然是有好处的啊!

我们来回顾一下面向接口编程有什么特点~

  • 对于使用方来说,不必关心提供方是如何实现的, 只需要使用接口即可;
  • 对于提供方来说,只需要利用封装的特性,隐藏内部实现细节,对外开发接口。

面向接口编程

而对于协议的分层也是类似,后续比较容易针对某一层协议进行替换~

  • 分层之后,层次之间耦合度降低,上层不必了解下层的细节,同理,下层也不需要了解上层的细节~
  • 方便对某一层的协议进行替换~
  • 分层之后,就可以让程序员在同一时刻只关注某一层上的子问题~

2 TCP/IP 五层网络模型

TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  • 应用层 : 负责应用程序间的沟通,关注传输过来的数据要干啥用! 我们所聊的网络编程主要就是应用层。 对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。
  • 传输层不考虑中间路径,只考虑起点和终点~ 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 网络层 : 主要负责两个遥远的节点之间的路径规划~(地址管理和路由选择) 两个节点之间可能有多种路径可以到达,其作用就是选择一条最适合的。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  • 数据链路层主要关注两个相邻节点的传输~ 负责设备之间的数据帧的传送和识别。网络上相邻的节点,就是通过网线/光纤/无线直接连接的设备。
  • 物理层 :网络通信中的基础设施,网线、光纤、网络接口等。

分层模型

那么在协议分层的背景下,数据是如何通过网络传输的呢?

  • 对于发送方: 把数据从上层到下层,依次交给对应层次的协议,进行封装~
  • 对于接收方: 把数据从下层到上层,依次交给对应层次的协议,进行解析~

即就是所谓的 封装与分用~ 听起来很高大上?别急,下面我们具体来盘一盘!
表情包1


3 数据的封装(发送消息为例)

假如 小黄使用微信发送一条消息给七七:“今天你写代码了吗?”,在网络模型各层会发生什么呢?提炼信息如下:

  • 发送方:小黄,接收方:七七
  • 消息内容:今天你写代码了吗?

注意:以下内容以理解为主,数据内容并不完全准确,比如数据包的结构,实际更复杂,这里作了简化处理~

首先来到 应用层~
微信 App 拿到上述提炼的数据,封装成如下的应用层数据包:

应用层数据包

补充: 数据包的封装本质上是字符串拼接,为了区分不同的字段可能还会引入分隔符、长度信息等。即实际的数据包可能更复杂,例如以分号作为分隔符,上述数据包可能为:5477;7745;2023-04-25;今天你写代码了吗?

应用层 -> 传输层
拿到上述数据,应用层要调用传输层提供的 api 来处理这些数据!传输层的协议中最典型的是 TCP 与 UDP,这里以 UDP 为例,针对上述数据包进行封装~
传输层数据包

补充: 一个典型的数据报就是由 数据报头 + 数据载荷 组成的~ 可以将数据载荷理解为包装好的快递~ 该快递是要有寄件人和收件人相应的信息的。而 数据报头,就相当于 快递信息,加上数据报头,就相当于在快递箱子上进行了一个 “贴标签” 的操作~

传输层 -> 网络层
将上述传输层已经有的 UDP 数据报交给网络层的协议,最典型的就是 IP 协议~ 即拿到上述数据报后,需要进行进一步的封装:加上 IP 协议报头~
网络层数据报

补充: IP 是找到主机,而端口号是确定主机上的 进程/程序 ~

网络层 -> 数据链路层
同样对上述数据报,再次进行封装,最典型的协议就是 以太网 ~
以太网数据帧

补充: 以太网是最常见的数据链路层的网络,比如我们平时使用的网线上网,就是在用以太网~

物理层
物理层拿到上述的以太网数据帧,则会将这样的 0101 二进制数据 转化成 光信号/电信号/电磁波信号 进行传输~

需要注意的是,以上的过程,操作系统已经帮我们封装好了~ 这就是所谓的 TCP/IP 五层网络模型的封装~
表情包2


4 数据的分用(接收消息为例)

数据的发送过程我们了解了,那么又该如何接收呢?
其实很简单,如果说发送是封装的过程,那么接收就与之相反,则是分用的过程~

  • 发送方,从上层到下层,依次封装,新增报头~
  • 接收方,从下层到上层,依次分用,去掉报头~

在此为了方便理解,我们 不考虑发送方和接收方的中间节点的转发过程~

首先,来到 物理层~
物理层,网卡,接收到高低电平信号,会对信号进行解析,还原成 0101的二进制序列~

物理层 -> 数据链路层
上述拿到的 0101二进制序列,可以当作一个 以太网数据帧 就使用 以太网协议 进行处理:去掉帧头和帧尾,取出中间的数据载荷,上交给网络层~
以太网数据帧

补充: 以太网数据帧头有一个消息类型,根据该消息类型可以知道网络层是 IP 协议~

数据链路层 -> 网络层
接收到数据链路层的数据后由网络层的 IP 协议进行进行解析数据报。最主要的就是去掉 IP 报头,取出中间的载荷,上交给传输层~
IP 数据报

补充: IP数据报报头也会有一个字段标识传输层使用的是何种传输协议~

网络层 -> 传输层

由 UDP协议 进行解析数据报,取出数据载荷,上交给应用层~
UDP数据报

传输层 -> 应用层
由对应的应用程序,解析拿到的应用层数据报~ 这里以微信为例,则取出如下的字段,并在程序的界面中显示出来~
应用层数据报

以上便是 TCP/IP 五层网络模型的分用 的流程了~


5 实际网络环境上的封装与分用

在真实的网络环境中,并不会这么理想,中间是需要经过许多中间节点进行转发的~ 概述图如下:
封装与分用
几点说明:

  • IP 协议是一边传输一边规划路径~
  • 重新封装过程中,源 mac 地址 与 目的 mac 地址 也会发生变化~
  • 通常,在该过程中,交换机“二层转发”,路由器称为“三层转发”~

写在最后

 以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!
本文被 JavaEE编程之路 收录点击订阅专栏 , 持续更新中。
 创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

在这里插入图片描述

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

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

相关文章

python+vue 健康体检预约管理系统

该专门体检预约管理系统包括会员和管理员。其主要功能包括个人中心、会员管理、体检服务管理、类型管理、订单信息管理、取消订单管理、 体检报告管理、通知信息管理、交流论坛、系统管理等功能。 目 录 一、绪论 1 1.1研发背景和意义 2 1.2 国内研究动态 3 1.3论文主…

US-DAT2-F、US-DAT2-A比例放大器接线

多路控制阀比例放大器接线端子定义: 序号 端口 名称 1 CMD1 1阀指令 2 CMD1- 1阀指令- 5 RS485_A - 6 RS485_B - 7 VREF_10V 参考电压10V 8 VREF_0V 参考电压0V 9 VAL1_A 1阀电磁铁A 10 VAL1_AB- 1阀电磁铁AB- 11 VAL1_B 1阀电磁铁B 12 PWR 电源 13 PWR…

Unreal5 实现角色动画重定向

解决问题: 有时候有的角色动画想用到另外的角色身上,不能直接用怎么办? 解决方案: 使用重定向 实现方式: 在资产里面创建IK绑定 在列表中选中需要绑定的骨骼网格体 需要创建两个,我这里是女人需要使用男…

【社区图书馆】PyTorch高级机器学习实战

PyTorch高级机器学习实战 作者:王宇龙,清华大学计算机博士,大型互联网公司算法专家,在国际学术会议及期刊发表过多篇论曾出版书籍《PyTorch深度学习入门与实战》,知乎"机器学习”话题优秀回答者。 亮点&#xf…

【Git 入门教程】第三节、Git的分支和合并

Git的分支和合并是Git中最重要的概念之一。使用Git可以轻松地创建、切换和合并分支,这为团队协作开发提供了极大的便利。在本文中,我们将介绍Git分支的基本概念和操作方式。 一、分支 在Git中,分支是指一个代码库的不同版本。分支允许开发者…

设计模式——设计模式简介、分类及面向对象设计原则

文章目录 前言一、什么是设计模式1、从面向对象谈起2、深入理解面向对象3、软件设计固有的复杂性4、软件设计复杂的根本原因——“变化”5、如何解决复杂性?6、软件设计的目标 二、常用设计模式及分类1、常用的七种设计模式2、设计模式分类 三、面向对象设计原则1、…

华为C++研发工程师编程题 ACM模式输入输出|| 1.汽水瓶,2.明明的随机数,3.进制转换

C ACM输入输出 1.汽水瓶题目描述思路代码如下 2.明明的随机数题目描述思路:代码如下: 3.进制转换题目描述思路:代码如下 题目链接: 华为研发工程师编程题 1.汽水瓶 题目描述 某商店规定:三个空汽水瓶可以换一瓶汽水…

手动泵DHP2-100、DHP-100

特性 变化的压力范围。 坚硬精密螺芯和阀套筒。 软调节。 铝制手柄和核心盘。 可以固化调节。 工业化紧凑尺寸。 可调顺序阀 DPS2-100 系列10 先导可调顺序阀 DPSK-100 系列10 先导可调顺序阀 DPSK2-100 系列10 梭阀 DSH-100 系列10 手动双向换向阀 DMP-080-2NCP 系…

vulnhub之lazysyadmin

vulnhub之lazysyadmin 一、信息收集 1.主机发现 sudo arp-scan -l发现了四台主机 192.168.158.2 00:50:56:e3:b7:e4 VMware, Inc. 192.168.158.1 00:50:56:c0:00:08 VMware, Inc. 192.168.158.248 00:0c:29:82:f1:15 VMware, Inc. 192.168.158.254 0…

PFSK164 3BSE021180R1自动调节励磁电流的方法

​ PFSK164 3BSE021180R1自动调节励磁电流的方法 在改变发电机的励磁电流中,一般不直接在其转子回路中进行,因为该回路中电流很大,不便于进行直接调节,通常采用的方法是改变励磁机的励磁电流,以达到调节发电机转子电流…

聚观早报|特斯拉资本支出预期至70亿-90亿美元;迪士尼再裁4000人

今日要闻:特斯拉资本支出预期至70亿-90亿美元;网易起诉暴雪要求退还3亿欠款;迪士尼再裁4000人;尼康Z8旗舰全画幅相机现身官网;“五一”民宿涨价毁约多平台发声 特斯拉资本支出预期至70亿-90亿美元 4 月 25 日消息&…

David Silver Reinforcement Learning -- Markov process

1 Introduction 这个章节介绍关键的理论概念。 马尔科夫过程的作用: 1)马尔科夫过程描述强化学习环境的方法,环境是完全能观测的; 2)几乎所有的RL问题可以转换成MDP的形式; 2 Markov Processes 2.1 Mark…

【Python】实战:生成无关联单选问卷 csv《日常生活活动评估表》

目录 一、适用场景 二、业务需求 三、Python 文件 (1)创建文件 (2)代码示例 四、csv 文件 一、适用场景 实战场景: 问卷全部为单选题问卷问题全部为必填问题之间无关联关系每个问题的答案分数不同根据问卷全部…

【具体到每一步】uniapp打包app生成apk包

先配置 云打包 关于证书 备注 弹出来这么个东西是加入你这个应用要发布到商店,需要签署的一些东西,先不用管了 然后等等 这个时间有点长 [HBuilder] 02:28:29.892 打包成功后会自动返回下载链接。 [HBuilder] 02:28:29.892 打包过程查询请点菜单发行-查…

HTML5 <small> 标签\、HTML5 <style> 标签

HTML5 <small> 标签 \ 定义和用法 <small> 标签制作更小字号的文本。在HTML5中不再使用<small>标签&#xff0c;请参考“HTML <small> 标签”部分。 HTML 4.01 与 HTML 5 之间的差异 在 HTML 5 中不支持 <small> 标签。 HTML5 <style>…

边缘计算与AI布署应用电力物联网解决方案-RK3588开发平台

电力行业拥有规模庞大的各类设备&#xff0c;如电表、各类保护、采集、控制设备。面对分布式发电、储能、用户微网等一系列综合问题&#xff0c;边缘计算与AI布署可满足“端侧本地化”高效运用的需求&#xff0c;协助提升最后一公里运行效率。 瑞芯微RK3588J、内置独立NPU&…

那些关于DIP器件不得不说的坑

了解什么是DIP DIP就是插件&#xff0c;采用这种封装方式的芯片有两排引脚&#xff0c;可以直接焊在有DIP结构的芯片插座上或焊在有相同焊孔数的焊位中。其特点是可以很方便地实现PCB板的穿孔焊接&#xff0c;和主板有很好的兼容性&#xff0c;但是由于其封装面积和厚度都比较…

压力应变桥信号处理系列隔离放大器 差分输入转换直流变送模块

概述&#xff1a; DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源&#xff0c;向输…

2023年制造业产品经理NPDP认证报名入口及指南

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

我用什么写Python?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 通常来说&#xff0c;每个程序员都有自己趁手的兵器&#xff1a;代码编辑器。你要是让他换个开发环境&#xff0c;恐怕开发效率至少下降三成…