Java EE 网络之网络初识

文章目录

  • 1. 网络发展史
    • 1.1 独立模式
    • 1.2 网络互连
    • 1.3 局域网 LAN
    • 1.4 广域网 WAN
  • 2. 网络通信基础
    • 2.1 IP 地址
    • 2.2 端口号
    • 2.3 认识协议
    • 2.4 五元组
    • 2.5 协议分层
      • 2.5.1 什么是协议分层
      • 2.5.2 分层的作用
      • 2.5.3 OSI七层协议
      • 2.5.4 TCP/IP五层协议
      • 2.5.5 网络设备所在分层
    • 2.6 分装和分用

1. 网络发展史

1.1 独立模式

独立模式:计算机之间相互独立

1.2 网络互连

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

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

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

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

1.3 局域网 LAN

局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的⼀种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:
1)基于网线直连
2)基于集线器组建
3)基于交换机组建
4)基于交换机和路由器组建

1.4 广域网 WAN

广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很⼤范围的网络,就形成了广域网。
广域网内部的局域网都属于其子网。

2. 网络通信基础

网络互联的目的是进行网络通信,也是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据

那么,在组建的网络中,如何砍断到底是从那太主机传来的呢?

接下来我们就认识一下通信的基础知识

2.1 IP 地址

概念:
IP 地址,描述了一个设备,在网络上的地址
简单说,IP地址用于定位主机的⽹络地址


格式:

IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节)
如 01100100.00000100.00000101.00000110

通常⽤“点分⼗进制”的⽅式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的⼗进制整数)
如:100.4.5.6

2.2 端口号

概念:
在网络通信中,IP地址⽤于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。

简单说:端口号⽤于区分知己上不同的应用程序


格式:
端口号是0~65535范围的数字(两个字节),在网络通信中,进程可以通过绑定⼀个端口号,来发送及接收网络数据

不同的程序就可以关联/绑定到不同的端口号
一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口


0 一般不使用

1 - 1023 这个范围的端口,系统留作特殊用途,我们一般写的长须不应该占用
这是知名端口号,留给一些比较创建的服务器程序使用
22 -> ssh
23 -> telnet
80 -> http
443 -> https


实际的通信过程中,IP 的 端口 往往是“一对”

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

在这里插入图片描述

2.3 认识协议

网络 本质是通过 光/电 信号来传输数据
比如,低电平表示 1,高电平表示 0;高平光信号表示 1,低频光信号表示 0

协议就是一种约定,约定了通信双方按照啥样的方式来传递数据

协议,就只是单纯的约定,并不会很复杂的
由于网络通信的世界中,遇到的场景/问题往往比较棘手,确实有一些网络协议是比较复杂的

2.4 五元组

五元组是一次通信过程中必不可少的信息

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识⽬的主机
  4. 目的端口号:标识⽬的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双⽅约定的数据格式

2.5 协议分层

2.5.1 什么是协议分层

在平时写代码中,如果一个代码越写越多,越写越复杂,往往需要把代码给拆分成多个部分

拆分之后能够更好的理解

网络通信的场景会比较复杂,有很多问题需要通过协议来进行解决
如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大,非常复杂就不利于人们去学习和理解.
相比之下,也可以把大的协议,拆分成多个小的协议,让每个小的协议只专注于做一小块事情
使每个小的协议,都不会太复杂 ( 化繁为简 )

由于网络通信实在太复杂,拆分就拆出来太多的小的协议,这么多小的协议也就不好管理了,就需要对协议进行分层了

所谓分层,就是按照协议的定位/作用 进行分类
并且约定了不同层次之间的“调用关系”
“上层协议,调用下层协议”
“下层协议给上层协议提供支持”
此时,这么多协议就不容易混乱


2.5.2 分层的作用

  1. 协议分层之后,上层和下层 彼此之间就进行了封装
    使用上层协议,不必过多关注下层
    使用下层协议,不必过多关注上层
    大大降低了使用者的使用成本
    在这里插入图片描述
  2. 每一层协议都可以根据需要灵活替换
    在这里插入图片描述

2.5.3 OSI七层协议

仅仅出现在教科书中
OSI:即Open System Interconnection,开放系统互连
• OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层
• OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输
在这里插入图片描述
在这里插入图片描述

2.5.4 TCP/IP五层协议

是 OSI 七层模型的简化版本
在这里插入图片描述
下面四层叫法可能有差异,但是具体还是一样的

  1. 物理层:描述的是网络通信的硬件设备
    好比 基础设施:公路、铁路
    比如使用的网线,光纤是什么规格
  2. 数据链路层:两个相邻节点之间的数据传输情况
  3. 网络层:进行路径规划
  4. 传输层:关注起点和终点
  5. 应用层:应用程序 如何使用这个数据(程序员最需要关注的一点)

有些资料会说“TCP/IP 四层协议”
是因为这里没有算物理层
(物理层偏硬件,我们大部分关注的是软件)


在这里插入图片描述
在这图的侧面,是这五层在操作系统中的应用

  1. 应用层,就是对应到应用程序(我们代码写的软件)
  2. 操作系统的内核(传输层和网络层)
    这里的内容是线程的,不需要手动写
  3. 驱动程序 + 硬件

2.5.5 网络设备所在分层

• 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
• 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层
• 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
(交换机的作用,是针对路由器的端口进行扩展,路由器上的端口可能有限,不够用)
• 对于集线器,它只实现了物理层
(在物理层,把网线一分为二)

注意 我们这⾥说的是传统意义上的交换机和路由器,也称为⼆层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)

随着现在⽹络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器
甚至说一些高端的交换机,也有路由器公共
另一方面,路由器见换机可能还会支持一些更复杂的操作,甚至可能会在传输层或者应用层

2.6 分装和分用

分装和分用,描述了网络通信过程中,基本的数据传输流程


举个栗子:
考虑 A 通过 QQ 把 hello 传递给 B

发送方:

  1. 应用层
    QQ 应用程序,QQ 就会把用户输入的“hello”,打包成一个应用层的数据报(这个数据报的格式,只有QQ 的程序员知道)
    假如:
    在这里插入图片描述
    在这里插入图片描述
    这四个字段,使用‘,’来分割
    这里就构成了一个简单的应用层数据报(字符串拼接)
    上述描述的规则,就是此处我们约定的应用层协议
    具体是用几个字段,字段的顺序如何,使用什么符号分隔
    都是可以灵活调整的.
    (应用层协议,往往是根据具体的场景,具体的需要,由程序员自主决定的)
    这样就可以把应用层数据报,通过操作系统的 api ,把数据交个 传输层
  2. 传输层
    就要对刚才的应用层数据,在进行打包,编程传输层的数据报
    这里的打包过程,本质上还是“字符串拼接”
    把刚才的应用层数据,基础上拼接上传输层的报头
    (传输层典型的协议,TCP,UDP)
    在这里插入图片描述
    一个数据报 = 报头 + 载荷(也是字符串的拼接)
    UDP 报头其实是一组二进制数据
    UDP 报头中最关键的信息就是“源端口” 和 “目的端口
    进行封装的过程,就是给数据增加更多的“辅助信息”的过程
    传输层数据报搞好了之后,这个数据又会进一步的交给网络层
  3. 网络层
    网络层最重要的协议,是 IP 协议
    在这里插入图片描述
    IP 报头里面包含很多重要的属性,其中最重要的属性就是 源 IP 和 目的 IP
    网络层的数据打包好了之后,继续把数据交给“数据链路层”再来进一步打包
  4. 数据链路层
    最重要的是 以太网
    在这里插入图片描述
    以太网报头中,包含的最重要的信息就是 源 mac 地址,目的 mac 地址
    这两个地址也是用来描述一个设备在网络上的地址的
    再把这个数据交给物理层
  5. 物理层
    把上述数据,转换成 2 进制 的 0 1 序列
    通过光信号/电信号进行传输

从上层协议到下层协议,层层给数据报添加报头
这个过程称为:封装

数据发送出去之后,就会经过一系列的交换机和路由器进行转发
A 和 B 一般来说不是直接网线连接的,中间还要经过很多的交换机/路由器设备进行转发

当数据到达 B 这里之后,B 就要针对上述数据进行“分用”
(针对上述数据进行层层的解析)

接收方:

  1. 物理层
    拿到光电信号 之后 转化为二进制数据,进一步得到以太网数据报
    这个数据要交给数据链路层对应的协议处理

  2. 数据链路层
    通过以太网协议,针对以太网数据报进行解析
    这个解析过程就会解析出 报头 和 报尾,以及中间的载荷
    把载荷部分,进一步的再交给网络层的协议来处理
    在这里插入图片描述

  3. 网络层
    IP 协议,再进一步的准对网络层数据报进行解析,去掉报头,拿到载荷,再进一把载荷数据交个上层(传输层)
    在这里插入图片描述

  4. 传输层
    此处使用 UDP 协议,针对这个数据报进行解析,拿到载荷,去掉报头,把载荷数据进一步的交给上层(应用层)
    根据端口号来区分把数据交个哪个应用程序
    在这里插入图片描述

  5. 应用层
    把上述数据根据端口号,交给 QQ 这个程序
    在这里插入图片描述
    QQ 这个程序就要进一步解析这里的数据,这个解析过程也就是按照前面程序员自定义的应用层协议来展开的
    此时,取出 hello 最终显示到界面上即可

数据报在网络中间还会经历一定的转发过程

如果经过路由器:就会封装分用到网络层
路由器解析到网络层,拿到 IP 地址,决定进一步如何传输
下一步传输的时候,又会重新经过网络层,数据链路层和物理层的封装

如果经过交换机:就会封装分用到数据链路层

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

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

相关文章

简单的教务系统

#include <stdio.h> #include <string.h> #define N 20 int i,j,n,m,lll0,renshu6; double zcj[N]{0};struct stu{ char num[10]; //学号char name[10]; //姓名char sex; //姓别double score[3]; //3 门课的成绩double sum; //3 门课的总分double aver; //3 门课的…

【深度学习目标检测】五、基于深度学习的安全帽识别(python,目标检测)

深度学习目标检测方法则是利用深度神经网络模型进行目标检测&#xff0c;主要有以下几种&#xff1a; R-CNN系列&#xff1a;包括R-CNN、Fast R-CNN、Faster R-CNN等&#xff0c;通过候选区域法生成候选目标区域&#xff0c;然后使用卷积神经网络提取特征&#xff0c;并通过分类…

超聚变服务器(原华为服务器)网站模拟器

一、超聚变服务器&#xff08;原华为服务器&#xff09;网站模拟器&#xff1a; 原来了解服务器可以从他的网站上进行了解&#xff0c;模拟器做的很好了。 https://support.xfusion.com/server-simulators/ 有很多的模拟器&#xff0c;今天主要看下BMC的设置 有很多的在线工具…

vue中element-ui日期选择组件el-date-picker 清空所选时间,会将model绑定的值设置为null 问题 及 限制起止日期范围

一、问题 在Vue中使用Element UI的日期选择组件 <el-date-picker>&#xff0c;当你清空所选时间时&#xff0c;组件会将绑定的 v-model 值设置为 null。这是日期选择器的预设行为&#xff0c;它将清空所选日期后将其视为 null。但有时后端不允许日期传空。 因此&#xff…

生产实践:基于K8S的私有化部署解决方案

随着国内数字化转型的加速和国产化进程推动&#xff0c;软件系统的私有化部署已经成为非常热门的话题&#xff0c;因为私有化部署赋予了企业更大的灵活和控制权&#xff0c;使其可以根据自身需求和安全要求定制和管理软件系统。下面分享下我们的基于k8S私有化部署经验。 私有化…

AR眼镜光学方案_AR眼镜整机硬件定制

增强现实(Augmented Reality&#xff0c;AR)技术通过将计算机生成的虚拟物体或其他信息叠加到真实世界中&#xff0c;实现对现实的增强。AR眼镜作为实现AR技术的重要设备&#xff0c;具备虚实结合、实时交互的特点。为了实现透视效果&#xff0c;AR眼镜需要同时显示真实的外部世…

【WebRTC】用WebRTC做即时视频聊天应用

【配套项目源码】 打开即用,设置一个免费的Agora账户就可以实现视频电话。非常好的WebRTC学习和应用项目。 用VSCode打开即可。 https://download.csdn.net/download/weixin_41697242/88630069 【什么是WebRTC?】 WebRTC是一套基于JS的API,能够建立端对端的直接通信,实…

服务器上配置jupyter,提示Invalid credentials如何解决

我是按照网上教程在服务器上安装的jupyter以及进行的密码配置&#xff0c;我利用 passwd()这个口令生成的转译密码是"argon...."。按照教程配置jupyter notebook配置文件里面的内容&#xff0c;登陆网页提示"Invalid credentials"。我谷歌得到的解答是&…

如何学习Kubernetes,学习K8S入门教程

学习 Kubernetes&#xff08;K8s&#xff09;确实不容易 你的硬件资源有限时&#xff0c;不过别担心&#xff0c;我帮你理清思路&#xff0c;让你在学习 K8s 的路上更加从容。 1、资源限制下的学习方法 当硬件资源有限时&#xff0c;一个好的选择是使用云服务提供的免费层或者…

✺ch2——OpenGL图像管线

目录 基于C图形应用&#xff06;管线概览OpenGL类型第一个C/OpenGL应用程序◍API (1) GLSL类型着色器——画一个点的程序◍API (2)◍API (3) 栅格化像素操作——Z-buffer算法检测 OpenGL 和 GLSL 错误◍API (4) 从顶点来构建一个三角形场景动画◍API (5) OpenGL某些方面的数值—…

蓝牙物联网智慧物业解决方案

蓝牙物联网智慧物业解决方案是一种利用蓝牙技术来提高物业管理和服务效率的解决方案。它通过将蓝牙技术与其他智能设备、应用程序和云服务相结合&#xff0c;为物业管理和服务提供更便捷、高效和智能化的支持。 蓝牙物联网智慧物业解决方案包括&#xff1a; 1、设备管理&#…

【Qt QML入门】TextInput

TextInput&#xff1a;单行文本输入框。 TextInput除了光标和文本外&#xff0c;默认没有边框等效果。 import QtQuick import QtQuick.Window import QtQuick.ControlsWindow {id: winwidth: 800height: 600visible: truetitle: qsTr("Hello World")//单行文本输…

Vue2.x源码:new Vue()做了啥

例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…

C_11练习题答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 以下叙述中正确的是(C)A.C语言不是一种高级语言 B.C语言不用编译就能被计算机执行 C.C语言能够直接访问物理地址和进行位…

计算机设计大赛信息可视化设计的获奖经验剖析解读—基于本专栏文章助力4C大赛【全网最全万字攻略-获奖必读】

文章目录 一.中国大学生计算机设计大赛1.1赛道解读1.2 信息可视化设计小类介绍1.2 小类区别解读 二.信息可视化设计赛道获奖经验2.1 四小类作品预览2.1.1 数据可视化小类-优秀参赛作品展览2.1.2 信息图形设计小类-优秀参赛作品展览2.1.3 动态信息影像&#xff08;MG动画&#x…

css3 clip-path剪切图片

大致看了一下&#xff0c;反正以后用到就慢慢调吧 剪切四个角 clip-path: polygon(14px 0, calc(100% - 14px) 0, 100% 14px, 100% calc(100% - 14px), calc(100% - 14px) 100%, 14px 100%, 0 calc(100% - 14px), 0 14px); 三角形 clip-path: polygon(50% 0,0 100%, 100% 100…

ShardingSphere数据分片之读写分离

1、概述 读写分离是一种常见的数据库架构&#xff0c;它将数据库分为主从库&#xff0c;一个主库&#xff08;Master&#xff09;用于写数据&#xff0c;多个从库&#xff08;Slave&#xff09;进行轮询读取数据的过程。主从库之间通过某种通讯机制进行数据的同步。 所以&…

【视觉SLAM十四讲学习笔记】第四讲——李代数求导与扰动模型

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角 【视觉SLAM十四讲学习笔记】第三讲——四元…

《PCL多线程加速处理》-滤波-统计滤波

《PCL多线程加速处理》-滤波-统计滤波 一、效果展示二、实现方式三、代码一、效果展示 提升速度随着点云越多效果越明显 二、实现方式 1、原始的统计滤波实现方式 #include <pcl/filters/statistical_outlier_removal.h>pcl::PointCloud<pcl::PointXYZ

pr模板哪个网站好?免费Pr模板视频素材下载网站 Prmuban.com

pr模板哪个网站好&#xff1f;哪里可以下载免费的pr模板视频素材&#xff0c;PR模板网&#xff08;Prmuban.com&#xff09;影视后期制作模板视频剪辑素材资源网站。 包含PR模板、PR插件、PR预设、MOGRT、LUT、转场特效、音乐素材、音效素材等&#xff0c;更好的剪辑师必备资源…