初识网络(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这个程序,进行解析应用层数据报。

 总结一下:

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

注意:

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

结束语:

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

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

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

相关文章

通向架构师的道路之weblogic与apache的整合与调优

一、BEAWeblogic的历史 BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 开发、集成、部署和管理之中。 BEA WebLogic Server拥有处理关键Web应…

迭代器模式(C++)

定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示。 应用场景 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代…

github 无语的问题,Host does not existfatal: Could not read from remote repository.

Unable to open connection: Host does not existfatal: Could not read from remote repository. image.png image.png image.png Please make sure you have the correct access rights and the repository exists. 如果github desktop和git pull 和git clone全部都出问题了&…

Elastic:linux设置elasticsearch、kibana开机自启

0. 引言 每次启动服务器都要手动启动es服务,相当之不方便,为此,书写一个脚本,实现es、kibana的开机自启 1. 原理 首先任何服务要实现开机自启,都可分为如下三步: 1、在/etc/init.d目录下创建启动、关闭服…

Namecheap 便宜域名注册使用,直接购买

FREENOM免费域名不能注册了,现在只能自己动手注册便宜的域名,前面我们也记录了不能注册FREENOM免费域名不能注册怎么办,不能注册FREENOM免费域名,怎么办,这里是解决方案! 注册6元域名。 现在我们又多了一个…

tomcat上部署jpress

一.确保有jdk,tomcat和mysql环境 二.新建jpress数据库,新建jpress用户并赋予所有权限 三.将jpress的war上传到tomcat/apache-tomcat-8.5.70/webapps,具体根据你的实际tomcat安装路径为准,上传完成后他会自己解包 四.到浏览器完…

LangChain手记 Overview

整理并翻译自DeepLearning.AILangChain的官方课程:Overview 综述(Overview) LangChain是为大模型应用开发设计的开源框架 LangChain目前提供Python和JavaScript(TypeScript)两种语言的包 LangChain的主攻方向是聚合和…

探讨|使用或不使用机器学习

动动发财的小手,点个赞吧! 机器学习擅长解决某些复杂问题,通常涉及特征和结果之间的困难关系,这些关系不能轻易地硬编码为启发式或 if-else 语句。然而,在决定 ML 是否是当前给定问题的良好解决方案时,有一…

【Renpy】设置选项不满足条件禁止选择

【要求】如果某个属性不满足某个要求,则无法选择这个选项。 【版本】Renpy 8.1.1 【实现】 1.在options.rpy文件中添加 define config.menu_include_disabled True 2.在选项中增加if条件。 menu:"Yes" if money > 20: ##如果money小于20这个选项…

Docker desktop使用配置

1. 下载安装 https://www.docker.com/ 官网下载并安装doker desktop 2. 配置镜像 (1)首先去阿里云网站上进行注册:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors (2)注册完成后搜索:容…

大数据技术之Hadoop(二)

目录 一、Hadoop的诞生 二、大数据概述 三、大数据软件生态 3.1 数据存储相关技术 3.2 数据计算相关技术 3.3 数据传输相关技术 四、什么是Hadoop 本篇主要讲解大数据的核心概念以及Hadoop的基本介绍。 一、Hadoop的诞生 大数据的发展与日益庞大的数据量是密不可分的。从…

Android 网络协议与网络编程

一、TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联 协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP 协议组成。协议采用了4层的层级结构。…

(15)Qt绘图(two)

目录 坐标变换 平移坐标轴 缩放坐标轴 旋转坐标轴 定时器加坐标轴旋转实现动画旋转 transform旋转(可设置旋转轴) 绕X轴旋转 绕Y轴旋转 绕Z轴旋转 错切 Y轴错切 X轴错切 画家的保存与坐标复原 基本图形绘制 绘制点 绘制线 绘制矩形 普…

carla中lka实现(一)

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

Python入门自学进阶-Web框架——38、redis、rabbitmq、git

缓存数据库redis: NoSQL(Not only SQL)泛指非关系型的数据库。为了解决大规模数据集合多重数据类的挑战。 NoSQL数据库的四大分类: 键值(Key-Value)存储数据库列存储数据库文档型数据库图形(…

STM32基础入门学习笔记:核心板 电路原理与驱动编程

文章目录: 一:LED灯操作 1.LED灯的点亮和熄灭 延迟闪烁 main.c led.c led.h BitAction枚举 2.LED呼吸灯(灯的强弱交替变化) main.c delay.c 3.按键控制LED灯 key.h key.c main.c 二:FLASH读写程序(有…

C语言预处理命令 #error 学习

#error命令是C/C语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。 如下代码输出数字1000,如果加了 #error,构建时不会通过,提示出错如下; 这可能在大型项目中比较有用&am…

Ubuntu 22.04安装和使用ROS1可行吗

可行。 测试结果 ROS1可以一直使用下去的,这一点不用担心。Ubuntu会一直维护的。 简要介绍 Debian发行版^_^ AI:在Ubuntu 22.04上安装ROS1是可行的,但需要注意ROS1对Ubuntu的支持只到20.04。因此,如果要在22.04上安装ROS1&am…

使用webpack插件webpack-dev-server 出现Cannot GET/的解决办法

问题描述 文档地址深入浅出webpack 使用 DevServer运行webpack,跑起来之后提示Cannot GET/: 解决方案: 查阅官方文档 根据目录结构修改对应的配置: 然后就可以成功访问:

帆软设计器报表加载不出折线图的原因

最近在用帆软设计器做可视化图表。偶有遇到因为数据集的字段类型导致加载不出折线,现记录如下。做报表的同行可以参考。 数据库使用了 Oracle 11g。数据集的 SQL 代码片是之前用在另一个单元格报表里面的。页面上有一个率是直接计算得出,我为了方便、就…