初识网络(JavaEE初阶系列9)

目录

前言:

1.网络的发展史

1.1独立模式

1.2网络互联

1.3局域网LAN

1.4广域网WAN

2.网络通信基础

2.1IP地址

2.2端口号

3.认识协议

3.1协议分层

3.2分层的作用

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

3.4OSI七层模型

3.5网络设备所在分层

4.封装和分用

结束语:


前言:

1.网络的发展史

网络的主要发展大体可以分为这四个阶段单机阶段=>局域网阶段=>广域网阶段=>移动互联网阶段

1.1独立模式

独立模式就是计算机之间是相互独立的。

1.2网络互联

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

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

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

根据网络互连的规模的不同,可以划分为局域网广域网。下面就来给大家介绍一下什么是局域网,什么是广域网。

1.3局域网LAN

局域网即Local Area Network,简称LAN。Local即标识了局域网是本地,局部组件的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网局域网和局域网之间在没有连接的情况下是无法进行通信。他就是把一些设备通过交换机/路由器连接起来。

1.4广域网WAN

广域网即Wide Area Network,简称为WAK,广域网就是把更多的局域网也相互连接起来,当规模足够大的时候就变成了广域网。更官方的解释就是通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都是属于其子网。

在上述谈到的交换机和路由器是组网过程中的重要设备。

2.网络通信基础

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

2.1IP地址

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说IP地址用于定位主机的网络地址。就像是我们发快递一样需要知道对方的收货地址,快递员才能将快递送到目的地。

格式:
IP地址是一个32位的二进制数,通常被分隔为4个“8位二进制数”(也就是4个字节),但是通常是用“点分十进制”的方式来表示的,比如:192.168.0.136的形式。或者是你可以打开cmd输入ipconfig命令即可查看。

IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

2.2端口号

上述的IP是定位大体的位置,但是就像是快递员送包裹一样虽然送到指定的地址也就是收货地址(IP地址)了,但是那么多的人,到底是送给哪一个人也就是收货人(端口号)的,这就需要继续定位了,所以这里的端口号就是用来定位是该主机上的哪一个程序(进程)的。

注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号!!!

3.认识协议

通过上述的介绍相信大家大体对IP和端口号都有了一定的了解,但是此时有了IP地址和端口号,我们是可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”,这里我们又该如何标识发送的数据是文本类型,及文本的编码格式呢?基于网络数据传输,就需要使用协议来规定双方的数据格式。

3.1协议分层

对于网络协议来说,往往分成几个层次进行定义。那么在网络通信中约定的协议其实是非常复杂的,那么面对这种复杂的环境,就需要一个复杂的协议,但是协议太复杂也不好,所以就将协议进行了分层,这就相当于是约定了层级和层级之间的调用关系,要求上层协议调用下层协议,下层协议给上层提供支持,不能跨层调用。怎么对这个进行理解呢?我们可以通过在公司中的层级关系来进行理解。如下图所示:

如上所示就是一种层级结构。 

3.2分层的作用

那么分层之后又有什么作用呢?

如果协议分层之后就可以做到一下两点:

  • 层次之间,耦合度比较低,上层协议不必了解下层的细节,下层也不必了解上层的细节。
  • 方便对某一层的协议进行替换。

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

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

TCP/IP通讯协议采用了5层的层级结构,分别是:物理层、数据链路层、网络层、传输层和应用层,每一层都有自己的任务和责任,通过不同层次之间的协调和合作,实现了计算机之间的数据传输。

具体内容如下所示:

  • 物理层:物理层是网络通信的最低层,主要负责将数字信号转换成物理信号,例如电信号、光信号等,然后通过物理介质(例如电缆、光纤等)进行传输。(网络通信的基础设施)
  • 数据链路层:数据链路层负责将物理层传输的数据进行分帧和差错检测,确保数据的可靠传输,同时也负责寻址和流量控制等功能。(主要关注的是两个相邻节点之间的传输)
  • 网络层:网络层主要负责数据的路由和转发,将数据包从源主机传输到目标主机,在路由选择方面,网络层采用了一些算法和协议,例如IP协议和路由选择协议等。(主要负责两个遥远节点之间,路径规划)
  • 传输层:传输层主要负责数据传输的可靠性和数据流量的控制。TCP协议是传输层协议的一种,它能够保证数据传输的可靠性,并且通过拥塞控制等机制,保证了网络流量的合理分配。(不考虑中间的路径,只关注起点和终点)
  • 应用层:引用层是网络通信的最高层,他负责实现应用程序之间的通信,常见的引用层协议包括HTTP、FTP、SMTP等,他们提供了数据交换的标准格式和规范,使得不同操作系统和应用程序之间能够进行数据的交换和共享。(关注传输过来的数据是要干啥的)

物理层针对于程序猿来说可能考虑的会比较少,所以很多时候也可以称之为TCP/IP四层模型。

3.4OSI七层模型

OSI参考模型与TCP/IP参考模型对比图如下所示:

3.5网络设备所在分层

  • 对于一台主机来说,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层。
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层。
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层。
  • 对于集线器,它只实现了物理层。

4.封装和分用

那么在协议的背景下,数据如何通过网络来进行传输呢?我们可以采用封装分用。主要的过程如下所示:

  • 发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装。
  • 接收方收到数据,要把数据从下到上,依次交给对应的层次的协议,进行解析。

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

分用:数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

下面我们通过QQ发送一条短信为例,来讲解封装和分用的整个过程,比如现在A要发送给B一条短信:“网络基础知识”。

封装:

  • 应用层(QQ应用程序):拿到上述用户数据进行封装,封装成应用层数据包。

  • 传输层:拿到上述传来的数据之后,应用层要调用传输层提供的API,来处理这个数据,传输层有很多协议,最典型的就是UDP和TCP,此处我们以UDP为例。(注:这两个协议小编会在后续的博客中给大家慢慢交代的)

UDP会针对上述数据包再进行封装,首先他会把上述整个应用层数据包作为UDP数据包的数据部分(载荷)。然后再在前面加上UDP数据报头。

  • 由传输层到网络层:UDP数据报已经有了,接下来就要把这个数据报交给网络层的协议。网络层最常见的就是IP协议。在上述的基础上还需要再加上一个IP协议的报头,此时是让整个UDP作为IP的载荷。

注意:这里的源IP和目的IP就是在这次传输过程中,最初的起点和终点。 

  • 网络层交给数据链路层:最典型的协议叫做以太网。这里是将上述的整体再次作为载荷然后在首部和尾部分别加上以太网帧头和以太网帧尾。

注意:这里的mac也是用来描述地址的,他叫做物理地址,IP是用来进行网络层的路径规划的,而mac是用来描述数据链路层的,他是描述两个即将进行传输的相邻节点。拿运输快递来举例子,如果快递的地址是从郑州->西安,那么IP地址的源IP就是郑州,而目的IP就是西安,是一直不变的,但是从浙江到西安还需要经过很多其他站点,比如说是郑州-> 洛阳 ->三门峡 -> 西安。所以这里的mac地址就相当于是每到一个站点就会更新一下自己的源mac和目的mac。

  • 数据链路层到物理层:此时物理层就要将上述的0101的二进制数据转换成光信号/电信号/电磁波信号然后进行传输。

分用:
经过上述的过程操作系统就帮助咱们已经封装好了,然后接下来就是接收了,接收与上述过程更好相反。发送是从上到下依次封装,新增报头。接收是从下到上,依次分用,去掉报头。

  • 物理层:

网卡,接收到高低电平二进制数据,就会对这里的信号进行解析,还原成0101这样的二进制序列。

  • 从物理层到数据链路层:

此时就把上述的0101这种序列数据当做一个以太网数据帧(此处是以太网线,收到的数据,就是要交给以太网协议来处理了)。

此时将帧头和帧尾去掉,取出中间的载荷部分,再往上交给网络层。此时以太网数据帧头中会有一个消息类型,根据这个类型就知道了网络层是IP协议了。

  • 从数据链路层到网络层: 

此时就由网络层的IP协议进行解析数据报,也是去掉IP报头,同时还会做一些其他工作,最重要的还是取出载荷,然后交给上层的传输层协议。在IP数据报也有一个字段会标识当前传输层用的是哪一个协议。

  • 从网络层到传输层:

此处是由UDP来解析处理,还是去掉报头,取出载荷,把数据交给应用层。此时借助端口号来区分具体的应用程序。

  • 从传输层到应用层:

 接下来就由QQ这个程序,进行解析应用层数据报。

 总结一下:

  • 发送方就是在层层封装,就像是在包装快递。
  • 接收方就是在层层分用,就像是在拆快递。

注意:

  • 不同的协议层对数据包有不同的称谓,在传输层叫做“段”,在网络层叫做“数据报”,在链路层叫做“帧”
  • 首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。
  • 上述里面的信息都是简单给大家举个例子,不是真的只包含这些东西,也不一定包含上述的信息。

结束语:

这节中小编主要是与大家分享了网络方面的一些基础知识,后期小编还会继续出有关于网络方面的知识的,希望这节对大家了解网络有一定帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)

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

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

相关文章

【JAVASE】继承

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 继承 1. 为什么要继承2. 继承概念3. 继承…

Linux笔记1(系统状态等)

man命令: man name: man section name: man -k regexp: 在 Linux 中,man 命令用于查看命令、函数或配置文件等的手册页,提供了详细的帮助文档。man 是 "manual" 的缩写。man 命令的用法如下: man [选项] [命令名]例如&…

单元测试之- mock工具mockito

常用的mock工具mockito 在编写单元测试时,需要mock依赖的对象,减少依赖对象对测试的影响,Mocktio是常用的mock工具之一,那么mockito提供了哪些功能呢? Mock对象的创建和配置:Mockito可以通过简单的语法创建…

DBeaver:Excel表格数据导入mysql数据库表内

1、准备Excel数据,并另存为 csv文件,编码格式为utf-8 2、打开DBeaver,选中要添加的表,右键-导入数据 这个时候表已经提前创建好了,字段也是一一对应 3、导入数据 第二步选中要导入的csv数据 第三步看一下表的映射关系是…

4G WWAN设备类型

WWAN设备类型 USB dongle是设备接入互联网的重要方式之一,典型的通过USB接口与主设备连接,然后主设备通过4G/5G接入互联网,作为移动宽带设备,它有那些设备类型及暴露方式呢? 移动宽带设备类型:ModemManage…

【Spring】(四)Bean 的作用域和生命周期

文章目录 前言一、Bean 的作用域1.1 被修改的 Bean 案例1.2 作用域的定义1.3 Bean 的六种作用域1.4 Bean 作用域的设置 二、Spring 的执行流程 和 Bean 的生命周期2.1 Spring 的执行流程2.2 Bean 的生命周期2.3 Bean 生命周期的演示 前言 Bean 是 Spring 框架中的一个核心概念…

集成学习:机器学习模型如何“博采众长”

前置概念 偏差 指模型的预测值与真实值之间的差异,它反映了模型的拟合能力。 方差 指模型在不同的训练集上产生的预测结果的差异,它反映了模型的稳定性。 方差和偏差对预测结果所造成的影响 在机器学习中,我们通常希望模型的偏差和方差都…

C高级第三讲

1、思维导图 2、输入一个文件名,判断是否为shell脚本文件,如果是脚本文件,判断是否有可执行权限,如果有可执行权限,运行文件,如果没有可执行权限,给文件添加可执行权限。 #!/bin/bash read -p …

【性能测试】性能数据采集工具nmon安装使用及报告参数含义详解

目录 nmon nmon下载 解压安装 启动 数据采集配置 生成图形结果 nmon报告中的参数含义 资料获取方法 nmon nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文…

c语言——求n之内的素数和

//求n之内的素数和 //列如&#xff1a;2、3、5等 #include<stdio.h> #include<math.h> int main() {int i,j,k,n0;scanf("%d",&n);for(i2;i<n;i){k(int)sqrt(i);for(j2;j<k;j)if(i%j0)break;if(j>k){printf("%d,",i);n;if(n%50)p…

《每天5分钟玩转kubernetes》读书笔记

笔记 概念 Pod是脆弱的&#xff0c;但应用是健壮的。 kubelet运行在Cluster所有节点上&#xff0c;负责启动Pod和容器。kubeadm用于初始化Cluster。kubectl是k8s命令行工具。通过kubectl可以部署和管理应用&#xff0c;查看各种资源&#xff0c;创建、删除和更新各种组件。 …

Python(六十六)字典生成式

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

VX-API-Gateway开源网关技术的使用记录

VX-API-Gateway开源网关技术的使用记录 官网地址 https://mirren.gitee.io/vx-api-gateway-doc/ VX-API-Gateway(以下称为VX-API)是基于Vert.x (java)开发的 API网关, 是一个分布式、全异步、高性能、可扩展、轻量级的可视化配置的API网关服务官网下载程序zip包 访问 https:/…

【100天精通python】Day26:文件和IO操作_文件指针的定位与移动,序列化与反序列化

目录 专栏导读 1 文件的基本操作 1.1 参考 1.2 获取文件属性&#xff1a; 2 定位和移动文件指针 3 序列化和反序列化 3.1 序列化与反序列化概述 3.2JSON序列化与反序列化 JSON序列化&#xff1a; JSON反序列化&#xff1a; 3.3 pickle 序列化与反序列化 pickle 序列…

【前端】鼠标事件计算与圆心形成的角度

在业务需求中&#xff0c;常常出现一些我们无法完成的效果图&#xff0c;这时需要UI切图给我们&#xff0c;而切图后不可避免的一些点击事件无法方便的监听 如该图圆环&#xff0c;其实是一张单独的图片&#xff0c;这种情况下只能通过js判断用户点击、拖动的鼠标位置&#xf…

carla中lka实现(一)

前言&#xff1a; 对于之前项目中工作内容进行总结&#xff0c;使用Carla中的车辆进行lka算法调试&#xff0c;整体技术路线&#xff1a; ①在Carla中生成车辆&#xff0c;并在车辆上搭载camera&#xff0c;通过camera采集图像数据&#xff1b; ②使用图像处理lka算法&#…

Docker-Compose编排与部署(lnmp实例)

第四阶段 时 间&#xff1a;2023年8月3日 参加人&#xff1a;全班人员 内 容&#xff1a; Docker-Compose编排与部署 目录 一、Docker Compose &#xff08;一&#xff09;概述 &#xff08;二&#xff09;Compose适用于所有环境&#xff1a; &#xff08;三&#xf…

Docker实战-操作Docker容器实战(二)

导语   上篇分享中,我们介绍了关于如何创建容器、如何启动容器、如何停止容器。这篇我们来分享一下如何操作容器。 如何进入容器 可以通过使用-d参数启动容器后会进入后台运行,用户无法查看容器中的信息,无法对容器中的信息进行操作。 这个时候如果我们需要进入容器对容器…

人脸识别场景下Faiss大规模向量检测性能测试评估分析

在前面的两篇博文中&#xff0c;主要是考虑基于之前以往的人脸识别项目经历结合最近使用到的faiss来构建更加高效的检索系统&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《基于facenetfaiss开发构建人脸识别系统》 Facenet算法的优点&#xff1a;高准确率&#…

HTTP隧道识别与防御:机器学习的解决方案

随着互联网的快速发展&#xff0c;HTTP代理爬虫已成为数据采集的重要工具。然而&#xff0c;随之而来的是恶意爬虫对网络安全和数据隐私的威胁。为了更好地保护网络环境和用户数据&#xff0c;我们进行了基于机器学习的HTTP代理爬虫识别与防御的研究。以增强对HTTP代理爬虫的识…