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