网络初识 - JavaEE初级 - 细节狂魔

网络初识 - JavaEE初级 - 细节狂魔,第1张

文章目录
  • 前言
  • 网络发展史 - 互联网是怎么来的?
  • 局域网 / 广域网
  • IP地址 和 端口号
    • IP地址
    • 端口号
  • 认识协议 - 重点
    • 协议分层
  • 网络分层
    • 网络设备所对应的分层
    • 网络分层中的一组重要概念:封装 和 分用 - 重点

前言

本篇博文讲的内容,立足于网络编程,以及是一些网络相关的面试题。

大家在学校里学的计算机网络,则是“计算机网络”设计原理。
也就是讲的“计算机网络”这个东西怎么发明出来的。


网络发展史 - 互联网是怎么来的?

最开始的网络大概是在上个世纪50 - 60 年代左右,诞生的。
背景:冷战,又称美苏争霸。

大概在 194几年,第二次世界大战打完之后,世界 格局 开始进入崭新的格局了。
世界上 存在两个超级大国 苏联 和 美国 。
苏联在当今已经消失不见了。
剩下来的俄罗斯 相比 之前的苏联 还是弱了不少。
像我们前些日子中的新闻,俄罗斯 与 乌克兰 打仗,其实 俄罗斯 与 乌克兰 都属于苏联,自家人,


至于为什么不是热战,而是冷战。

这是因为当时有一个很nb的大杀器“核武器”。
“核武器” 给 战争的双方提供了足够的威慑力。
一旦打起来核战争,就是两败俱伤,甚至会影响到全人类的安全。


所以,它俩(美苏)想的是:我把你干掉,但是自己没事。

苏联那边可都是战斗名族,不服就干!
美国人当时是特别害怕苏联和它撕破脸的,不死不休。
一言不合,就给它来一发核d,美国可能受不了。
所以美国要想保全自己,就得保证的反制手段是有效的。

如果要使用核d炸一波美国,肯定是炸重要地点。
美国要保证的是,我经受了一波核d袭击后,我还能实力进行反击。


如果保证能够进行反击?
1、保存指挥机构
2、保存核d头 和 发射井
3、保证 指挥机构 和 核d头之间的通信链路

假设,它要发射核d。
核d头也要能够接收到命令,然后进行发射。
指挥机构 ,核d头 和 发射井,这两个都很好保证。
但是,关键就在于通信链路,需要保证 通信链路 在 核d洗涤的情况下,仍然能够运行。


最终,美国采取额方式是“以力破巧。

让 指挥机构 和 核d头之间,有无数条可以通信的链路。
哪怕有一部分被打掉,剩余的仍然能够正常工作。

正式因为这个东西,随着发展,逐渐演化成我们今天所看到的互联网。
所以这是互联网,它诞生的一个背景。
计算机是为了计算导d的轨迹而发明的,而现在的互联网是为了保证下达发射核d的命令能正确到达而发明的。

后来,我们发现 计算机 和 互联网这个东西,在生活中使用也是非常香的!
逐渐就走进平民百姓的生活中。

在当年的时代背景下,还是非常的紧张的。
紧张到什么程度,据说:指挥机构,按发射核d的按钮之前,需要输入密码。
为了防止紧急情况下,不知道密码是什么?
将密码设置为6个1。
正常密码盘上面是 0 到 9, 然后,把其它数字都给扣了,就留一个1。
所以当时发射核d,只需要疯狂扣1 就行了。


这也是为什么 俄罗斯 打乌克兰,放声:北约谁要在插手我们 与 乌克兰 战争,我们直接就发动核战争,北约的那一帮人就熄火了。

想对比之下,中国的互联网的发展其实是非常滞后的。
原因就一个字“穷”。
中国的近代史,那就是一部血泪史。从鸦片战争开始,中国就被各个国家剥削。老百姓饭都吃不饱,拿来资源去搞互联网。
虽然建国之后,情况好了一些。但是为了以后能有更加美好的未来,所以我们国家只能勒紧裤腰带,发展生产、发展工业,将基础设施都搞定之后,才能更好提升老百姓的生活。
中国的互联网发展大概是在 90 年代左右,国内的计算机才逐渐多了起来。没有是计算机谈何而来的网络,所以可想而知中国互联网发展还是很短暂的,与世界的互联网技术,还是有一定的差距的。

在最初的时候,电脑还是没有网的,一般玩的都是一些单机游戏:cs,极品飞车,模拟人生,航海大时代…
玩这些游戏,都是需要买光碟,在电脑上安装的。


随着时间的推移,2004年左右,网吧就火起来了。
黑网吧,我记得我第一次进网吧的时候,还是非常便宜的,是1.5元 一个小时。
稍微去晚了一会,机子就没有了。
晚上溜出去包夜上网的情况屡见不鲜。【我看见的很多人都是这样的】

这一年最火的游戏,魔兽争霸3,GTA3,传奇…
传奇,可以说是整个网游界的开山鼻祖。
由此传奇这个游戏,当年中国互联网最牛逼的公司,叫做盛大。现在改名叫盛趣了。
现在基本上已经凉凉了,也不能说凉凉把。就是热度一般般,现在没有什么拿得出手的游戏。
当年的盛大,就相当于现在的字节腾讯。
主要就是因为 盛大 是 传奇 在国内的代理商。
当年除了盛大独一档之外,之下还有三巨头:网易,新浪,搜狐。
有了这个开端之后,随着计算机和网络的普及,中国这个十亿级别的市场开始爆发。
整个互联网行业出现,井喷式 发展。发展的非常快。


2007年,国外出现了一件惊天动地的大事。(第一次发展的高峰)
乔布斯发布了 第一代苹果手机,也是从这一时刻开始,手机开始从功能机向智能机发展。

在 苹果之前,最牛逼的手机,叫做 诺基亚。
之后,受到了 iPhone 的 降维打击。
但是,不得不得诺基亚质量绝对是刚刚的!
有着其他手机都没有的“功能”,砸核桃 和 防d。

而 Android 还只是处于内部测试。
当时 iPhone 虽然比较简陋,但是也给 Android 开发团队 带来了 巨大冲击。
Android 对自己的定位 也是 模拟 诺基亚 这样的功能机设备。
但是 看到 iPhone 之后,发现这条路是走不通的。
于是 Android 进行大规模的重构,因此才给未来的制霸互联网埋下了伏笔。

至于 诺基亚,不知道是因为上面原因,仍然坚持自己的路。
最终被拍死在沙滩上。


智能手机对于国内的影响,其实大概是2012 年左右才开始的。
这个时候国内的智能手机才逐渐普及。
为此做出重要贡献的公司,少不了 华为 和 小米。

iPhone 虽然是一个智能机,最大的缺点就是太贵,动不动就 6,7千。
当前都有人割腰子买iPhone的。

而华为,小米的目标是:制作出高性价比,亲民的手机。(便宜,性能还好)
放到现在,估计就没有几个人回去嘎腰子了。
花个 2、3千 买个小米/华为,它不香吗?便宜,而且性能上不差。
而且小米 和 华为 还是有高端机,我们可以自己选择。
所以,留着自己腰子不好吗?


2012 年以后,这个时候,互联网行业迎来了第二波发展高峰(关于移动互联网)。
至于疯狂到什么程度?
疯狂到了 全民创业的程度。
当时 资本家 对于 互联网非常青睐,只要你能开发出 一个 APP,然后随便家教故事,就能拉倒巨额融资。

比如:
1、超级课程表:大学的朋友用的多,就是课程表。
2、河狸家:做美甲的一个APP。
这两个都是当年拿到非常高的投资的!尤其是 超级课程表的创始人,都被吹上天了。
现在热度就没那么高了。
程序员的工资,也是从这个使其开始起飞的!!!
这个时期,作为一个程序员,找工作贼容易,尤其是左 Android 和 iOS 开发的。

美团也是这个时期发展起来的,大概是2014年的时候。
当时还有一个“百团大战”,有很多很多的团购网站,最后合纵连横,成为今天的美团。
包括滴滴什么的,也都是这个时期兴起的。

但是,我们不难发现,在经历了一波高峰之后,活下来的公司寥寥无几。



网络发展史,就讲到这。
了解即可,面试不考。


局域网 / 广域网

局域网:
就是将 两台,甚至多台主机连接在一起。
这种就构成了一个局域网。
最典型的情况:拿一根网线,把两个主机一连。

最常使用的还是 交换机 和 路由器。

上述讨论的区别,局限于“传统” 的 交换机 和 路由器。
实际上,真实的 交换机和路由器 之间的界限,已经越来越模糊了!

就是说:路由器的很多功能,交换机也有。
交换机的很多功能,路由器也有。

它们的功能越来越强大了,就不局限于传统的 数据转发,它们还可能有其它的很多功能。
这也是为什么它们之间的界限,越来越模糊的原因。

如果面试问到了这里面的一些相关区别问题。
我们就可以简单认为:交换机只连接一个局域网,路由器是横跨两个不同的局域网。



通过路由器/交换机,组建起来的这些都叫做局域网。

两台设备插到一起,算是一个局域网。
N台设备插到一个交换机,也算是一个局域网。
甚至说通过一些路由器,将一些局域网连接起来,也还是一个局域网。
所以呢,这都是一个局域网。
哪怕说,你把一个城市的设备都连接起来,也是一个局域网。

广域网。
广域网其实和局域网之间,没有明确界限。
你可以认为比较大的局域网,就是一个“广域网”。

广域网没有明确的说,需要达到多大,才能算是一个广域网。
但一般我们就认为广域网就是一个比较大的网络。
就是很多个局域网组合在一起,构成了一个很大的网络。
比如:
一个国家的网络,就可以成为是一个广域网。

全世界最大的广域网,叫做 Internet(因特网)。
只要你们电脑开通了宽带,都是可以访问因特网的。
其实我们的主机上网,就已经是连到广域网上了。
当然,这里的广域网也不是所有的网站都能访问,毕竟我们都知道有一个长城防火墙。因此我们只能访问其中一部分网站


IP地址 和 端口号

IP 地址:描述了网络上的一个主机的位置。
端口号:描述了一个主机上的某个应用程序。

这就好比:
买了一个东西,我们买了一个东西。我们就要写收件人地址,人家快递小哥就把快递送往我们指定的收件位置。
接下来,问题就来了!
我们填写的收货地址,一般都是范围,并不具体。
这就会导致,快递小哥到了地方,但是这个地方不只是有我们一个人。
还有其他人,所以快递小哥也无法确定那个才是你。
怎么办?
于是快递小哥就通过我们的手机号(端口号),给我们打一个电话,告诉我们到哪里去取我们的快递。


IP地址,就相当于是收货的地址。
端口号,就相当于 收件人的电话。
通过这两个东西,我们就能确定一台主机上唯一的应用程序。


IP地址

所谓的IP地址,本质上其实就是一个32位二进制数。但是由于 32位二进制数,并不方便人来读和记忆。
因此,我们一般常见的 *** 作都是把这个 32 位二进制数,按照每个字节,分成 四个部分。
中间用点分割,这样的 *** 作称为 “点分十进制”

前面我在MySQL 的 JDBC 编程 博文中,就使用到了一个经典IP地址。


端口号

端口号本质是一个 2个字节(16bit位)的无符号整数。
【取值范围:0~65535】

前面我在MySQL 的 JDBC 编程 博文中,就使用到了一个端口号 3306。


认识协议 - 重点

我们要想进行有效的通信。那么前提就是能够明确通信协议。
其实本质上就是约定,发出来的数据是什么样的格式。
接收方按照对应的格式来进行解析,

举个例子:相亲
家里的亲戚轮番上阵给你们介绍对象。
说什么时候,你们两个见一面?看看合不合适。
你说好,然后你也加了别人妹纸的微信。
你们约定好了,在哪个咖啡厅里见面。
但是问题就来了!咖啡厅里好看的妹纸非常多,到底哪个才是你们今天相亲的对象?
这时候,我们就需要想办法做出一个区分。

有的朋友说看照片来区分?
我只能说,现在的照片欺骗性太大了,那个女生不会修点图?
再加上化妆邪术,化妆如换头,你能看照片找出相亲对象才有鬼。。

最稳妥的方法,就是和妹纸做一个约定。
约定,妹子明天穿一个黑色连衣裙。
我们穿一件小西服,胸口查一朵玫瑰花,

你们进了咖啡厅的门,看到一个红色连衣裙的女孩,八成就是她了。
妹纸回头一看,小西服,外加胸口一朵玫瑰,就是他了。
这个时候,彼此差不多就可以认出对方了。

接下里就可以就那些愉快的聊天了。


这样的约定是很重要的!
如果没有这个约定,就很容易认错人。
这种事,在相亲这回事上,发生的概率还是蛮大的。

那么,我们在网路通信的时候,本质上,传输的是 光信号 与 电信号。
通过 光信号 的频率(高频率/低频率) 和 电信号的电平(高/底 电平) 来表示 0 和 1。
那么,通过这种高低电平 就能把一串 0 1 给发过去。
此时,问题就来了:
这一串 0 1 代表的是什么意思?
我们需要明确出来 是 按照什么规则进行发送的,接收方才能 进行相应的处理。

这个东西也就是我们协议要完成的工作。
所以,从本质上来说:协议就是一种 约定。

只要我们彼此之间,要想进行有效的通信,都需要有一个足够明确的协议。
就好比你们现在看到的这篇博客。
我现在用的是中文写的,至少你们是认识字的。
但如果我使用的是英文写的,你们估计就是爱看天书了。


也就是说:我们能够进行有效通信的前提是 发送 和 接收 协议的双方,它们之间的这个协议是一样的。是双方都能对上号的!
在这个前提上,两者才能进行有效通信。

进一步来说:在学习网络原理的时候,很多的时间都是研究各种协议。

其实这些协议里面,就是讨论我们在 网络传输中,可能会遇到的一些问题和情况。
把这里面的东西都了解了,其实对于这个网络呢,就有了更加深刻的认识。


协议分层

网络通信这个过程,其实很复杂,里面有很多很多细节。
如果我们就只通过一个协议,来约定所有的细节,这个协议就会非常庞大而复杂!
这就非常的不友好!!!
更好的办法,就是把这个庞大而复杂的协议,拆分成多个小的,更简单的协议。
每个协议负责一部分工作。

这个就跟写代码一样!
写一个复杂的程序的时候,不要指望着,一个文件把所有的代码都装进去。
而是将这个代码拆分成多个更小的,更简单的文件,每个文件负责一部分工作。

写代码,我们不可能把所有代码都写在一起,我们需要拆成多个部分,多个模块,多个类和方法。
协议也是一样!你把这么复杂的一个东西,用一个协议去表达,不合适。
所以,需要它拆成多个协议, 这样我们就能更好的去维护,也可以更好的进行理解。
还可以灵活的来替换里面的部分内容。


网络分层

互联网中的分层具体是怎么分的?
其实这个分法还是有点复杂。来看下面。

注意!上述这种模型只是存在与教科书中。
在真实的网络中,一般没有这样去实现的,因为它太麻烦了。

真实的情况是 OSI 的简化版本:TCP/IP 五层(四层)网络模型。
下面我们就来重点了解 这个 五层(四层)网络模型。

上述的这些,都只是站在一个比较简单,比较宏观的一个逻辑上,来看待这里的功能。我会在后面博文中,详细介绍每一层里面的一些关键协议,以及里面的核心功能。


网络设备所对应的分层


网络分层中的一组重要概念:封装 和 分用 - 重点

这一组概念,就描述了不同分层的协议之间,是如何相互配合的。

先来看一下发送信息的过程。

数据从上网往下,从上层协议,交给下层协议,由下层协议进行封装,构成该层协议的报文。依次类推,直到 物理层,才真正进行传输数据。
将一套 *** 作,称为 “封装”。

到了刚才的那一步,此时,我们的数据就已经离开了当前主机,前往了下一个设备。
下一个设备,可能是路由器/交换机/其他设备。
总之,A 和 B 之间 大概率不是相连的,中间会有很多个路由器和交换机来负责数据的转发。
中间过程暂且不谈!
主要先看 数据 到达 B 之后的表现!


下面,j就来看一下: 数据 到达 B 之后的表现

至此,我们就完成了一个消息的发送和接收的解析过程。
这个从上往下解析的过程,就称为“分用”。
分用,就是封装的逆过程。

封装,是从下往上,数据依次被加上了协议报头。(包快递)
分用,是从上往下,数据依次被去掉了协议报头。(拆快递)



这两个流程非常重要,一定要重点理解!

咱们上述讨论的知识 起点 和 终点 的 情况。
A 和 B 中间还有很多路由器 和 交换机呢!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/736207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存