【JavaEE】网络原理之初识

news2025/3/16 23:31:24

1.❤️❤️前言~🥳🎉🎉🎉

Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。

如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的内容感兴趣,记得关注我👀👀以便不错过每一篇精彩。

当然,如果在阅读中发现任何问题或疑问,我非常欢迎你在评论区留言指正🗨️🗨️。让我们共同努力,一起进步!

加油,一起CHIN UP!💪💪

🔗个人主页:E绵绵的博客
📚所属专栏:

1. JAVA知识点专栏

        深入探索JAVA的核心概念与技术细节

2.JAVA题目练习

        实战演练,巩固JAVA编程技能

3.c语言知识点专栏

        揭示c语言的底层逻辑与高级特性

4.c语言题目练习

        挑战自我,提升c语言编程能力

5.Mysql数据库专栏

        了解Mysql知识点,提升数据库管理能力

6.html5知识点专栏

        学习前端知识,更好的运用它

7. css3知识点专栏

        在学习html5的基础上更加熟练运用前端

8.JavaScript专栏

        在学习html5和css3的基础上使我们的前端使用更高级、

9.JavaEE专栏

        学习更高阶的Java知识,让你做出网站

📘 持续更新中,敬请期待❤️❤️

2.局域网与广域网 

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。

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

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。

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

局域网是本地,局部组建的一种私有网络。

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

下面是局域网的一种实现方式:


其能通过路由器去使几台电脑去连接在一块,但数量是有限的。

一般家用路由器,常见的是5 个网口:1WAN + 4LAN
要想让这几个电脑能够在同一个局域网中上网,就需要把他们连接到LAN 口,WAN 口是用来连上级的路由器的。

那么能不能让一个路由器连接的电脑更多呢?

有个叫交换机的东西: 可以扩展路由器的端口,我们把路由器的LAN口连在交换机上,交换机上有一定数量的LAN口从而可以连一定数量的电脑,这样就可以扩展电脑的数量。


除此之外还有上级路由器连多个下级路由器,从而更多电脑连接在一块。

那么如果我们在上述设备层层连接之下,就可以构成更复杂的网络结构了,把更多更多的局域网连接到一起,构成的网络更加庞大,可能已经覆盖了一个城市,一个国家,就叫广域网。


对于广域网和局域网的定义没有准确的数量要求。(我们感觉非常多的电脑(10w台这种)连接在一块就是可以称为广域网)

3. IP地址和端口号

IP地址描述了一个设备,在网络上的地址,
生活中: 江西省南昌市新建区江西财经大学

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

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的程序。简单说:端口号用于定位主机中的程序。

类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)

格式为:

端口号是0~65535范围的数字(两个字节),在网络通信中,程序可以通过绑定一个端口号,来发送及接收网络数据
注意事项:

两个不同的程序,不能绑定同一个端口号,但一个进程可以绑定多个端口号

特殊说明:               

1-1023 (0不用作端口号)这个范围的端口号,系统留作特殊用途,咱们写的程序不应该占用
知名端口号,这些留给一些比较常见的服务器程序进行使用的(都是系统必要的)

22 => ssh
80 => http
443 => https
23 => telnet 

4.网络协议 

网络协议是网路通信中的规则和标准,它用于定义网络通信中数据的传输方式、数据包的结构、数据包中的信息内容以及通信双方的行为等。只有统一规范好了网络协议(规则),电脑们之间才能通信成功。

5.协议分层 

网络通信,是一个非常复杂的事情,这个过程中涉及到很多的细节问题.
如果你使用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂.此时,就可以把一个功能复杂的协议,拆分成多个功能更单一的协议来解决各个小问题。
但是拆出来的协议太多了,如果放在一块就变得很复杂,所以就对这些协议进行分类,甚至要进行协议分层,把很多协议,按照功能分成不同的层级,每个层级都有对应的主线任务,并且上层协议还能调用下层协议(这个后面会说它的具体体现)

协议进行分层后各个层级的内部操作就不会干扰到其他层级,更加灵活独立。

协议分层有两种模型:

osi 七层网络模型  仅仅是出现在教科书中。现在基本没有了,所以不详细讲述。
TCP/IP 五层网络模型    osi七层模型的简化版本,现在基本都是该模型,所以我们会对它进行详细描述。 

TCP/IP通讯协议采用了5层的层级结构:

1.应用层:负责应用程序对数据的处理(发送或者接受等),我们的网络编程主要就是针对应用层,我们对该数据的处理决定了系统用什么网络协议应对该处理。


2.传输层:在应用层决定了用什么网络协议后,传输层也会决定用对应的网络协议处理。(体现了上一层对下一层的调用),传输层常见的协议包括TCP、UDP、SCTP和DCCP。

这些协议主要是决定数据传输的起点和终点(还有其他功能,之后会说)


3.网络层:在传输层决定了用什么网络协议后,网络层也会决定用对应的网络协议处理。(体现了上一层对下一层的调用),常见的协议包括IP、ICMP、IGMP、ARP、RIP、OSPF和BGP等。这些协议主要是进行路径规划,选出合适的路径。(还有其他功能,之后会说),例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路。路由器工作在网路层。


4. 数据链路层:在网络层决定了用什么网络协议后,数据链路层也会决定用对应的网络协议处理。(体现了上一层对下一层的调用),常见的协议包括以太网协议、PPP、HDLC、FDDI和Wi-Fi等。数据链路层协议主要是确定电脑用什么方式传输数据。  交换机工作在数据链路层。


5.物理层:在数据链路层决定了用什么网络协议后,物理层也会决定用对应的网络协议处理(体现了上一层对下一层的调用)。常见的物理层协议包括以太网物理层、USB、PCIe、HDMI、光纤通信协议,物理层协议主要是对网络通信的硬件设备进行要求,比如使用的网线,光纤都应该是啥规格。集线器工作在物理层。


我们发现层数越低,它们的功能就越是底层,越是细节,反而最高层的应用层就比较宏观了,会使用就行(这是因为有下一层的给你提供底层支持,本层就不需要那么多细节)。

对于这些网络协议,前三层都是由操作系统内核创建的,后两层都是驱动程序+硬件创建的。并且它们的创建是电脑诞生之时就自带的,我们进行网络通行操作时并不能创建出来协议,而是系统在众多已存在的协议中挑选出一个适合处理该行为的协议。 

对于每一个电脑来说都只有一个唯一的协议分层。 

物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型。 

6.网络设备所在分层 

对于一台主机,它实现了从传输层到物理层的内容,也即是TCP/IP五层模型的五层

对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;

对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;

对于集线器,它只实现了物理层;

(这是个很经典的面试题,记住就行)

注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。随着现在网络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器。我们以下说的网络设备都是传统意义上的交换机和路由器。

7.数据的封装和分用 

当我们将一个数据从一个主机传输给另一个主机时,该数据是怎样进行传输的? 

我们通过协议分层去传输,在确定好协议分层相对应的各个协议后,数据会从应用层一直传输到物理层,通过网络再到另一个电脑的物理层,而后一直传输到另一个电脑的应用层,从而成功接受信息。

那么数据在传输过程中会不会发生变化?

答案是会的,因为协议不仅会有像“决定数据传输的起点和终点”这种功能,还有能规定数据包的结构这种功能,所以数据会因为协议的规定而变化结构。

数据的变化我们分为数据包的封装和数据包的分用.

数据包的封装是指在数据从高层向低层传递的过程中,每一层协议都会在数据包的前面添加自己的控制信息(头部),有时也会在数据包的后面添加一些信息(尾部)。这个过程就像是给数据包加上了一个个的“信封”,每个“信封”包含了该层协议所需的信息,以便在接收方正确地解析和处理数据包。(前面提了之所以变化结构是因为协议规定了数据只允许用协议允许的结构存在,所以不得不变化结构)

封装的过程通常包括以下几个步骤:

  1. 应用层:应用层协议(如HTTP、FTP等)将用户数据打包,并添加自己的头部信息,如请求方法、URL、HTTP版本等。

  2. 传输层:传输层协议(如TCP、UDP等)接收来自应用层的数据包,并添加自己的头部信息,如源端口号、目的端口号等。如果是TCP,还会添加序列号、确认号等信息。

  3. 网络层:网络层协议(如IP)接收来自传输层的数据包,并添加自己的头部信息,如源IP地址、目的IP地址等。

  4. 数据链路层:数据链路层协议(如以太网)接收来自网络层的数据包,并添加自己的头部信息,如源MAC地址、目的MAC地址等,同时也会添加尾部信息,如帧校验序列(FCS)。

  5. 物理层:物理层将数据链路层的数据包转换为物理信号(如电信号、光信号等),在物理介质中传输。

数据包的分用是指在数据从低层向高层传递的过程中,每一层协议都会剥离自己添加的控制信息(头部和尾部),并将剩余的数据包传递给上一层协议。这个过程就像是拆开一个个的“信封”,逐层解析数据包,直到最终将用户数据传递给应用层。(前面提了之所以变化结构是因为协议规定了数据只允许用协议允许的结构存在,所以不得不变化结构)

分用的过程通常包括以下几个步骤:

  1. 物理层:物理层将物理信号转换回数据链路层的数据包。

  2. 数据链路层:数据链路层接收来自物理层的数据包,剥离自己的头部和尾部信息,将剩余的数据包传递给网络层。

  3. 网络层:网络层接收来自数据链路层的数据包,剥离自己的头部信息,将剩余的数据包传递给传输层。

  4. 传输层:传输层接收来自网络层的数据包,剥离自己的头部信息,将剩余的数据包传递给应用层。

  5. 应用层:应用层接收来自传输层的数据包,剥离自己的头部信息,将最终的用户数据呈现给用户或应用程序。

不同的协议层对数据包有不同的称谓,在传输层叫做段,在网络层叫做数据报,在链路层叫做帧。 

下图是对于数据的封装很好的体现。

 

上图就是数据的封装,把该图反过来看就是数据的分用了。 

对于数据包从上一层传递到下一层或者数据包从下一层传递到上一层 都体现了上一层对下一层的调用。 

 8.数据包和五元组

在刚才的文章中我总是提到数据包,那数据包到底是什么呢?和数据有什么区别?

  • 数据:数据是指未经处理或未按特定方式组织的信息。

  • 数据包数据包是数据在网络中传输时的基本单位,它是由数据和控制信息组成的。数据包的结构和格式由所使用的网络协议决定,通常包括头部(控制信息)和负载(数据)两部分。

由于我们刚学了封装和分用,可以说数据在传输前需要被封装成数据包,才能在网络中传输。所以数据包以后是绝对经常接触的,这里了解一下它的概念。

五元组的组成如下:

  1. 源IP地址:发送数据包的设备的IP地址。

  2. 源端口:发送数据包的设备上的应用程序所使用的端口号。

  3. 目的IP地址:接收数据包的设备的IP地址。

  4. 目的端口:接收数据包的设备上的应用程序所使用的端口号。

  5. 传输层协议这次网络通信传输层所使用的协议,例如TCP或UDP。

通过这五个信息的组合,我们可以唯一地标识一个网络连接或会话。

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

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

    相关文章

    Vscode工具开发Vue+ts项目时vue文件ts语法报错-红波浪线等

    Vscode工具开发Vuets项目时vue文件ts语法报错-红波浪线等 解决方案 问题如题描述,主要原因是开发工具使用的代码检查与项目的中的ts不一致导导致,解决办法,修改 vscode 中, 快捷键:command shift p, 输入&#xff…

    ROS实践(五)机器人自动导航(robot_navigation)

    目录 一、知识点 1. 定位 2. 路径规划 (1)全局路径规划 (2)局部路径规划 3. 避障 二、常用工具和传感器 三、相关功能包 1. move_base(决策规划) 2. amcl(定位) 3. costmap_2d(代价地图) 4. global_planner(全局规划器) 5. local_planner(局部规划器…

    【小沐学Web3D】three.js 加载三维模型(React)

    文章目录 1、简介1.1 three.js1.2 react.js 2、three.js React结语 1、简介 1.1 three.js Three.js 是一款 webGL(3D绘图标准)引擎,可以运行于所有支持 webGL 的浏览器。Three.js 封装了 webGL 底层的 API ,为我们提供了高级的…

    软考教材重点内容 信息安全工程师 第19章 操作系统安全保护

    19.1.1 操作系统安全概念 一般来说,操作系统的安全是指满足安全策略要求,具有相应的安全机制及安全功能,符合特定的安全标准,在一定约束条件下,能够抵御常见的网络安全威胁,保障自身的安全运行及资源安全。…

    【机器学习】基于t-SNE的MNIST数据集可视化探索

    一、前言 在机器学习和数据科学领域,高维数据的可视化是一个极具挑战但又至关重要的问题。高维数据难以直观地理解和分析,而有效的可视化方法能够帮助我们发现数据中的潜在结构、模式和关系。本文以经典的MNIST手写数字数据集为例,探讨如何利…

    【Pycharm】Pycharm无法复制粘贴,提示系统剪贴板不可用

    我也没有用vim的插件,检查了本地和ubutnu上都没有。区别是我是远程到ubutnu的pycharm,我本地直接控制windowes的pycharm是没问题的。现象是可以从外部复制到pycharm反之则不行。 ctl c ctlv 以及右键 都不行 参考:Pycharm无法复制粘贴&…

    Flink-学习路线

    最近想学习一下Flink,公司的实时需求还是不少的,因此结合ai整理了一份学习路线,记录一下。 当然,公司也有Scala版本Flink框架,也学习了一下。这里只说Java版本 1. Java基础 目标: 掌握Java编程语言的基础知识。 内容…

    Atcoder ABC397-D 题解

    https://atcoder.jp/contests/abc397/tasks/abc397_dhttps://atcoder.jp/contests/abc397/tasks/abc397_d 题目描述: 确定是否存在一对正整数,使得 思路: 首先对方程进行转化 设 即 接下来确定的范围 根据立方差公式 因此,我们可以从到来…

    K8S学习之基础二十七:k8s中daemonset控制器

    k8s中DaemonSet控制器 ​ DaemonSet控制器确保k8s集群中,所有节点都运行一个相同的pod,当node节点增加时,新节点也会自动创建一个pod,当node节点从集群移除,对应的pod也会自动删除。删除DaemonSet也会删除创建的pod。…

    神经网络的基本知识

    感知机 输入:来自其他 n 个神经元传递过来的输入信号 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较 输出:通过激活函数的处理以得到输出 感知机由两层神经元组成, 输入层接受外界输入信号传递给…

    PostgreSQL技术内幕26:PG聚合算子实现分析

    文章目录 0.简介1.概念说明2.朴素聚集3.Group by聚集3.1 哈希聚集3.2 分组聚集 0.简介 聚合算子在聚合函数在数据分析、报告生成和统计计算中扮演着重要角色,通过对多行数据进行计算,将多个输入值压缩为单一输出值,如求和、平均值、计数等。…

    【RS】OneRec快手-生成式推荐模型

    note 本文提出了一种名为 OneRec 的统一生成式推荐框架,旨在替代传统的多阶段排序策略,通过一个端到端的生成模型直接生成推荐结果。OneRec 的主要贡献包括: 编码器-解码器结构:采用稀疏混合专家(MoE)架构…

    mac安装navicat及使用

    0.删除旧的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…

    【HTML】二、列表、表格

    文章目录 1、列表1.1 无序列表1.2 有序列表1.3 定义列表 2、表格2.1 定义2.2 表格结构标签2.3 合并单元格 1、列表 列表分为: 无序列表有序列表定义列表:一个标题下有多个小分类 1.1 无序列表 ul嵌套li,ul是无序列表,li是列表…

    ​​​​​​​大语言模型安全风险分析及相关解决方案

    大语言模型的安全风险可以从多个维度进行分类。 从输入输出的角度来看,存在提示注入、不安全输出处理、恶意内容生成和幻觉错误等风险; 从数据层面来看,训练数据中毒、敏感信息泄露和模型反演攻击是主要威胁; 模型自身则面临拒绝服务和盗窃的风险; 供应链和插件的不安全引…

    windows平台的ffmpeg编译使用

    windows平台的ffmpeg编译使用 一、现状 本人使用libgdx开发galGame,发现扩展包gdx-video不支持mp4,不能忍,正好看到官网有支持自定义编译的文档,所以操作一下,自定义编译。本文重点在于操作windows平台,linux平台太简单了。 整个过程包括如下几个步骤。 二、代码下载…

    FFMPEG录制远程监控摄像头MP4

    手绘效果图 上图是录制功能的HTML前端页面,录制功能和解码视频放在一起。录制功能关键是录制(开始录制按钮)、停止录像按钮。当点击“录制”的时候则会开始录制MP4文件, 当点击停止的时候就会停止录制MP4。经过录制后,则会生成MP4,并放到我的RV1126的/tm…

    centos操作系统上传和下载百度网盘内容

    探序基因 整理 进入百度网盘官网百度网盘 客户端下载 下载linux的rpm格式的安装包 在linux命令行中输入:rpm -ivh baidunetdisk_4.17.7_x86_64.rpm 出现报错: 错误:依赖检测失败: libXScrnSaver 被 baidunetdisk-4.17.7-1.x8…

    Rubick:基于 Electron 的开源插件化桌面效率工具箱

    Rubick 是一款基于 Electron 构建的开源桌面工具箱,专为追求高效办公和个性化体验的用户设计。它通过自由集成丰富的插件,让用户能够根据自己的需求打造极致的桌面端效率工具。 软件命名由来Rubick 的名字来源于《DOTA2》中的英雄 Rubick(拉…

    ruoyi-vue部署

    ruoyi源码类型 Ruoyi源码 编译打包后,直接部署tomcat服务器 Ruoyi-vue 前后端分离版 前端部署到nginx 后端部署到tomcat RuoYi-Cloud 微服务版 RuoYi-app 移动端版 RuoYi-vue 前后端分离版 环境 JDK>=1.8 MySQL >= 5.7 Maven >= 3.0 Node >= 12 Redis…