Java EE(12)——初始网络

前言

随着软硬件的快速发展,计算机的通信模式已经由原来的独立模式(计算机之间相互独立)------>局域网通信(同一局域网下的计算机可以通信)------>广域网通信(将多个局域网连接成范围更大的网络结构),广域网很大程度上解决了空间距离带来的通信不便问题,那么数据是如何实现跨主机通信的呢?

这便是本文所要讨论的内容

IP地址

IP地址用于表示网络设备(如路由器)的网络地址。换言之,IP用于定位主机的网络地址 。但仅靠IP地址只能定位到数据传输到某个主机,具体由该主机的哪个应用程序接收,IP地址就无能为力了,这就需要端口号来进一步确定由哪个程序来接收数据

例如:这就像网上购物一样,收货你得填XXX省XXX市XXX小区,当快递小哥送到小区大门口的时候,如果收货地址上没填写收货人的电话,那么该快递是无法送到收货人手上的

端口号(port)

端口号可以标识主机中接收和发送数据的进程。换言之,端口号用于定位主机中的进程

注:一个端口号只能绑定一个进程,但一个进程可以绑定多个端口号

协议

通过IP地址和端口号,收发数据的位置关系算是确定了,但如果通信双方事先没有规定通信的格式,可能导致数据无法被正常识别。

例如:张三和李四相约在天桥见面,并且相互通知了各自的姓名,但真到天桥的时候说不定有很多人,可能张三和李四无法认出彼此。如果张三对李四说:我身高XXX,肤色XX,着装XX;李四也对张三说:我身高XXX,肤色XX,着装XX。这样事先规定之后两人就能正常会面了。

网络通信为了解决上述问题,就引出了"协议 "。协议又叫做网络协议,是网络数据传输经过的所有设备都必须遵守的一组约定和规则,协议最终体现在网络上传输的数据包的格式。

协议分层

网络通信是一件十分复杂的事情,需要的场景越复杂,要求就越高。那么协议要规范的内容就越多,这就会大大增加协议的学习成本,维护成本和使用成本,因此采取把一个大的协议拆分成多个小的协议的做法

协议分层的好处

复制代码
    接口标准化:各层之间的接口是标准化的,这可以让不同厂商之间的设备无缝衔接
复制代码
    简化设计:将复杂的协议拆分成多个相对简单的协议有利于用户学习和使用协议
复制代码
    增强灵活性和独立性:每一层可以针对特定的功能进行优化,并且不影响其他层协议

TCP/IP五层模型

TCP/IP是一组协议的代名词,它采用了五层的层级结构,上层协议使用下层协议提供的接口来完成相应的任务

应用层 :定义了应用程序之间如何进行通信。它处理用户请求并将数据交给传输层

传输层:负责端到端 的数据传输服务,确保数据能够从 主机传输到目的 主机,如UDP/TCP

网络层:复杂地址管理和路由的选择

数据链路层:负责设备之间数据帧的传输和识别

物理层:负责光/电信号的传输

封装和分用

概念

封装 :是指在数据传输过程中,每一层协议将数据加上自己的头部信息(有时还包括尾部信息),然后将数据传递给下一层协议的过程
分用 :是封装的逆向过程,指的是在接收端,数据经过物理层、数据链路层、网络层和传输层,每一层协议根据头部信息将数据(载荷)传递给上一层协议,直到应用层接收到原始数据

流程演示

下面对封装和分用这个流程进行演示:

预设场景:张三给李四在2025年3月21日(只是演示,不精确到秒)这一天给李四发消息,消息内容是"Hello World"

接下来我们以发送方接收方的视角来观察

发送方

1.应用层

假设应用层协议的格式为:接收方QQ号+发送时间+发送方QQ号+内容

应用层调用系统API,将该数据包提交给传输层
2.传输层

传输层把来自应用层的数据包构造成传输层数据报 ,传输层常用的协议有两个,分别是UDP和TCP 。这里以UDP协议为例,在应用层数据包前面添加UDP报头,然后提交给网络层

UDP报头主要包含源端口和目的端口
3.网络层

网络层基于IP协议 在UDP数据报前面添加IP报头,然后提交给数据链路层

IP报头主要包含源IP和目的IP
4.数据链路层

数据链路层基于以太网协议 在IP数据报的首/尾部添加以太网帧头/尾,打包成以太网数据帧 然后提交给物理层

5.物理层

物理层将以太网数据帧中的二进制数据转换成光/电信号,然后数据就被发生出去了

以上就是封装的过程

接收方

1.物理层

通过网卡接受到光/电信号,在物理层将光/电信号转换为二进制数据,该二进制数据的格式是以太网数据帧 ,然后提交给数据链路层进行解析

2.数据链路层

数据链路层把以太网数据帧的帧头和帧尾拆除,将剩下的部分提交给网络层

3.网络层

网络层解析出IP报头,将IP数据报的载荷部分提交给传输层

4.传输层

传输层解析出UDP报头,将UDP载荷部分提交给应用层

5.应用层

应用层将数据包进行解析,然后将内容显示到屏幕

以上就是分用的过程

相关推荐
在努力的韩小豪1 分钟前
@Autowired 和 @Resource 注解的区别
java·spring boot·spring·java-ee
壹只菜鸟44 分钟前
K8s的网络
网络·kubernetes
漫谈网络1 小时前
Mininet--moduledeps.py源码解析
网络·network·sdn·mininet
yunbao00_2 小时前
网络基础(二)
运维·服务器·网络
风筝有风+2 小时前
学习应用层
服务器·网络·学习
榆榆欸2 小时前
1.基于TCP的简单套接字服务器实现
linux·网络·tcp/ip
Honeysea_702 小时前
网络编程的概念&作用
网络·网络协议·计算机网络·网络安全·架构
Fanmeang2 小时前
ISIS-3 LSDB链路状态数据库同步
运维·网络·数据库·华为·智能路由器·ensp·isis
碳烤小肥杨..2 小时前
单臂路由实验
服务器·网络·网络协议·网络安全·智能路由器
Angelyb2 小时前
WebSocket
网络·websocket·网络协议