09.JAVAEE之网络初识

1.网络

单机时代 =>局域网时代 =>广域网时代 =>移动互联网时代

1.1 局域网LAN

局域网,即 Local Area Network,简称LAN。

Local 即标识了局域网是本地,局部组建的一种私有网络。

局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

把几个电脑通过路由器(4个lan,1个wan)连接起来。

1.2 广域网WAN

广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

2.网络通信基础 

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。 

2.1 IP地址

描述了一个设备,在网络上的地址.

计算机中: 使用一个 32 位,4 字节数字, 表示地址
一般来说, 会把IP 地址给表示成 4 个 0-255 之间的十进制数字, 并且使用 3 个点进行分隔.点分十进制。

特殊IP

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

2.2 端口号

区分一个主机上不同的应用程序的,
端口号也是一个整数.(2 个字节(2个字节65535),相对比较小的数字)

不同的程序,就可以关联/绑定到不同的端口号

要求同一个主机上的应用程序,不能关联到同一个端口号

(一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口)

0 一般不使用

1-1023这个范围的端口号,系统留作特殊用途(知名端口号),咱们写的程序不应该占用

在实际的通信过程中,IP 和 端口 往往是"一对”。 

2.3 认识协议

学习网络的时候,很多都在学习 协议(协议就是一种约定,约定了通信双方按照啥样的方式来传递数据~~)

网络上, 本质是通过 光/电 信号来传输数据(比如,低电平表示 1,高电平表示 0;高频光信号表示1,低频光信号表示 0)

2.3.1 五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

1. 源IP:标识源主机

2. 源端口号:标识源主机中该次通信发送数据的进程

3. 目的IP:标识目的主机

4. 目的端口号:标识目的主机中该次通信接收数据的进程

5. 协议号:标识发送进程和接收进程双方约定的数据格式

一次通信过程中必不可少的信息~~

2.3.2 协议分层

平时写代码, 如果一个代码越写越多,越写越复杂,往往需要把代码,给拆分成多个部分

拆分之后,能够更好理解是基于 人脑 基本的认知规律.

网络通信的场景,可能会比较复杂,
有很多的问题需要通过协议来进行解决

如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大. 非常复杂就不利于人们去学习和理解.
相比之下,也可以把大的协议,拆分成多个小的协议,让每个小的协议只专注于做一小块事情~~
使每个小的协议,都不会太复杂.(化繁为简)

由于网络通信实在太复杂,拆分就拆出来太多的小的协议.这么多小的协议也就不好管理了.就需要对协议进行分层了(按照协议的定位/作用分类,并且约定了不同层次之间的"调用关系上层协议,调用下层协议""下层协议给上层协议提供支持"

好处:

1.协议分层之后,上层和下层 彼此之间就进行了封装,

使用上层协议,不必过多关注下层;

使用下层协议,也不必过多关注上层->降低使用者的成本

2.每一层协议都可以根据需要灵活替换

协议分层之后,好处多多.因此现在网络世界都是这种分层的结构

两种分层

  • OSI 七层网络模型(仅仅是出现在教科书中。)
  • TCP/IP 五层网络模型(是 OSI 七层模型的简化版本)

2.4 TCP/IP五层(或四层【说四层是不算物理层】)模型 

1)物理层: 描述的是网络通信的硬件设备好比 基础设施.公路,铁路...
比如使用的网线,光纤都应该是啥规格~

2)数据链路层:两个相邻节点之间的数据传输情况

3)网络层: 进行路径规划

4)传输层: 关注起点和终点

5)应用程序:如何使用这个数据(程序员最需要关注的一点)

上述的这套规则,其实是针对"传统的”"经典的"交换机和路由器来描述的。
实际上,现在的路由器和交换机功能都越来越强大了.(甚至说一些高端的交换机,也有路由功能另一方面,路由器交换机可能还会支持一些更复杂的操作,甚至可能会工作在传输层或者应用层

3.封装和分用 

描述了网络通信过程中,基本的数据传输流程

EG:
考虑 A 通过 QQ 把一个 hello 传递给 B 

1.应用层

就可以把应用层数据报,通过 操作系统的 api,把数据交给 传输层

2.传输层

就要对刚才的应用层数据,再进行打包,变成传输层的数据报~~

传输层数据报搞好了之后,这个数据又会进一步的交给网络层

3.网络层

网络层的数据打包好了之后,继续把数据交给"数据链路层"再来进一步打包

4.数据链路层

5.物理层

把上述数据,转换成 2 进制的 01序列.
通过光信号/电信号进行传输

数据发送出去之后,就会经过一系列的交换机和路由器进行转发,A 和 B一般来说不是直接网线连接的,中间还要经过很多的交换机/路由器设备进行转发
当数据到达 B 这边之后,B 就要针对上述数据进行"分用"(针对上述数据报进行层层的解析)

接收方

初心是为了传输 hello但是为了达成目的,就需要做很多额外的工作

从上层协议到下层协议,层层给数据报添加报头这个过程称为"封装"

数据报在网络中间还会经历一定的转发过程.
如果经过路由器: 就会封装分用到网络层
路由器解析到网络层, 拿到 IP 地址,决定进一步如何传输.下一步传输的时候,又会重新经过网络层,数据链路层和物理层的封装
如果经过交换机: 就会封装分用到数据链路层

理解网络原理就是为了进行网络编程。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有哪些人工智能/数据分析领域可以考取的证书?

一、TensorFlow谷歌开发者认证 TensorFlow面向学生、开发者、数据科学家等人群,帮助他们展示自己在用 TensorFlow 构建、训练模型的过程中所学到的实用机器学习技能。 添加图片注释,不超过 140 字(可选) TensorFlow 的产品总监 …

抖音智能运营系统源码

这是一个一站式服务的抖音智能运营系统,旨在提升内容创作者和营销人员的工作效率。它是一个综合性的在线服务平台,专为抖音内容创作者和营销人员设计。系统基于高性能、可扩展性强的ThinkPHP框架,整合了视频处理、数据分析、文案生成与配音等…

Redis网络部分相关的结构体2 和 绑定回调函数细节

目录 1. struct connection ConnectionType属性 创建connection 2. struct client 3. 绑定客户端回调函数的流程 3.1. 读事件回调函数的设置 3.2. 写事件回调函数的设置 3.3. connSocketEventHandler函数 3.4. Redis5版本的设置回调函数 3.5. 个人的一些想法&#xf…

2024贵州康博会|特色健康食品展|医药展|医疗器械展会

2024 中国(贵州)大健康产业博览会2024 特色食品(农产品、水、饮料)暨第22届医药及医疗器械、设备展览会邀请函 时间:2024 年 9 月 26 日 -28 日(共三天) 地点:贵阳国际会议展览中心 (观山湖区) 主办单位: 贵州省天然饮用水行业协会 贵州省大健康产业…

diskMirror docker 使用容器部署 diskMirror 服务器!!!

Welcome to diskMirror-docker 获取项目 这个项目是 diskMirror-spring-boot 镜像版本的项目,您可以使用下面的命令将此项目编译为一个镜像! # 进入到您下载的源码包目录 cd diskMirror-docker# 点击脚本来进行版本的设置以及对应版本的下载 设置 和 编…

FastGPT编译前端界面,并将前端界面映射到Docker容器中

建议在linux系统下编译 1、克隆代码 git clone https://github.com/labring/FastGPT 2、进入FastGPT目录,执行 npm install 3、进入projects/app目录,执行 npm run dev 此时会自动下载依赖包,这里如果执行npm install的话,…

IDEA2024最新版的激活与安装-保姆级教学

目录 一、idea 介绍 二、官网下载 2.1 进入官网,下载zip绿色版即可 2.2 输入网址下载jetbra.zip 2.3 执行idea/soft/scripts/install-allusers.vbs文件(根据自己安装路径改变) 2.4 启动idea/soft/bin/idea64.exe 将事先复制好的码复制进去…

MATLAB线性函数拟合并预测

线性函数拟合,由线性函数很好描述的一个数集,也就是说如果我们所考虑的数据是以y(x)的形式给出,并且其中f(x)满足: 要求得 m 和b的值,我们可以使用一个称为 polyii(x,y,n)的 MATLAB 函数,其中n是我们要 MATLAB 求出的多项式的次数…

Ribbon负载均衡的两种方案

1.服务端负载均衡 在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(比如 Nginx,openResty) 例如Nginx,通过Nginx进行负载均衡,先发送…

李沐66_使用注意力机制的seq2seq——自学笔记

加入注意力 1.编码器对每次词的输出作为key和value 2.解码器RNN对上一个词的输出是query 3.注意力的输出和下一个词的词嵌入合并进入RNN 一个带有Bahdanau注意力的循环神经网络编码器-解码器模型 总结 1.seq2seq通过隐状态在编码器和解码器中传递信息 2.注意力机制可以根…

.NET 个人博客-添加RSS订阅功能

个人博客-添加RSS订阅功能 前言 个人博客系列已经完成了 留言板文章归档推荐文章优化推荐文章排序 博客地址 然后博客开源的原作者也是百忙之中添加了一个名为RSS订阅的功能,那么我就来简述一下这个功能是干嘛的,然后照葫芦画瓢实现一下。 RSS简述…

php代码比对工具优化版

下载地址:php代码比对工具优化版.zip 一款强大且专业的文件对比工具(php代码比对),用户可以直接在线进行两个或多个文件的差异对比,支持用户进行多种格式的问价对比,用户可以在这里轻松查找出相同会不同之处,支持用户…

elementui el-date-picker禁止选择今年、今天、之前、时间范围限制18个月

1、禁止选择今年之前的所有年份 <el-date-pickerv-if"tabsActive 0":clearable"false"v-model"yearValue"change"yearTimeChange"type"year"placeholder"选择年"value-format"yyyy":picker-options…

文化旅游3D数字孪生可视化管理平台推动文旅产业迈向更加美好的未来

随着数字化、智能化管理成为文旅产业发展的必然趋势&#xff0c;数字孪生公司深圳华锐视点创新性地推出了景区三维可视化数字孪生平台&#xff0c;将线下的实体景区与线上的虚拟世界完美融合&#xff0c;引领智慧文旅新潮流。 我们运用先进的数字孪生、web3D开发和三维可视化等…

怎么设置 idea terminal 窗口的编码格式

1 修改Terminal 窗口为 Git bash 窗口 打开 settings 设置界面&#xff0c;选择 Tools 中的 Terminal (File -> settings -> Tools -> Terminal) 修改 Shell path 为你的 Git bash 安装路径&#xff0c;我的在 C:\my_software\java\Git\bin\bash.exe 2 解决中文显示…

高端制造企业生产设备文件管理,怎样保证好用不丢失文件?

高端制造业在市场经济中占据重要角色&#xff0c;在高端制造业企业内部&#xff0c;生产设备又是最关键的一环环&#xff0c;它们不仅负责完成生产任务&#xff0c;同时也会产生大量的文件。这些数据反映了设备的运行状态、生产效率、能源消耗以及产品质量等多个方面&#xff0…

网站内容下载软件有哪些 网站内容下载软件推荐 网站内容下载软件安全吗 idm是啥软件 idm网络下载免费

一招搞定网页内容下载&#xff0c;并且各大网站通用&#xff01;绕过资源审查&#xff0c;所有网站内容随意下载。解锁速度限制&#xff0c;下载即高速无视网站限速。跳过会员充值&#xff0c;所有VIP资源免费下载。有关网站内容下载软件有哪些&#xff0c;网站内容下载软件推荐…

汽车信息安全--如何理解TrustZone(1)

目录 1.车规MCU少见TrustZone 2. 什么是TrustZone 2.1 TrustZone隔离了什么&#xff1f; 2.2 处理器寄存器和异常处理 3.小结 1.车规MCU少见TrustZone 在车规MCU里&#xff0c;谈到信息安全大家想到的大多可能都是御三家的HSM方案&#xff1a;英飞凌的HSM\SHE、瑞萨的ICU…

【【gitlab解决git Clone 出现 Permission denied, please try again.】】

【gitlab解决git Clone 出现 Permission denied, please try again.】 问题解决随便找一个地方 点击右键输入ssh -keygen -C "邮件"显示结果输入 登录gitlab然后再次git Clone就可以了。 问题 git clone的时候出现 Permission denied, please try again 解决 随便…

跨语言指令调优深度探索

目录 I. 介绍II. 方法与数据III. 结果与讨论1. 跨语言迁移能力2. 问题的识别3. 提高跨语言表现的可能方向 IV. 结论V. 参考文献 I. 介绍 在大型语言模型的领域&#xff0c;英文数据由于其广泛的可用性和普遍性&#xff0c;经常被用作训练模型的主要语料。尽管这些模型可能在英…