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)有多长,上层协议是什么等信息;

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

    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装RcoketMQ

1、Docker安装RcoketMQ-4.9.4 在同级文件夹创建目录config,并在里面创建文件broker.conf,文件内容如下: brokerClusterNameDefaultCluster brokerNamebroker-a brokerId0 deleteWhen04 fileReservedTime48 brokerRoleASYNC_MASTER flushDis…

Java项目:基于SSM框架实现的高校毕业生就业管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm817基于SSM框架实现的高校毕业生就业管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调…

Qlik Sense : IntervalMatch(离散匹配)

什么是IntervalMatch IntervalMatch 前缀用于创建表格以便将离散数值与一个或多个数值间隔进行匹配,并且任选匹配一个或多个额外关键值。 语法: IntervalMatch (matchfield)(loadstatement | selectstatement ) IntervalMatch (matchfield,keyfield…

Docker部署Stable-Diffusion-webui

前排提示:如果不想折腾,可直接跳到最后获取封装好的容器,一键运行 :D 前言 乘上AI生成的快车,一同看看沿途的风景。 启一个miniconda容器 docker run -itd -v 宿主机内SD项目路径:/tmp --gpus all --ipc host -p 7860:7860 con…

正则匹配 | 正则实际应用探索分享

这并不是一篇教正则基础的文章,其正则式不能对您进行使用后的结果负责,请以研究的眼光看待本篇文章。 技术就是懒人为了更好的懒才会想办法搞的东西,我最近因为某些原因需要频繁删除注释 我就想到通过替换的正则功能快速删除文件中的简单注…

RT-Thread: STM32 SPI使用流程

1.添加驱动 ①点开设置界面 ②勾选看门 SPI 驱动 ③点击保存 ④查看添加的驱动文件 drv_spi.c 2.打开驱动头文件定义 ①打开配置文件 ②打开定义 3.打开需要开启的SPI总线 打开 drivers 目录下的 board.h 用SPI搜索,找到如下文字,打开对应的宏。 /*-…

上门服务小程序|预约上门服务系统开发有哪些功能?

在现代快节奏的生活中,压力和疲劳常常困扰着我们。为了缓解这种状况,越来越多的人选择去按摩店进行放松。然而,繁忙的工作和家庭责任往往让我们无法抽出时间去按摩店。在这种情况下,上门按摩服务应运而生。而随着科技的发展&#…

Niushop 开源商城 v5.1.7:支持PC、手机、小程序和APP多端电商的源码

Niushop 系统是一款基于 ThinkPHP6 开发的电商系统,提供了丰富的功能和完善的商品机制。该系统支持普通商品和虚拟商品,并且针对虚拟商品还提供了完善的核销机制。同时,它也支持新时代的商业模式,如拼团、分销和多门店砍价等营销活动。 配送方式方面,Niushop 系统支持物流…

JAVAEE初阶 网络编程(六)

TCP协议 一. 四次挥手二. 连接管理过程中TCP状态的变化2.1 listen状态2.2 established状态2.3 CLOSE_WAIT状态2.4 TIME_WAIT状态 三. 滑动窗口3.1 ack丢了3.2 数据丢了 一. 四次挥手 我们都知道,在三次握手中是可以把中间步骤合并成一个步骤执行,那么在四…

openGaussdb5.0单点企业版部署_Centos7_x86

本文档环境:CentOS7.9 x86_64 4G1C40G python2.7.5 交互式初始化环境方式 介绍 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续…

使用vscode查bug

具体操作 修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release")//注释Release模式 set(CMAKE_BUILD_TYPE "Debug")//设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")//注释*这行代码是用来设置 CMake 构建系统中 Release 模式…

我道歉!我被小米汽车举报了

文 | AUTO芯球 作者 | 雷歌 前几天,我写了《小米,不要将卖手机那套话术带进汽车圈》。 小米汽车向腾讯举报,谴责我对他们进行“品牌抹黑、虚构诋毁”! 我要向小米道歉。 我不该说“16.8亿种驾驶模式是文字游戏”。那是你们的说…

[C++]c++判断CPU的类型及支持的指令集

1、利用cpui判断cpu的类型及支持的指令集,可以进行条件编程:(InstructionSet.h) #pragma once// InstructionSet.cpp // Compile by using: cl /EHsc /W4 InstructionSet.cpp // processor: x86, x64 // Uses the __cpuid intrin…

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统,具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…

uniapp上传音频文件到服务器

视频教程地址: 【uniapp录音上传组件,将录音上传到django服务器】 https://www.bilibili.com/video/BV1wi4y1p7FL/?share_sourcecopy_web&vd_sourcee66c0e33402a09ca7ae1f0ed3d5ecf7c uniapp 录制音频文件上传到django服务器保存到服务器 &#xf…

群辉开启WebDav服务+cpolar内网穿透实现移动端ES文件浏览器远程访问本地NAS文件

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 本文主要介绍如何在群辉中开启WebDav服务,并结合cpolar内网穿透工具生成的公网地址,通过移动客户端ES文件浏览器即可实现移动设…

msfconsole实战使用(结合靶场演示)

msfconsole实战使用 前言 MSFconsole(Metasploit Framework Console)是Metasploit框架的一部分,是一个功能强大的渗透测试工具。Metasploit框架是一个开源的安全工具,旨在开发、测试和执行针对计算机系统的攻击。MSFconsole是Me…

数据湖技术之发展现状篇

一. 大数据处理架构: 大数据处理架构的发展过程具体可以分为三个主要阶段:批处理架构、混合处理架构(Lambda、Kappa架构)、湖仓一体。首先是随着Hadoop生态相关技术的大量应用,批处理架构应运而生,借助离线…

ThinkPhp3.2(qidian)部署文档

宝塔环境部署 申请域名以及域名解析 具体配置,可百度之 在宝塔面板中创建网站 上传代码导入数据配置运行目录 注意:(如果版本:thinkphp3.2 )配置 运行目录要特别注意:运行目录要选择根目录“/”&#xff…

C# 实现 gRPC 服务和调用

写在前面 gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。 主要优点如下: 1.高性能轻量化。 2.协议优先的 API 定义模式,默认使用协议缓冲区,允许与语言无关的实现。 3.可用于多种语言的工具,以生成强类型服务器和客户…