【JavaEE】协议-信息是如何在一个机器传到另一个机器的(理论)

简介: JavaEE & 协议 & 信息是如何在一个机器传到另一个机器的

JavaEE & 协议 & 信息是如何在一个机器传到另一个机器的

1. 局域网

以机房为例,多个机器之间可以进行联机,这就相当于一个局域网


b9d34ca1138b46ac8e894836c16b5cfe.png


通过网线直接连接实现的联机也是局域网


通过交换机也能进行联机,这也是局域网


1aa811a8475647c38f6cdd526ad46d3a.png

电脑越多,用网线直连就越复杂~

区别于集线器:集线器是将一条网线转变成多条网线,多条网线转变成一条网线,这是交换机原始的版本,有很大弊端,如信息同时汇集时会冲突!

0b60786826a84153851e124a834722ee.png


这里的交换机也可以换成路由器:


194dc77aed784178a31b06429bc45c68.png

不难看出,局域网顾名思义就是局部的区域可以进行联机。


一个学校的机房的机器必然无法联机到另一个学校的机房的机器

2. 广域网

现在的传奇被我们嘲笑,但是初期的传奇却席卷全国。那是因为,这个游戏在那个年代实现里不同地区的玩家进行多人联机!那个时候的网吧火爆了。


3_115-9-368-572_2003061914387.jpg

而实现的方式就是:广域网的网络组建 — 规模大


即通过一些交换机路由器搭建一个网络环境,这需要一些拥有强大的专业知识和技能的人:网管


不是网吧管理员,而是网络管理员!

如果你学习开发,一般也会接触到,可能也需要学习如何组网~


之后又进入了移动互联网阶段,无线联网~


手机…


df6882b5bad043df9cd5816a344ad73c.png

3. IP与端口号(初识)

IP地址:标识一台主机的位置,即主机在互联网上的具体位置


本质上是一个4字节的32位整数

往往协程“点分十进制”的形式

如:192.168.137.1

四个部分,每个部分一个字节

命令行输入ipconfig:

bac4456716b846e08ae602206924d997.png



端口号:标识主机上的哪个程序 ,区别一个主机上的应用程序


4. 协议

协议即约定

发送方发送的信息,有特定的格式,而接收方应如何解读这些信息呢,就是通过协议

发送方发出的信息不仅仅要包含“核心数据”,还要包含IP,端口号…等等很多信息,那么这些信息的组织格式是必要存在的!

网络的传输本质上是通过 网线/光纤/无线(电磁波) 以电信号/光信号来进行传输的


光信号也是要转化为电信号

不同频率来代表1与0

电信号就是高低电平(高低电压)表示的010101…

好的,现在我们知道怎么传输这些010101…了,那么我们要怎么处理这些信息呢?

5ba4968f90d3461797993a980e482cb1.png


我们需要约定好,“你传过来的信息是什么什么格式,我就以什么什么格式来理解”


这就是协议

4.1 协议分类分层

一个大的协议非常复杂,我们可以拆分为多个协议

那么就有一些协议功能类似,一些协议功能不同


分类

而对于不同功能的协议,就安排在不同信息处理的不同阶段


分层

而分层,也需要约定层级与层级之间的调用关系


要求不能跨层级调用

也就是说,一个小协议其实就只是大协议“这条流水线”的一个小工程罢了

而流水线的工程之间是不能越级的

上层调用下层

下层给上层提供支持

调用的时候,格式就会发生改变


信息传到下层,加工成下层协议格式

信息传到上层,解析下层协议格式为上层协议格式

例如来自历史课本的一张图:


一般也不会跨级管理,这样管理成本大


1954db7f03ca6eeb1967f69f5bb2f52d.jpg

4.2 协议分层的好处


1f9bbb7c638147ee9cd9937991ece662.png

分层后,上层协议不需要了解下层协议的细节,下层协议不需要了解上层协议的细节

换协议后,只需要搞定层级间的信息加工/解析的细节就好

4.3 真实的网络协议分层,TCP/IP五层网络模型

重点:


应用层

传输层

网络层

数据链路层

物理层

(四层是因为没考虑物理层,软件方面看)


现在了解大概就好,后续深度学习!


4.3.1 应用层

关注数据要怎么用:


礼物拿来自己用还是送人

书本拿来看还是拿来盖泡面

cf0a7978cb3a4152951c1f82d7d2641e.png


4.3.2 传输层

不考虑中间的路径规划,只关注起点是什么,终点是什么


相当于买东西,发货地址与收货地址


我和卖家只关心起点终点,中间怎么传输就交给快递公司就好


37530552cfa5454bb1db532248fa8fba.png


4.3.3 网络层

主要负责两个遥远节点之间的路径规划


例如快递从汕头到北京有很多路线可以走

汕头 -> 深圳 -> 北京

汕头-> 福建 -> 杭州 -> 北京

汕头-> 深圳 -> 杭州 -> 无锡 -> 北京

在众多路径中找一个合适的路径,一般走几步后要重新规划一下


7ba61472044946dca47a740d5bfd8642.png


4.3.4 数据链路层

主要关注的是两个相邻节之间的传输


例如快递在两个相邻地址之间是怎么传输的

飞机,火车,卡车,电瓶…

网络上的相邻节点,就是通过网线/光纤/无线直接连接的设备


8027ee14312a4e9381379bc3b4b38f71.png

4.3.5 物理层

网络通信的基础设施,网线光纤网络接口


网络物件咋组织的约定

网络物件类别的约定

网络上的高速公路:数据的传输硬件上的规定



bcf570d0d69841ec92eac5f9ead6ad24.png

4.3.6 总结


e56e5e680b1f4a3fa1046b58565f0635.png

跟程序员密切相关的是应用层和传输层!

网络编程重点!

4.4 网络分层后,数据的变化 — 封装 & 分用

发送方发送数据,数据从上到下,依次交给对应的协议,进行封装加工

接收方接受数据,数据从下到上,依次交给对应的协议,进行分用解析

在传输层和应用层之间,调用一些协议的API即可


调用下层协议(传输层)


那么就可以将上层协议格式(应用层协议格式)转化为传输层协议的格式


或者将传输层协议格式转化为上层协议格式(应用层协议格式)


4.4.1 图解

94ef0c76ba2a4bdaa1361fc3434d6548.png


4.4.2 例子

简单粗糙的例子,实际上会更复杂细节


小马要通过QQ给远方的老马发一条信息,这条信息在图中发生了什么事情呢?

应用层到传输层:

小马发送给老马“吃饭了没?”,并且打包成应用层数据包


字符串拼接

c9ce14f7041b45dcb39333df1facb0dd.png

应用层调用传输层(API):封装成传输层数据报


与UDP为例:(报头 + 载荷的形式)


字符串拼接

4252d7a22dcf438f99f366f7391d0871.png


为了区分不同字段,引入分隔符~

当然,现实中会更加复杂,如json,xml…

传输层到网络层:

以IP协议为例:


不是代码层面的了,后续会细节讲解!

544d11c24a504cdea3be8b9338f3274c.png


网络层到数据链路层:

以 “以太网” 为例:


要把网络层数据包封装成以太网数据帧


55a777d288954a1eb7df64cbb79016fa.png

mac地址:也叫做物理地址


主机在网络上的位置

mac ==> 描述数据链路层两个相邻节点

IP ==> 描述网络层的路径规划

传输的过程中,mac地址随之变化为对应的相邻节点~


理论上,每个网卡设备都会有一个自己唯一的mac地址,而IP地址不是


数据链路层到物理层

物理层将二进制数据转换为电信号/光信号…进行传输~


8828d811b4384d77b64363463e41b5a9.png


物理层到物理层

物理层之间就通过同一协议直接沟通的,直接解析

物理层到数据链路层

数据链路层调用物理层,将信号转换为二进制序列(以太网数据帧)

ca81294c12ff40c1b6b5c6233f896065.png



数据链路层到网络层

网络层调用数据链路层,将以太网数据帧转换为网络层数据包


去掉帧头帧尾

ac800d396e5d41f49ad0b420314a2653.png

网络层到传输层

传输层调用网络层,将以网络层数据包转换为传输层数据包


去掉报头


24c8012647ed4f98976bfcfef95e9451.png

传输层到应用层

应用层调用传输层API,将传输层数据包转换为应用层数据包


去掉报头

160264f2b6554b058e00c1dd166ed99b.png


应用层数据处理

通过数据包格式(应用层协议内部使用)提取信息

应用层协议没有API,是程序员自己规定的数据格式

当然,一些公司内部使用的API也是会有的

994c4cb3be324ca7be2aee312bb7b71a.png


以上去掉报头过程当然是会采取一些“动作”的


之后是什么协议,对应报头是有标识的

宏观看:


c35cb17f0ba041e4bca22b078620501d.png


这也是交换机和路由器的特点:


交换机:二层转发

路由器:三层转发

有一些特殊交换机可以三层转发,特殊路由器可以二层转发


甚至有更深!


对于群聊,也是类似,我将信息在群聊里


信息(我的qq号,群成员的qq号)发给qq服务器

qq服务器通过这些信息查到对应的ip…,挨个发送给各个成员

(区别于私聊,它经过服务器后转发向多个对象罢了)


相关文章
|
6月前
|
存储 监控 Cloud Native
剖析Linux网络包接收过程:掌握数据如何被捕获和分发的全过程(上)
剖析Linux网络包接收过程:掌握数据如何被捕获和分发的全过程
|
10月前
|
网络协议 网络架构
计算机网络模型、客户端与服务端请求与解析过程
计算机网络模型、客户端与服务端请求与解析过程
58 0
|
6月前
|
存储 网络协议 Linux
剖析Linux网络包接收过程:掌握数据如何被捕获和分发的全过程(下)
剖析Linux网络包接收过程:掌握数据如何被捕获和分发的全过程
|
9月前
|
存储 监控 Linux
借助gopsutil库,获取机器相关信息
借助gopsutil库,获取机器相关信息
66 0
|
10月前
|
缓存 网络协议
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
139 0
|
监控 算法
Booth算法在局域网监控软件中的运用和具体例子
通过使用Booth算法,局域网监控软件可以更加高效地完成IP地址匹配、范围查询和信息更新等任务,提高软件的性能和效率,从而更好地满足用户的监控和管理需求
258 0
|
安全 Shell API
【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(上)
【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(上)
194 0
【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(上)
|
网络协议
【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(下)
【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(下)
132 0
【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(下)
|
监控 网络虚拟化 网络协议