JavaEE 网络原理

JavaEE 网络原理

文章目录

  • JavaEE 网络原理
    • 1. 网络互连
      • 1.1 局域网LAN
      • 1.2 广域网WAN
    • 2. 网络通信基础
        • 2.1 IP地址
        • 2.2 端口号
    • 3. 网络协议
        • 3.1 概念
        • 3.2 五元组
        • 3.3 协议分层
        • 3.4 TCP/IP 五层模型
        • 3.5 封装和分用

1. 网络互连

随着时代的发展,需要多个计算机协同工作来完成业务的要求越来越多,也因此诞生了网络互连

网络互连:将多台计算机连接在一起,完成数据共享

根据网络互联的规模不同,可以划分为局域网和广域网

1.1 局域网LAN

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

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

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

局域网组建网络的方式可分为以下几种:

在这里插入图片描述

1.2 广域网WAN

广域网,即Wide Area NetWork,简称WAN

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

在这里插入图片描述

如果有北、中、南等分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即称为“广域网”。如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。

2. 网络通信基础

网络互连的目的是进行网络通信,也可认为是网络数据传输,更具体一点,是网络主机中的不同进程间基于网络传输数据

在此情况下,以下两个标识在网络通信中显得尤为重要:

2.1 IP地址

概念

IP地址用于定位主机的网络地址,就像我们发送快递一样,寄件人需要有一个地址来寄出货物(源IP),收件人也要有一个地址来接受货物(目的IP

格式

IP地址是一个32位的二进制数,通常用 “点分十进制” 的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:127.0.0.1

2.2 端口号

概念

端口号用于定位主机的进程。类似发送快递时,不关需要指定收获地址(JP地址),还需要指定收货人(目的端口号),并且在网络通信中,即要有目的端口,还要有源端口

格式

端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接受网络数据

有了以上两个标识,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输的,如何告诉对方发送的数据是什么样的?又是什么类型的数据呢?

对此,基于网络数据传输,需要使用协议来规定双方的数据格式

3. 网络协议

3.1 概念

网络协议,简称协议,网络协议是网络通信(即网络数据传输)**经过的所有网络设备都必须共同遵守的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。协议(protocol) 最终体现为在网络上传输的数据包的格式

计算机之间的传输媒介是光信号和电信号。通过“频率” 和 “强弱” 来标识 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式,大家都来遵守,这就是网络协议

3.2 五元组

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

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接受数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

在这里插入图片描述

五元组在网络通信中的作用,类似于发送快递:

在这里插入图片描述

可以在cmd中,输入 netstat -ano 查看网络数据传输中的五元组信息:

在这里插入图片描述

3.3 协议分层

协议分层就是把一个复杂的协议拆分成多个不同层次的协议,把功能定位相似的协议放到同一层中,使得上层协议能够调用下层协议封装好的功能,下层协议给上层协议提供服务,同时只有相邻的层次之间可以进行沟通,不能跨层次调用

这样的协议分层也给我们带来了许多好处:

  1. 上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议把细节封装好了)

    在这里插入图片描述

  2. 某一层的协议进行替换之后,对其他层没什么影响

    在这里插入图片描述

3.4 TCP/IP 五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇

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

  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

  • 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发 送到目标主机。

  • 网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。

  • 数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。 有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。

  • 物理层: 负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采的的同 轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理 层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

    在这里插入图片描述

我们可以把网络通信在这五层模型上的传输步骤和我们平时网购相关联:

我在京东上买了一个鼠标,等我拿到这个鼠标后要用来干什么,解决什么问题,这是应用层的事情,即应用层负责拿到数据之后要用来干啥

快递从哪里寄出,又寄到哪里去,起点和终点在哪里,这是传输层关注的,即传输层负责关注网络数据包的起点和终点

有了起点和终点后,要走哪条路将快递从起点运送到终点,这是网络层负责的,即网络层负责路径规划

确定路线后,我要以什么方式来进行运输,比如从上海到广州用飞机空运,从广州到深圳用货车运输等,这是数据链路层负责的,即数据链路层负责两个相邻节点之间的传输

通信过程中的基础设施如公路、铁路、航线等,这一块由物理层负责,即物理层负责硬件措施

OSI七层模型相对复杂且不实用,一般实际组建网络使用TCP/IP 五层模型来实现,这里不过多解释

3.5 封装和分用
  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment), 在网络层叫做数据报(datagram), 在链路层叫做帧(frame);

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装

    例如,数据到传输层时要给应用数据(载荷)加上TCP报头,构成TCP数据包;而到了网络层就要给此时的TCP数据包加上IP报头,构成IP数据包;之后到数据链路层又要给IP数据包首尾各加上以太网帧头和以太网帧尾,构成以太网数据帧,之后在物理层把以太网数据帧这样的二进制结构数据转换成光信号/电信号/电磁波然后进行发送,这样我们的数据才算发送出去了!

    在这里插入图片描述

  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息;

  • 数据封装成帧后发送到传输介质上,到达目的主机后每层协议在剥削掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理,这个过程就叫做分用,可以理解为封装的反过程。

    在这里插入图片描述

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

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

相关文章

一款自动化提权工具

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。…

Unity3D控制人物移动的多种方法

系列文章目录 unity知识点 文章目录 系列文章目录前言一、人物移动之键盘移动1-1、代码如下1-2、效果 二、人物移动之跟随鼠标点击移动2-1、代码如下2-2、效果 三、人物移动之刚体移动3-1、代码如下3-2、效果 四、人物移动之第一人称控制器移动4-1、代码如下4-2、效果 五、And…

Java缓存介绍

一、什么是缓存 1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问 2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache 二、缓存的分类 1、基于…

全文干货!信息化和数字化的本质区别是什么?

信息化和数字化都是行业的发展方向,但有一些区别。 简单来说就是,信息化侧重系统建设,用以管理生成的信息与数据,通常包括建立OA办公系统、业务系统、财务管理系统、客户关系管理系统和人力管理系统等。数字化侧重于将物理业务和…

CC工具箱使用指南:【用地用海代码和名称转换】

一、简介 在国土空间规划中,用地用海的名称和代码是一一对应的,手动修改用地代码后,还需要相应的修改名称,纯纯的重复工作,因此做了这个工具。 工具可以实现用地编码转名称、名称转编码,并且同时支持新旧…

开源云真机平台-Sonic-H5页面自动化测试

开源云真机平台-Sonic-H5页面自动化测试 一、参考官方文档 切换WebView | Sonic - 开源云真机平台 1、WebView/H5调试 使用网页调试时的教学与注意事项。 #注意事项# v2.0.0-beta开始,使用网页调试时,需确保: 已经打开WebView页面被测…

leetcode—图 岛屿数量

岛屿数量 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网…

React16源码: React中的completeUnitOfWork的源码实现

completeUnitOfWork 1 )概述 各种不同类型组件的一个更新过程对应的是在执行 performUnitOfWork 里面的 beginWork 阶段它是去向下遍历一棵 fiber 树的一侧的子节点,然后遍历到叶子节点为止,以及 return 自己 child 的这种方式在 performUni…

vConsole 与 Vue中未定义变量而引发的Maximum call stack size exceeded异常问题

一、问题描述 前段时间有个前端小伙伴反馈在打包发布正式环境后调用VantUI的<van-popup>组件显示时&#xff0c;显示空白&#xff0c;并且在控制台看到一个Maximum call stacksize exceeded&#xff08;超出最大调用堆栈大小&#xff09;,而本地开发环境正常&#xff1a…

Redis应用(1)缓存(1.2)------Redis三种缓存问题

三者出现的根本原因是&#xff1a;Redis缓存命中率下降&#xff0c;请求直接打到DB上了。 一、 缓存穿透&#xff1a; 1、定义&#xff1a; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。…

编程语言MoonBit新增矩阵函数的语法糖

MoonBit更新 1. 新增矩阵函数的语法糖 新增矩阵函数的语法糖&#xff0c;用于方便地定义局部函数和具有模式匹配的匿名函数&#xff1a; fn init {fn boolean_or { // 带有模式匹配的局部函数true, _ > true_, true > true_, _ > false}fn apply(f, x) {f(x)}le…

第二篇【传奇开心果短博文系列】Python的OpenCV库技术点案例示例:图像处理

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例短博文系列 博文目录一、项目目标二、第一个示例代码三、第二个示例代码四、第三个示例代码五、第四个示例代码六、第五个示例代码七、知识点归纳总结 系列短博文目录 Python的OpenCV库技术点案例示例短博文…

阿里云 SAE 2.0 正式商用:极简易用、百毫秒弹性效率,降本 40%

作者&#xff1a;黛忻 本文主要介绍阿里云 Serverless 应用引擎&#xff08;以下简称 SAE &#xff09;如何帮助企业跨越技术鸿沟&#xff0c;从传统应用架构无感升级到 Serverless 架构&#xff0c;以更高效、更经济的方式进行转型&#xff0c;快速进入云原生快车道&#xff0…

【android】 android 里写jni

目录 &#xff08;1&#xff09; 环境准备 (2) 关联c文件到gradle文件 &#xff08;3&#xff09; 生成了 (4) 书写 &#xff08;5&#xff09; 使用 &#xff08;6&#xff09;业务调用 参考文档 &#xff08;1&#xff09; 环境准备 ndk, cmake (2) 关联c文件到gr…

实战Arthas:常见命令与最佳实践

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 微信公众号&#xff1a;Java随想录 文章目录 前言常用命令类命令getstaticjadretransform 监测排查命令monitorstackthreadtracettwatch JVM命令heapdumpjfrmemorydashboardclassloaderloggerscmbeanprofile…

《移动通信原理与应用》实验一——QPSK调制与解调实验(实验箱)

目录 一、实验目的 二、实验主要内容及原理 2.1、主要内容 2.2、基本原理 三、实验器材 3.1、移动通信原理实验箱&#xff1a; 3.2、实验框图及电路说明 四、实验步骤 五、实验过程原始记录(数据、图表、计算等) 六、实验结果及分析 1、结果分析&#xff1a; 2、思…

docker compose安装milvus

下载对应版本的milvus-standalone-docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.3.5/milvus-standalone-docker-compose.yml重新命令为docker-compose.yml mv milvus-standalone-docker-compose.yml docker-compose.yml启动milvus doc…

深入理解Linux中的动态库与静态库

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;I Wish My Mind Would Shut Up—Ivoris 0:21━━━━━━️&#x1f49f;──────── 2:04 &#x1f504; ◀️ …

Java基于沙箱环境实现支付宝支付

一、支付宝沙箱环境介绍 沙箱环境是支付宝开放平台为开发者提供的安全低门槛的测试环境&#xff0c;开发者在沙箱环境中调用接口无需具备所需的商业资质&#xff0c;无需绑定和开通产品&#xff0c;同时不会对生产环境中的数据造成任何影响。合理使用沙箱环境&#xff0c;可以…

【深度学习:集中偏差】减少计算机视觉数据集中偏差的 5 种方法

【深度学习&#xff1a;集中偏差】减少计算机视觉数据集中偏差的 5 种方法 有偏差的计算机视觉数据集会导致哪些问题&#xff1f;如何减少计算机视觉数据集中偏差的示例观察并监控带注释样本的类别分布确保数据集代表模型适用的人群明确定义对象分类、标记和注释的流程为标签质…