JavaEE-网络初识

news2024/11/19 7:27:35

文章目录

  • 一、网络背景
    • 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之间的路由器和交换机上也进行了封装和分用,只不过路由器封装分用到网络层就知道下一步如何转发数据(工作在网络层),交换机封装分用到数据链路层就知道下一步如何转发数据(工作在数据链路层)。

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

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

相关文章

鸿蒙OS开发:【一次开发,多端部署】(典型布局场景)

典型布局场景 虽然不同应用的页面千变万化,但对其进行拆分和分析,页面中的很多布局场景是相似的。本小节将介绍如何借助自适应布局、响应式布局以及常见的容器类组件,实现应用中的典型布局场景。 布局场景实现方案 开发前请熟悉鸿蒙开发指导…

与MySQL DDL 对比分析OceanBase DDL的实现

本文将简要介绍OceanBase的DDL实现方式,并通过与MySQL DDL实现的对比,帮助大家更加容易理解。 MySQL DDL 的算法 MySQL 的DDL实现算法主要有 copy、inplace和instant。 copy copy算法的实现相对简单,MySQL首先会创建一个临时表&#xff0…

服务器c盘爆满了,这几种方法可以帮助C盘“瘦身”

我们在使用服务器的时候基本不会在C盘安装软件,那么用久了发现C盘满了,提示空间不足?那么这是怎么回事,为什么空间会占用这么快呢? 原因一: C盘满了,很可能是因为电脑里的垃圾文件过多。操作系…

Servlet的request对象

request对象的继承关系 1.HttpServletRequest接口继承了ServletRequest接口,对其父接口进行了扩展,可以处理满足所有http协议的请求 2.HttpServletRequest和ServletRequest都是接口,不能创建对象,因此在tomcat底层定义实现类并创…

Google Find My Device:科技守护,安心无忧

在数字化的时代,我们的生活与各种智能设备紧密相连。而 Google Find My Device 便是一款为我们提供安心保障的实用工具。 一、Find My Decice Netword的定义 谷歌的Find My Device Netword旨在通过利用Android设备的众包网络的力量,帮助用户安全的定位所…

考场作弊行为自动抓拍分析系统

考场作弊行为自动抓拍分析系统采用了AI神经网络和深度学习算法,考场作弊行为自动抓拍分析系统通过人形检测和骨架勾勒等技术,实时计算判断考生的异常动作行为。通过肢体动作识别技术,系统可以详细分析考生的头部和手部肢体动作,进…

【oracle004】oracle内置函数手册总结(已更新)

1.熟悉、梳理、总结下oracle相关知识体系。 2.日常研发过程中使用较少,随着时间的推移,很快就忘得一干二净,所以梳理总结下,以备日常使用参考 3.欢迎批评指正,跪谢一键三连! 总结源文件资源下载地址&#x…

Google发布的CAT3D,在1分钟内,能够从任意数量的真实或生成的图像创建3D场景。

给定任意数量的输入图像,使用以这些图像为条件的多视图扩散模型来生成场景的新视图。生成的视图被输入到强大的 3D 重建管道,生成可以交互渲染的 3D 表示。总处理时间(包括视图生成和 3D 重建)仅需一分钟。 相关链接 论文&#x…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十一)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 18 节) P18《17.ArkUI-状态管理Observed 和 ObjectLink》 第一件事:嵌套对象的类型上加上 Observed 装饰器…

晶体振荡器

一、晶振与晶体区别 晶振是有源晶振的简称,又叫振荡器,英文名称是oscillator,内部有时钟电路,只需供电便可产生振荡信号;晶体是无源晶振的简称,也叫谐振器,英文名称是crystal,是无极…

C++第三方库【JSON】— jsoncpp

目录 认识JSON jsoncpp库 安装&使用 认识jsoncpp Json::Value jsoncpp序列化 jsoncpp反序列化 认识JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,常用于在客户端和服…

深度学习:手撕 RNN(1)-RNN 的直观认识

本文首次发表于知乎,欢迎关注作者。 1. RNN是什么 RNN(Recurrent Neural Network)存在很多变体,为了方便叙述和理解,本文选取一个基本的 RNN 结构进行说明,该结构与 pytorch 中的 RNN 函数([1]…

c语言:strcmp

strcmp函数是用于比较两个字符串的库函数,其功能是根据ASCII值逐一对两个字符串进行比较。 语法:strcmp(str1, str2) 返回值: 如果str1等于str2,则返回0。 如果str1小于str2,则返回负数(具体值取决于C…

Go微服务: 日志系统ELK核心架构设计

微服务日志系统建设 1 )为什么需要日志系统 业务发展越来越庞大,服务器越来越多各种访问日志,应用日志,错误日志量越来越多,无法管理开发人员排查问题,需要到服务器上查日志 2 )Elastic Stack…

Vue从入门到实战 Day08~Day10

智慧商城项目 1. 项目演示 目标:查看项目效果,明确功能模块 -> 完整的电商购物流程 2. 项目收获 目标:明确做完本项目,能够收获哪些内容 3. 创建项目 目标:基于VueCli自定义创建项目架子 4. 调整初始化目录 目…

刷题之和为k的数组(leetcode)

和为k的数组 这个思路一直想不到&#xff0c;参考了官方答案&#xff0c;哈希表记录[0,i]的和 class Solution { public:int subarraySum(vector<int>& nums, int k) {int result0;unordered_map<int, int>map;int pre0;//前缀和&#xff08;前面的和&…

必应崩了?

目录 今天使用必应发现出现了不能搜索&#xff0c;弹出乱码的情况。 搜了一下&#xff0c;发现其他人也出现了同样的问题。 使用Edge浏览器的话&#xff0c;可以试着改一下DNS&#xff0c;有可能会恢复正常&#xff08;等官方修复了记得改回来&#xff09; 使用谷歌浏览器打开…

哪些AI写作软件好用,这三款强大的AI写作软件必知

在当今信息爆炸的时代&#xff0c;AI写作软件逐渐成为许多人提高写作效率和质量的得力助手。面对众多的选择&#xff0c;哪些AI写作软件真正好用呢&#xff1f;以下为大家介绍三款强大的AI写作软件。 第一款&#xff1a;火呱AI写作 它凭借其强大的语言理解和生成能力脱颖而出。…

C++随机数生成神器:rand(),让你的代码更加引人入胜!

更多资源请关注纽扣编程微信公众号 使用 rand 函数可以获取 机数大小是在0到RAND_MAX&#xff0c;值为2147483647&#xff0c;它是在stdlib中定义的&#xff0c;如果我们希望在某个范围内&#xff0c;可以使用 % 结合 / 来实现 但是不难发现&#xff0c;这里获得的随机数是…

k8s 1.24.x之后如果rest 访问apiserver

1.由于 在 1.24 &#xff08;还是 1.20 不清楚了&#xff09;之后&#xff0c;下面这两个apiserver的配置已经被弃用 了&#xff0c;简单的说就是想不安全的访问k8s是不可能了&#xff0c;所以只能走安全的访问方式也就是 https://xx:6443了&#xff0c;所以需要证书。 - --ins…