网络到底是如何组成的?为什么我们现在可以方便的上网?
不管你是不是计算机专业相关的人,你心中可能一直都会有这样的疑问!
而今天我们就来解决这件事情,告诉你真实的答案!
网络的基本构成
首先我们来看这样一句话
把所有的电脑连在一起就组成了网络,但连接的形式有很多,比如...
是的,所谓网络,其实就是把电脑用网线连接起来,连的多了就组成了网络,一般我们按照连接方式可以分为以下几种方式
直连网络
地球上的每一台电脑要想上网就必须要加入网络,加入的目的就是为了能找到对方,那么用什么办法连接起来呢?最简单的办法就是使用网线直接连接。
两台电脑之间可以互相传输数据等操作,就好比我去邻居家串门,并不需要经过任何多余的步骤。
⚠️注意:在这里你可以把网线想象成通往你邻居家的路就可以了。
但是这种网络没有什么用,仅供你自己娱乐而已!
局域网
你可以把局域网想象成一个村子,这个村子里住着很多户人家,如果你想去到任何一家人,你就必须得知道他家的地址,而这么多人家的地址怎么可能记得住,所以需要村委会或者派出所进行管理,注意这个机构在网络中叫做路由器。
所以你家里里面要想多个设备上网,知道为啥一定要买路由器了吧!
路由器的连接方式
- 有线->网线->百兆/千兆/万兆
- 无线->无线电->wifi
广域网
广域网的概念其实很多,一个小区的网络可以叫做广域网,一个区或者县城的网络 也可以叫广域网,甚至一个市的网络都可以叫做广域网。
是不是派出所管理户籍,他们的都由上级部 门进行管理,这个层级跟我们的网络层级是一样的。
所以局域网无限的向上级机构发展,就组成了形形色色的广域网。
注意,每一层机构都至少有一个更大的路由器来支持!或者叫交换机 !
互联网
互联网并不是一个技术名词,而是一种概念,但目前通常就是指全球的网络。你可以这么认为,全球有很多台上网设备通过自己的局域网与外界进行相连,组成了现在的互联网。
移动/5G网络
现在是移动互联网时代,我们上网的设备由以前的电脑变成了手机、平板等。但无论如何发生变化,网络的组成形式没有改变,只是传输介质发生了变化。
以前的介质需要用网线连接,现在变成了无线连接而已!
这就好比,以前我去你家需要走路去,现在直接可以飞过去一个道理!
所以,5G是第五代移动通信技术的简称!
思考:网速为什么会变慢?
提示:世界上本没有路,走的人多了变有了路!后来人越来越多,路就不好走了!
了解了网络的基本构成,问题又来了,我们到底如何上网的呢?为什么可以打开一个网站就看到新闻,打开一个软件就可以看视频?
网络服务的构成
其实这个问题也是很简单的,现实中有的人家开了一家超市、一个馒头店、一个理发店,然后大家就可以排队去买东西。
其实网络中也是一样,你需要提供什么样的内容就开一个什么样的服务器就可以了。
所以服务器也是一台电脑,这就跟我们住宅家里可以开店,也可以去门面房开店一个道理。
服务器也可以是一台普通电脑,也可以是看起来很牛逼的那种(比如刀片式服务器)!
一台电脑/服务器基本组成
- CPU:负责运算
- 显卡:负责显示画面,负责图形渲染
- 内存(闪存):负责缓存数据
- 硬盘(闪存):存储数据
- 主板:负责连接所有设备的载体
- 电源:负责通电
网络软件的分类
电脑上的软件主要有两种,一种是单机软件(不需要联网就能用),另一种是网络软件(需要联网)。
而需要联网的软件就下面两种形式
B/S架构
Brower / Server(浏览器/服务器)
我们一开始接触最多的上网需求就是网站了吧,浏览器地址输入一个网址,按下回车就可以打开一个网页。
实际这个过程就是去按照网址的地址找到那台开着网站服务的服务器里面存储的内容罢了。
由于这种形式非常广泛,我们把这种类型的软件叫做B/S架构,即浏览器-服务器架构。
这个页面就是由前端开发工程师进行开发的,想要了解的小伙伴可以私信或者评论区留言,领取2021最新前端开发课程全集。
提供这种服务的软件有Nginx、Apache、IIS等,都是通过命令安装在服务器上面。
C/S架构
普通的网页功能有限,而我们需要更多复杂的功能时,就需要安装一个客户端软件,比如QQ、360、游戏等软件。这些软件也是需要联网进行使用更多的功能,那么这种软件服务模式叫做C/S,即客户端-服务器软件。
上面的软件架构在手机里面也是一样的道理,比如你安装了一个抖音或者快手。
这个过程请看我的另一篇文章《App是如何安装到你的手机上的?》
其实大家发现网络软件不管是那种架构的他们都需要与服务器进行通信,才能工作!
通过以上内容,我相信你对上网这件事,大致就明白了!
但是,作为一个技术人,了解这些还是不够的,所以接下来的内容真的非常干!小板凳已经不够用了,买套房住里面慢慢看吧!
想要真正的成为网络专家,你还得熟悉下面的一些概念
IP地址是什么?
即使你是一个什么都不懂的电脑小白,那么你也应该听说过IP地址这个东西了!
问题来了,到底什么是IP地址呢?
我们看一下比较官方的解释
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
其实这个地址跟我们自己家的地址概念,本质上并没有什么区别!
比如我家住在北京市东城区长安街1号,只要我告诉别人这个地址,别人就可以沿着长安街找到我家。
但是问题来了,电脑能识别这样的地址吗?
答案,肯定不能!
电脑是由一堆硬件组成的,他们不懂得中国人这套语言怎么办?他们的沟通方式我之前说过了原理,就是0和1组成的。所以电脑对数字特别敏感,我们就干脆用数字表示地址就可以了!
当然你说为啥不是手机号,那样不是更方便吗?这个理论上来讲是没问题的,只不过凡事都有约定俗成的规定,毕竟我们当年没有参与制定这套标准,所以只能按照别人的标准来。
那IP地址如何获取呢?
文章一开头我们讲了局域网和互联网的概念,实际IP地址是一套规范
他们基本就长下面这个样子!
10.0.0.1
192.168.0.1
114.114.114.114
别害怕,他们还是很有规律的
那就是由4位0-255的数字组成
注意这里4位很关键,所以这个叫做IPV4的标准
问题来了,我们一共有多少个IP地址?
IP地址的范围是0.0.0.0 - 255.255.255.255,理论上是255255255*255约42.28亿个
你会发现~
全球六七十亿人,数不清的电子设备,很显然不够用啊~
所以,多年以前就发布了IPV6标准了,只不过还没大规模普及,因为整个范围变了,不是那么快就能全部更新的。
但这也没关系,事实上并不需要每一个人都拥有IP地址的(有当然最好了)
聪明的互联网人儿把网络又分成了内部网络和外部网络,简称内网和外网
- 内网->家里、公里里、小区里的局域网,他们必须要通过路由器连接外网才能使用
- 外网->全球唯一的真实可用的IP地址,也就是真正的互联网的地址
其实你可以这么想就明白了
地球是人类的家园,中国是中国人的家园,山东是山东人的家园,我们家是我们家人的家园。
嗯,好像就是这么个意思~
其实关于IP地址还有更多的知识要去理解,比如DNS服务器、路由分配、子网掩码等等,这个我们需要有一节专门的课去讲解,欢迎持续关注~
端口号是什么?
一台电脑需要针对不同的软件进行网络服务,所以需要通过端口号区分!
有了IP地址,两台电脑之间就可以相互访问了
但是问题来了,每一台电脑上都有很多软件,比如QQ、微信、360、魔兽世界等等,你来访问的时候我怎么知道你要做什么呢?
于是,就必须要有端口号进行区分了
比如,我们通过浏览器上网的时候,你可能有时候会发现有些地址是这样的
http://www.baidu.com:80
或者
223.224.234.235:80
这个玩意就是用来区分你要干什么的,其实很多国际通用的软件都有固定的端口号,比如
- 发邮件:25
- 传文件:21
- 网站访问:80和443
- 远程连接:3389
- 数据库:3306
- 等等
你自己开发一个软件需要网络通信的话,也可以向操作系统申请一个系统内没有使用过的端口号即可。
网络的OSI七层模型
OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。
OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
很多网络小白甚至是计算机专业的学生,在学习网络原理的时候,都会被这个OSI七层模型搞晕,原因是啥呢?
因为你没想明白一件事,电脑其实就是由一堆石头组成的!
如何让一颗石头有生命力,那就需要我们好好打造一番了!
下面这张图你可能在网上很多地方都见过
描述的非常棒,但是新手很难看懂,为啥呢?
因为这是整个网络架构的基石,他的每一层都涉及到计算机的各个方面,一个小白连编程的基础语法都没学过,怎么可能理解这些东西!
但是,别怕!
波哥最擅长的事情就是把难以理解的事情给你讲明白!
实际OSI七层模型过于复杂,某些人又开始了融合,提出了TCP/IP五层模型的概念!
当然,小白还是看不懂!
没事,我们先看下对应关系!
也有人提出了基于TCP/IP的四层模型,看你喜欢哪个喽~
以上都是概念,真正的流程应该是这样,两台电脑之间传输数据,实际经过了很多步骤!
我们可以看下图
每一层都有一个行业或者产业,他们都在上面认真的工作着,并改变着世界!
好了,小伙伴,以上就是关于编程小白需要了解的简单网络原理,实际上网络技术的发展需要我们了解的知识还有很多,关注我,以后慢慢聊~
网络协议
协议有很多,每一层都有不同的协议
网络七层模型中那么多的概念,实际对于我们普通程序员来讲,主要还是在应用层上进行工作
下面就是常见的应用层协议,web相关的开发者必须要对这些协议搞清楚!
那么问题来了,到底是什么是网络协议呢?
网络协议简单理解为人与人之间说话的语言,两台计算机想要听懂对方说的话,就必须要使用相同的协议。
你可以理解为:一家人不能说两家话!
协议就是规定了某种特殊的格式,两边都能认!
- HTTP应用层
TCP属于传输层
HTTP是基于TCP的一协议
应用层协议HTTP/FTP等
这里我们拿Web相关开发者必用的HTTP协议来说!
简单说这个是专门为浏览器而生的协议
主要是针对浏览器的,所以需要看下浏览器里面的这个协议的体现
请求数据的时候是这样的
服务器返回数据是这样的
HTTP协议有个特点是单向的,客户端发送请求到服务端,服务端返回数据,然后结束了!Socket套接字
好像有的同学说,浏览器也支持socket协议,其他软件也支持socket协议
这里我来更正一下
严格来讲socket不是协议,而是一种我们对常见协议的抽象!
socket实际上是双向的,双方对等的关系,角色可以互换!TCP/IP和UDP协议
这玩意位于传输层的协议,他是应用层协议的基石,包括socket都要跑在这个协议之上
实际他只规定了数据发送的方式
简单来讲就是规定了IP地址、端口号以及数据发送的方式TCP
TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。
适用于两台计算机之间专注的进行连接(数据通信)
三次握手解释他们之间如何传输数据
四次挥手解释他们之间如何断开链接
UDP
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
适用于1对1、1对多、多对多的复杂网络场景
总结
这篇文章里面主要是针对一些常见的计算机网络的概念给大家做了普及。
文章内容并没有很深入的探讨他们各自具体的规则以及一些所谓的指标,因为我觉得对于很多人来讲,先大致理解了他们的概念就已经足够了
而每个概念的背后的知识正是我们以后要慢慢研究的!
毕竟,这一篇文章的内容在大学里也是要一本书一个学期的知识呢~(虽然很多同学反馈,当时并没有搞明白)
后面我还会继续以单个知识的方式更新文章,每一个概念的详细细节都给大家好好聊聊~
最后,你们的支持才是我持续更新的动力~
https://www.bilibili.com/vide...