JavaEE-网络初识

文章目录

  • 一、网络背景
    • 1.1 起源
    • 1.2 国内网络的发展
  • 二、关键概念
    • 2.1 网络
    • 2.2 设备
    • 2.3 ip地址与端口号
  • 三、协议
    • 3.1 协议分层
    • 3.2 OSI七层模型
    • 3.3 TCP/IP五层模型
    • 3.4 数据传输过程的简单叙述


一、网络背景

1.1 起源

在国外大概时上世纪70年代左右,网络就出现了,最初是军用,后面开始民用。那时世界最大的格局就是美苏争霸(冷战)并且人类已经解锁了核武器这种大杀器,一旦核战争打起来就又可能是灭国之战,甚至是灭世之战。
假如美国要打苏联,美国肯定希望它核弹投过去之后,能够直接把对方打得瘫痪掉,无法还手,一旦苏联有还手之力那么就会反过来丢一波核弹,两败俱伤~~
当时的科学家就在研究,希望能够有这样的一种通信网络,即使遭受核打击也能正常工作,从而完成反击,在这个背景下,互联网就诞生了,一个不怕核打击的系统。
为什么不怕核打击,主要就体现在网络冗余的特性上。你打掉一部分网络,我还要通路进行通信。
在这里插入图片描述

1.2 国内网络的发展

国内网络的发展可以从网吧或者说游戏的兴衰史中窥得一二。上个世纪刚建国之后一穷二白,到了90年代电脑都是稀罕物更别提网络。
到了90年代末生活中逐渐出现了CS、极品飞车、大航海时代、三国群英传等单机游戏。
到了21世纪初网吧开始兴起,出现了星际争霸、红色警戒、魔兽争霸、流星蝴蝶剑等游戏,这些游戏能够支持局域网的对战。
随着时间的推移,一个神奇的游戏登场了,拉开了新时代的序幕,那就是传奇。这个游戏能够支持广域网对战,有很多的公司、网吧等越来越多的设备都连在一起构成一个非常大规模的网络,甚至大到城市与城市之间,国家与国家之间。魔兽世界、完美世界、天龙八部等游戏纷纷兴起,它们的共同特点都是广域网对战,2000~2010 年左右也是网页最辉煌的十年。
时间进一步推移来到2007年,乔布斯发布了初代iPhone,标志着移动互联网的时代开始了。直到几年后的2012年iPhone4登场,安卓登场(三星、小米…),移动互联网真的开始蓬勃发展了。游戏的发展也开始更换路线,朝着手游的方向发展了。

二、关键概念

2.1 网络

网络分为局域网和广域网,两者没有绝对的界限,范围小的就是局域网,范围大的就是广域网。全世界最大的广域网就叫做The Internet也就是万维网。

2.2 设备

(1)主机
就是上网的设备,可以是手机也可以是电脑,现在还有一些其它设备类型也可以上网。
(2)路由器与交换机
路由器与交换机都是用来组建网络的重要设备,路由器工作在网络层,交换机工作在数据链路层。
路由器上有不同的接口,分为wan口和lan口,lan口连接本局域网的主机或设备,wan口用于连接相邻局域网的lan口,如果说路由器lan口连接了相邻路由器lan口并且将路由器设为桥接模式,那么这两个相邻的局域网就构成了一个局域网。
交换机的作用比路由器更纯粹,它就是为了提供更多的口供主机连接。

2.3 ip地址与端口号

ip地址是用来表示网络中的一个设备的位置,可以通过ip地址找到设备从而进行进一步的通信。对于ip其实是32位的整数也就是4个字节的数字(ipv4),但是往往是通过点分十进制来表示的,就是每8个字节使用.符号分割,然后每一部分的数字都使用十进制表示。就类似下图这种。
在这里插入图片描述
ip地址用来表示网络中的设备,端口号则是用来标识一个设备上的程序,每个设备上的程序启动时都会关联上一个不重复的端口号,也可以叫做绑定。
有些程序是有固定的端口号的,主要是上古时期一些大佬为了避免发生端口的冲突,就给一些知名的程序分配了不同的端口号。例如http服务器对应80、ssh服务器对应22等等这些知名端口号一共分配了1024个。随着时间的发展,这些知名的端口号不再是约束,反而更多的是建议,比如说你要搞一个http服务器你也可以不绑定80.

三、协议

听起来很抽象,其实也是一个比较简单的概念。协议就是一种约定,是通信双方对于通信规则的约定,一定是通信双方都认可的。听起来协议和标准很相似,其实肯定还是不一样的,稍微想一下就知道标准认可面是很广的,往往听到的都是一些国家标准等等,协议的认可面则是可大可小。

3.1 协议分层

网络通信是一个非常复杂的事情,如果你只使用一个协议来约定所有细节,那么这个协议就会变得非常庞大非常复杂,所以就要对协议进行拆分,把一个功能复杂的协议拆分成多个功能更单一的协议了。
但是拆分出来的协议太多了,因此就要对这些协议进行分类甚至是分层。 协议分层就是将多种协议按照功能分为不同的层级,每个层级都有对应的主线任务,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。
分层的好处主要有两点,第一点就是达到一种封装的效果,某一层的协议不需要去了解其它层的细节。第二点就是任意层的协议都是可以灵活替换的,达到解耦合的效果。

3.2 OSI七层模型

这个模型只存在于教科书当中,实际上现实世界中是不存在的,原因之一应该就是层数多,搞得有点复杂了。

3.3 TCP/IP五层模型

可以认为TCP/IP是OSI七层模型的简化版本,是现实世界采用的网络分层模型,目前咱们接触到的网络大部分都是使用五层模型的(电脑上网)。当然也有不是的,4G/5G就是另一套专门的模型协议(手机流量上网)。
关于五层协议究竟是哪五层?
(1)物理层
硬件上的相关约定。例如网线、网口…
(2)数据链路层
关注的是通信过程中两个相邻节点之间的通信。
(3)网络层
关注的通信过程中对于通信路径的规划,规划出的路径就决定了要经过哪些节点,也就是“点到点的传输”。
(4)传输层
关注的是通信双方的起点和终点,也就是“端到端的传输”。
(5)应用层
和具体的应用程序有关,传输的数据是干啥的,有啥意义…
这五层要牢牢记住。有人会把五层叫成四层,也可以,没算物理层就是四层,算了就是五层。另外OSI七层模型比五层多了 表示层和会话层,实际上五层就是将这多出来的两层一起合并到了应用层。

3.4 数据传输过程的简单叙述

假如A通过QQ发送hello world给B,应用层就会将hello world组织成应用层数据包。
然后通过系统调用api将数据交给传输层,传输层对数据进行进一步封装构成传输层数据包,传输层有两个协议分别位tcp和udp,这里假设使用的实际udp那么封装的传输层数据包就是udp数据包。之后再将udp数据包交给网络层(通过系统内核调用api)。
在这里插入图片描述

网络层典型的协议就是IP协议,会将udp数据包封装成ip数据包后交给数据链路层。

在这里插入图片描述
数据链路层典型的协议就是以太网协议,电脑通过有线网传输数据走的就是以太网协议。以太网也有自己的数据包格式,将ip数据包进一步封装成以太网数据帧。上述数据已经进入网卡驱动中了,下一步就是真正发送出去了。
在这里插入图片描述
数据包到达物理层之后就通过硬件设备将上述的二进制数据转化为光信号/电信号/电磁波进行发射。
上述层层包装数据,不停添加包头的过程就叫做封装。
上述数据发射出去并非直接到达B,而是先到和A连接的路由器/交换机,数据经过路由器/交换机一系列转发之后,最终到达B。当数据到达B之后要做的事就是封装的逆过程分用。
B的物理层先将电或者光信号转为二进制数据传给数据链路层,链路层再按照以太网协议对以太网数据帧进行拆分,将解析出来的载荷部分也就是ip数据包交给网络层。网络层拿到之后进一步拆分出载荷也就是udp数据包交给传输层。传输层收到后继续拆分出载荷,将载荷也就是应用层数据包交给应用层。QQ程序拿到了应用层数据包就按照自己的协议格式来进行解析,拿到结构化数据后显示到界面上。这样的将数据一层层拆分,封装的逆过程就叫做分用。
实际上A和B之间的路由器和交换机上也进行了封装和分用,只不过路由器封装分用到网络层就知道下一步如何转发数据(工作在网络层),交换机封装分用到数据链路层就知道下一步如何转发数据(工作在数据链路层)。

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

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

相关文章

项目集成SkyWalking,基于k8s搭建

一、搭建SkyWalking 官方文档(英文):skywalking/docs at master apache/skywalking 中文可以使用:GitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache…

【LeetCode:496. 下一个更大元素 I + 单调栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

深度学习——图像分类(CNN)—训练模型

训练模型 1.导入必要的库2.定义超参数3.读取训练和测试标签CSV文件4.确保标签是字符串类型5.显示两个数据框的前几行以了解它们的结构6.定义图像处理参数7.创建图像数据生成器8.设置目录路径9.创建训练和验证数据生成器10.构建模型11.编译模型12.训练模型并收集历史13.绘制损失…

【AD21】PCB板尺寸与层名称标注

PCB绘制完成后,需要给上级或生产制造商发送输出文件,输出文件中包含板尺寸标识和层标识可以方便工作的交接。 1. 板尺寸标识 首先板尺寸标识所在的层要在与板框不同的机械层,这里我选择机械5层。 点击放置->尺寸->线性尺寸 这里板尺…

微信小程序uniapp+django洗脚按摩足浴城消费系统springboot

原生wxml开发对Node、预编译器、webpack支持不好,影响开发效率和工程构建。所以都会用uniapp框架开发 前后端分离,后端给接口和API文档,注重前端,接近原生系统 使用Navicat或者其它工具,在mysql中创建对应名称的数据库&#xff0…

利用大模型构造数据集,并微调大模型

一、前言 目前大模型的微调方法有很多,而且大多可以在消费级显卡上进行,每个人都可以在自己的电脑上微调自己的大模型。 但是在微调时我们时常面对一个问题,就是数据集问题。网络上有许多开源数据集,但是很多时候我们并不想用这…

Gerchberg-Saxton (GS) 和混合输入输出(Hybrid Input-Output, HIO)算法

文章目录 1. 简介2. 算法描述3. 混合输入输出(Hybrid Input-Output, HIO)算法3.1 HIO算法步骤3.2 HIO算法的优势3.3 算法描述 4. 算法实现与对比5. 总结参考文献 1. 简介 Gerchberg-Saxton (GS) 算法是一种常用于相位恢复和光学成像的迭代算法。该算法最…

【抽代复习笔记】18-置换练习题(2)及两个重要定理

最近一直忙于学校的事情,好久没更新了,实在抱歉。接下来几期大概也会更得慢一些,望见谅。 练习4:写出4次对称群S4中所有置换。 解:由上一篇笔记结尾的定理我们知道,4次对称群的阶(也就是所含元…

JSON的序列化与反序列化以及VSCode执行Run Code 报错

JSON JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式。 JSON格式 { "name":"金苹果", "info":"种苹果" } 一个对象:由一个大括号表示.括号中通过键值对来描述对象的属性 (可以理解为, 大…

2024年 电工杯 (A题)大学生数学建模挑战赛 | 园区微电网风光储协调优化配置 | 数学建模完整代码解析

DeepVisionary 每日深度学习前沿科技推送&顶会论文&数学建模与科技信息前沿资讯分享,与你一起了解前沿科技知识! 本次DeepVisionary带来的是电工杯的详细解读: 完整内容可以在文章末尾全文免费领取&阅读! 问题重述…

MVS net笔记和理解

文章目录 传统的方法有什么缺陷吗?MVSnet深度的预估 传统的方法有什么缺陷吗? 传统的mvs算法它对图像的光照要求相对较高,但是在实际中要保证照片的光照效果很好是很难的。所以传统算法对镜面反射,白墙这种的重建效果就比较差。 …

【Python自动化测试】:Unittest单元测试与HTMLTestRunner自动生成测试用例的好帮手

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀unittest编写测试用例🚀unittest测…

【408精华知识】Cache类题目解题套路大揭秘

有关Cache的题目,需要理解Cache的工作原理,也即给出一个地址,要知道如何在Cache中寻找或者如何将其从主存中复制入Cache,同时理解Cache中具体是如何存储的,包含三种存储方式,分别是直接映射、全相联映射、组…

clion/pycharm 安装中文

楼主版本 2024.1 mac 操作系统,理论上不同版本和不同操作系统操作应该大同小异 首先找到插件的位置 方式一 1、进入工程,右上角找到设置 2、找到插件(欢迎界面也能找到这个) 方式二 在欢迎界面找到插件 最后 插件商店搜索 l…

矩阵乘法不满足交换律-反证法

假定有2个矩阵A和B A*B 不等于 B*A 手写证明: A*B为 B*A为 由此可以看出,矩阵乘法不满足交换律!!

Python | Leetcode Python题解之第100题相同的树

题目: 题解: class Solution:def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:if not p and not q:return Trueif not p or not q:return Falsequeue1 collections.deque([p])queue2 collections.deque([q])while queue1 and queue2:node…

centos7和centos8安装mysql5.6 5.7 8.0

https://dev.mysql.com/downloads/repo/yum/ 注意构造下http://repo.mysql.com/mysql-community-release-el*-*.noarch.rpm 【以centos7为例】 安装mysql5.6 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5…

初识Qt:从Hello world到对象树的深度解析

Qt中的对象树深度解析 Hello world1.图形化界面创建命令行式创建在栈上创建在堆上创建为什么传文本需要QString,std::string不行吗?那为什么要传入this指针?为什么new后不用显示调用delete函数呢,不会造成内存泄漏问题吗&#xff…

国产操作系统上使用SQLynx连接数据库 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上使用SQLynx连接数据库 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天我们将探讨如何在国产操作系统上使用SQLynx。这是一款功能强大的数据库管理工具,可以帮助用户高效地管理和操作数据库。本文将详细介绍…

2024 电工杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路! 作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解…