【JavaEE】网络原理

网络原理

1. 网络发展史

1.1 独立模式

每个计算机都相互独立,各个终端无法实现相互通信,当想要运行其他数据时,只能进行更换电脑。

1.2 网络互连

通过网络将多台设备连接在一起,完成数据共享。

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

  • Local标识了这是一种本地网络,是一种局部的网络。

  • 局域网的连接方式:

    1. 基于网线直连

      两两终端之间直接连接网线,通过网线进行通信。

      但是一般电脑只有一个内置的网口,无法进行三台设备之间的连接。

    2. 基于集线器

      通过集线器,这就能够使得多台设备均通过集线器设备,将数据发送到同样连接到集线器的设备上。

    3. 基于交换机

      由于集线器的较差性能,发展出了交换机这种设备,功能与集线器相同,为所有设备提供汇总的端口。

    4. 基于交换器和路由器

      交换机: 处理局域网内部的数据流,优化内部设备之间的通信。

      路由器: 处理不同网络之间的数据流,控制数据包的进出局域网。

      简而言之,就是对于方法三进行一个更高维的扩展,因为这一阶段需要组网的设备更多,需要更多的层级进行分层管理。

2)广域网WAN
  • 即Wide Area Network,简称WAN
  • 通过路由器,将多个局域网连接起来,形成的大范围网络成为广域网
  • 广域网内部的局域网都是广域网的子网

1.3 关于LAN和WAN的几点说明

  1. 广域和局域只是一个相对的概念,区别只是路由器之间是否继续进行组网

  2. 一般情况下说的广域网就是互联网

2. 网络通信基础

通信基础一共有三个部分,分别是:IP、端口、协议

2.1 IP

1)概念

IP地址就像我们收发快递时的地址信息,起一个定位主机网络地址的作用。

2)格式

一般为点分十进制的形式,即形如:"198.168.0.0.1”

3)特殊IP

本机环回测试IP:127.0.0.1

2.2 端口号

1)概念

端口号就像我们收发快递时填的手机号,因为一件包裹不仅仅要确定在哪个地域,还需要定位到具体的人。起一个定位主机中的进程的作用。

2)格式
  • 范围:0~65535

    但是0~1023为知名端口号,这些端口预留给服务端程序绑定广泛使 用的应用层协议。

    所以开发时一般范围在1024~65535之间。

3)注意事项
  • 进程与端口号之间是一对多的形式:

    一个进程可以绑定多个端口号,但是一个端口号只能被一个进程所绑定。

    也就是说,端口号被占就不能再被其他进程使用。

2.3 网络协议

1)概念

协议就像秦始皇统一六国进行普通话的规范,使得各个地域之间都能进行通信,网络协议是经过的所有网络设备都必须共同遵守的约定,起一个保证互相之间遵守同一套标准才能通信的作用。

2)组成
  1. 语法

    类似打电话时双方需要同一种语言。

  2. 语义

    用来说明通信双方应该怎么做。

  3. 时序

    通过同步还是异步时序进行传输。

3)作用
  • 使得各个设备之间都能遵守同一套标准而进行通信

    就像国家对于各种设备都制定了国标,这使得:

    • 每家水厂生产的桶装水都能安装到每种品牌的饮水机上
    • 每家螺母公司只要指定螺帽大小,就能够找到对应大小能够安装的螺母
4)说明
  • 协议最终体现为网络上传输的数据包的形式

3. 五元组

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

  1. 源IP:标识源主机(发货商家地址)
  2. 源端口号:标识源主机中发送数据的进程(发货商家手机号)
  3. 目的IP:标识目的主机(收货人地址)
  4. 目的IP:标识目的主机中接受数据的进程是哪个(收货人手机号)
  5. 协议号:标识发送进程接受进程双方约定的数据格式(使用什么快递公司)

4. 协议分层

4.1 概念

协议是一个复杂庞大的系统,才能够使得所有经过网络的设备都能通过它进行通信。

所以协议就有了分层的必要性,就好像一个公司的员工数越多,它的职能层级也划分越细,只有这样才能使得高层过滤掉一些他不需要看到的信息,便于管理。

4.2 作用

  • 便于维护

    每一层分而治之,使得维护不必要牵一发而动身

  • 便于更新

    同维护作用

  • 便于封装

    是一种面向对象的思想,调用网络进行通信的发送方与接收方不用考虑协议具体是怎么实现的,只用关注需要发送的内容

4.3 OSI七层模型

最初预想的模型,但是由于过于复杂,不便于落实,所以不是主流协议。

4.4 TCP/IP五层(或四层)模型

首先解释为什么是说五层也行,四层也行,归根结底是因为物理层是一个纯硬件的设备,可以将其算作协议的一部分,因为它也参与了通信数据的传输,但是其他四层又都是软件层面的,所以物理层处于边缘。

1)组成
  1. 应用层

    • 负责应用程序间的沟通,就像是收件人收到快递后需要怎么使用
    • 数据包只剩各个数据能够直接使用的程度
    • 开发的工作层
    • 涉及到的是操作系统的api,将这个数据包交给传输层
  2. 传输层

    • 负责数据进行传输的起点与终点,就像是快递从A地出发到B地
    • 主机负责
    • 涉及到的最主要的协议就是UDP、TCP,经过这种协议后会构造一个对应的UDP、TCP数据包
  3. 网络层

    • 负责数据走哪条路线进行传输,就像是快递的路径规划
    • 路由器的工作层
    • 涉及到的最主要的协议就是IP,会构成一个IP数据包

    这一级产生的原因主要是两个主机之间一般会经过一系列的交换机和路由器进行连接,所以就有多条路线能够到达目的地。

  4. 数据链路层

    • 负责相邻结点之间的数据传输,就像是快递大站与大站之间的运输方式,是走公路还是铁路、航线
    • 交换机的工作层
    • 涉及到的最主要的协议就是以太网协议,会构成一个以太网数据帧
  5. 物理层

    • 接受光/电信号数据,就像是快递需要走公路还是铁路、航线
    • 集线器的工作层
    • 涉及到的最主要的就是利用物理层面的硬件,将以太网数据帧转换成光信号/电信号/电磁波信号,分别通过光纤/网线/wifi发送
2) 注意事项
  1. 此处提到的“交换机”、“路由器”都是经典意义上的,在现实生活中,高级的交换机、路由器都可以工作在他们的上一层级

  2. 从应用层到物理层,发送数据的过程就是当前一层级都将上一层级的所有数据当成一个整体进行打包发送。

  3. 接受数据包的过程是从物理层到应用层的逆过程

  4. 第2,3步称为封装和分用

  5. 有些情况下, 比如对于经典路由器/交换机来说,不需要将数据(包裹)进行完全的分用(拆包裹),只需要分用到某一层,然后加上新的信息,直接发送出去。

    数据传输到数据链路层

    • 首先交换机会对于发送过来的网络层数据包进行分用,去掉旧的帧头帧尾


    • 由交换机加上新的帧头帧尾,通过物理层发送出去。

    数据传输到网络层

    • 先经过数据链路层的以太网协议对于数据包进行解析,去掉以太网数据帧头帧尾

    • 再经过网络层的IP协议对于数据包进行解析,去掉IP报头


    • 从本级经过路由器加上新的IP报头

    • 再交给数据链路层的交换机加上新的帧头帧尾

    • 再交给物理层发送数据

5. 封装和分用

这是网络传输中最核心的流程

5.1 封装

  • 封装就是指原始的数据经过网络传输中的各层,由各层的主要工作器件对其进行添加必要信息,使得数据能够根据添加的信息发送到对应的目的地的过程。

    就好比商家不会直接把货物发送出去,是需要先装袋,再装箱,再装袋,再写地址的过程。

  • 封装是在发送阶段要做的事情。

过程:
  1. 应用层对于应用将要发送的数据,形成应用层数据包
  2. 传输层的主机对于应用层数据包按照UDP/TCP协议加上UDP/TCP报头,获得UDP/TCP数据包
  3. 网络层的路由器对于UDP/TCP数据包按照P协议加上IP报头,获得IP数据包
  4. 数据链路层的交换机对于P数据包按照以太网协议加上以太网数据帧头帧尾,获得以太网数据帧
  5. 物理层的物理设备将数据包转换为光信号、电信号、电磁波信号发送出去

5.3 分用

  • 分用就是指原始的数据经过网络传输中的各层,由各层的主要工作器件对其进行删除不必要信息(指报头、帧头帧尾等),使得数据能够直接在应用层进行使用。

    就好比收货人收到货物需要先拆袋,再拆箱,再拆袋的过程。

  • 分用是在接收阶段要做的事情。

过程:
  1. 物理层的硬件设备对于光信号、电信号、电磁波信号进行转换为数据包
  2. 数据链路层的交换机对于数据包进行解析,去掉以太网数据帧头帧尾
  3. 网络层的路由器对于2的数据包进行解析,去掉IP报头
  4. 传输层的主机对于3的数据包进行解析,去掉UDP/TCP报头
  5. 应用层对于4的数据包进行解析,将信息呈现在应用程序中

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

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

相关文章

【C++修行之道】竞赛常用库函数(sort,min和max函数,min_element和max_element、nth_element)

目录 一、sort 1.1sort简介 语法 参数 功能 适用容器 1.2sort的用法 1.3自定义比较函数 示例 1265蓝桥题 —— 排序 二、min和max函数 三、min_element和max_element 497蓝桥题 —— 成绩分析 四、nth_element 一、sort 1.1sort简介 sort函数包含在头文件<a…

Vue3组件库开发 之Button(2) 未完待续

Vue3组件库开发 之Button(1) 中新建项目&#xff0c;但未安装成功ESLINT 安装ESLINT npm install eslint vite-plugin-eslint --save-dev 安装eslint后&#xff0c;组件文件出现错误提示 添加第三方macros &#xff0c;虽然不是官网但很多开发者都是vue3开发人员 安装macros…

C++大学教程(第九版)6.29素数

题目 (素数)素数是只能被1和自已整除的整数。例如,235和7是素数而468和9不是素数 a)编写一个函数&#xff0c;确定一个数是否是素数。 b)在程序中使用这个函数&#xff0c;该程序确定和打印2 ~10000之间的所有素数。在确信已找到所有的素数之前&#xff0c;实际需测试这些数中…

基于PSO-BP神经网络的风电功率预测(MATLAB)

作品简介 &#xff1a;关注公众号“电击小子程高兴的MATLAB小屋”获取优惠 主要内容 该模型将粒子群算法与BP神经网络结合用于BP神经网络的训练&#xff0c;即优化BP网络中的连接权值和各项阈值&#xff0c;然后利用神经网络分布式并行处理优势、自适应学习能力以及较好的…

c++中的包装器 function

文章目录 前言包装器 function及模板的低效性修复问题 前言 C提供了多个包装器&#xff08;wrapper&#xff0c;也叫适配器adapter&#xff09;。这些对象用于给其他编程接口提供更一致或更合适的接口。 bind1st和bind2ed就是两个适配器&#xff0c;它们让接受两个参数的函数…

mysql学习打卡day16

今日成果&#xff1a; select c.customer_id,c.first_name,c.points, Bronze as typefrom customers cwhere c.points < 2000unionselect c.customer_id,c.first_name,c.points, Silver as typefrom customers cwhere c.points between 2000 and 3000 unionselect c.custom…

【.NET Core】多线程之线程池(ThreadPool)详解(二)

【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;二&#xff09; 在上一篇《【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09;》中我们详细讲解了&#xff0c;线程池概念&#xff0c;如何应用及…

三、需求规格说明书(软件工程示例)

1&#xff0e;引言 1.1编写目的 1.2项目背景 1.3定义 1.4参考资料 2&#xff0e;任务概述 2.1目标 2.2运行环境 2.3条件与限制 3&#xff0e;数据描述 3.1静态数据 3.2动态数据 3.3数据库介绍 3.4数据词典 3.5数据采集 4&#xff0e;功能需求 …

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现定时器

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 文章目录 一、定时器(1) 简介STM32定时器计算公式 (2) 示例代码&#xff08;基本定时功能&#xff09;(3) 仿真效果 &#xff08;基本定时功能&#xff09;(4) 示例代码&#xff08;PWM 呼吸灯&#xff09…

修改Linux 分区 UUID

注意事项修改磁盘 uuid 的时候&#xff0c;磁盘不能被挂载需要先卸载 #/dev/sdb5 硬盘设备分区名称 sudo umount /dev/sdb5 生成UUID的命令[不适合NTFS nfs等windows格式] uuidgen 查看硬盘分区设备名字以及UUID的命令 blkid 修改 exit 2 3 4 #!/bin/bash MY_UUID$(uuidge…

美易makeasy平台:小米汽车雄心勃勃

正文&#xff1a; 在当今这个科技飞速发展的时代&#xff0c;不断有企业家提出宏伟的目标&#xff0c;引领行业向前迈进。近日&#xff0c;小米集团创始人雷军在社交平台上转发央视财经关于小米汽车的报道&#xff0c;并宣布了一个令人瞩目的目标&#xff1a;通过15到20年的不…

【GitHub项目推荐--12306 抢票助手 python】【转载】

这个项目名很干脆&#xff0c;不知道以为是 12306 网站的源码&#xff0c;其实不是这是全 GitHub最德高望重的抢票小助手&#xff0c;功能一直在更新&#xff0c;且现已支持 Python 3.6 以上版本。 开源地址&#xff1a;https://github.com/testerSunshine/12306

利用GPU加速自定义风格图像生成-利用GPU加速结合了ControlNet/ Lora的Stable Diffusion XL

点击链接完成注册&#xff0c;参加本次在线研讨会 https://www.nvidia.cn/webinars/sessions/?session_id240124-31319 随着AI技术的发展, 数字内容创建业务也变得越来越火热。生成式AI模型的发布, 让我们看到了人工智能在各行各业的潜力。您只需要用语言简单描述自己希望看…

【Java】Maven的安装与配置

初识Maven Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09; 提供了一套依赖管理机制 标准化的…

质疑鸿蒙系统的是什么人群?为什么要杠

《HarmonyOSNEXT星空版》已堵住大部分人质疑的嘴。就在本月1月18&#xff0c;华为鸿蒙生态千帆启航仪式正式&#xff0c;HarmonyOSNEXT鸿蒙星河版发布&#xff1a;全面自研。 架构层面&#xff0c;HarmonyOSNEXT不依赖传统的Unix内核和Linux内核&#xff0c;而是实现了AI大模型…

《高教学刊》是什么级别的期刊?是正规期刊吗?是核心期刊吗?

​标题解答 1、《高教学刊》是什么级别的期刊&#xff1f; 省级 2、《高教学刊》是核心期刊吗&#xff1f; 不是&#xff0c;只是封面有核心字样 《高教学刊》刊发高等教育教学与高教理论研究成果&#xff0c;交流高校教学与建设的改革措施和实践经验&#xff0c;探索高等教…

每天五分钟计算机视觉:掌握迁移学习使用技巧

本文重点 随着深度学习的发展,迁移学习已成为一种流行的机器学习方法,它能够将预训练模型应用于各种任务,从而实现快速模型训练和优化。然而,要想充分利用迁移学习的优势,我们需要掌握一些关键技巧。本文将介绍这些技巧,帮助您更好地应用迁移学习技术。 迁移学习的关键…

LeetCode每日一题 | 670. 最大交换

文章目录 题目描述问题分析程序代码 题目描述 原题链接 给定一个非负整数&#xff0c;你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 问题分析 由于至多交换一次数字中的任意两位。 因此&#xff0c;我们只需要从右往左遍历&#xff08;从个位开始&#xff0…

高客单价企业必读:私域运营趋势分析与实操技巧

一、深入挖掘&#xff1a;场景洞察的新维度 当我们收到销售的群发信息时&#xff0c;通常会感到被打扰或骚扰&#xff0c;这是因为这些信息通常是基于广泛的受众群体发送的&#xff0c;缺乏针对个体消费者的定制化和个性化。这种缺乏个性化的沟通方式很容易被消费者视为不必要…

Temu活动库存设置多少合适,Temu活动要押金吗?-站斧浏览器

Temu活动库存设置多少合适&#xff1f; 对于Temu活动库存的设置&#xff0c;并没有固定的标准。其设置应根据商品的特性、市场需求、以及您的销售目标等因素进行综合考虑。然而&#xff0c;以下是一些建议&#xff0c;可以帮助您做出决策&#xff1a; 商品特性&#xff1a;某…