0
点赞
收藏
分享

微信扫一扫

Linux云计算 |【第三阶段】PROJECT1-DAY3

网络的产生是数据交流的必然趋势,计算机之间的独立的个体,想要进行数据交互,一开始是使用磁盘进行数据拷贝,可是这样的数据拷贝效率很低,于是网络交互便出现了;

1.网络是什么

网络,顾名思义是一张网,这张网中包含了许多的计算机,每一张网都叫做局域网。而世界上所有的网络集合在一起就是世界上最大的广域网;这个大的网络就将世界各地的计算机连接在一起;

上面只是我对网络的大致理解;我们有网络,那我们是如何通网络进行交流的呢?我们知道人与人之间可以交流是人们有一套完整的语言体系,而网络虽然将不同的设备连接在一起了,可是不同设备的硬件还有操作系统等都是不同的;那如何可以让这些设备可以正常的交流呢?这就需要如人与人交流一般约定好某种交流方式,不同的设备之间也要约定好某种特定的交流方式,从而实现网络中不同设备的交流;这种约定好的交流方式就是协议

2.协议

2.1 协议是什么?

协议是一种约定;

所以这里协议的表现形式就是这个快递的包装!

所以这里协议的表现方式是结构体!

约定好的行为是协议,而网络是一个非常庞大的体系,其中所涉及的问题一定非常广泛,并且世界上的设备很多,生产设备的厂家也有许多,想要让一个庞大的体系被全世界所广泛接收,从而全世界都使用这个协议进行交互,这个协议一定要非常优秀,这样的协议就叫做标准;

当一个协议被一部分人所接受,并且为这一部分人创建出红利时,就会有更多的人想加入这个协议,加入协议的人越来越多,这个协议足够优秀时,这个协议也就成为了大多数人所遵守的标准;同样的你想要享受这个协议带来的优惠,你就得遵守这套协议,大多数人遵守这套协议时,这套协议也就真正成为了标准;

在时代的发展下协议也是衍生出来了标准的,这套标准一定是非常优秀的,先辈们耗费无数心血所研发的:

2.2 协议如何定制?

2.2.1 分层的思想

先辈们在处理这个庞大的体系时,花费了很多精力将这个大的网络体系划分出了层次,通过解决一层层的小问题,从而完善整个网络协议;那在网络中的数据传递会有哪些问题呢:

就如上面划分出的问题一般可以将数据的传递划分为一层层的问题,那么协议也会被划分成层次;

既然说这样划分出层次是有好处的,那究竟有什么好处呢?请看下面的讲解:

如果,我们将上面交流的过程划分为两个层次,我们就可以体会到,分层的好处:

所以将交流的体系划分层次,用高内聚低耦合的思想解决问题,让体系更好维护;使得层与层之间不会互相影响;

让人通过一个设备发送信息到另一个设备上从而让另一个人收到信息的过程,抽象为人与人交流,手机与手机交流;

在我们的C++中也有这样的分层:继承,继承时类中的数据虽然会越来越多,但每个类维护自己的数据,不会收到其他层次类的影响;

那么有了这样分层的思想,网络协议究竟是如何分层的呢?

网络协议的标准——OSI模型

2.3 OSI七层模型

网络这个庞大的体系需要一套好的标准来规范,让大多数人都遵守这样一套好的协议,从而形成标准,而OSI就是这样的标准;

上面的OSI七层模型就是整个网络模型的设计图,这个设计图非常全面,将层次划分的非常完整,所以这个模型就如知道思想一般,可以为网络的实际设计者们提供思路,从而设计出可靠的网络协议;也是如此实际使用的tcp\ip标准模型根据这个OSI参考设计了出来;

2.4 TCP/IP模型 

TCP/IP模型将参考模型OSI简化为了4层模型(一般PIC/IP模型只考虑上面四层,不考虑物理层),将会话层与表示层融合进入了应用层;

通过上面的图片,我们可以知道,通过每层都有自己的协议,通过相同的协议层与层之间可以进行,交流,从而形成数据传输的形式; 

我们看到了一个设备如果想要进行网络交互,就要形成上面的模型,而拥有这样的网络模型的设备是什么样的呢?接下来我们将实际的设备与上面的模型进行相对应的讲解:

1.硬件层(物理层)(PIC/IP模型一般不包括这层)

2.数据链路层

3.网络层

4.传输层 

5.应用层 

那么我们知道了网络模型是这么设计的之后,我们来看看这样设计的模型到底是如何进行数据传输的; 

3.数据的流动过程

TCP/IP是我们网络协议的一个标准模型,所以想要使用网络的设备都需要遵守这个标准都应该具有这个模型的特征,下面我们讲讲设备进行数据传递的过程:

我们可以看到,数据从我们用户从向底层不断加载的过程就是不断封装的过程,通过协议不断封装,数据到达目标设备后会通过协议不断的解包;通过这样就可以实现逻辑上层与层之间的直接通信,但实际上还是数据贯穿网络栈的过程;

所以我们可以总结出这些结论:

我们现在知道了数据是如何流动的,那下面继续抛出问题,数据是如何在网络中进行传递的呢?

4.数据如何在网络中传递

刚刚我们只是考虑到了数据的流动,而设备是分离的,网络究竟是如何做到让数据成功跨设备进行交互的呢?

4.1 局域网数据传递

我们首先举这样一个例子:

其实局域网也是这样的:

 那么局域网中的设备是如何识别这条信息确实是发送给它的呢?

通过上面的过程,我们也不难会产生一些疑惑,这些疑惑也确实是存在的问题:

1.碰撞问题 

 2.安全问题

现在我们知道了数据究竟是如何流通与数据如何在网络中进行传递的;接下来我们得引入更大的网络广域网,当数据想要跳出局域网传递到更远的网络中,应该如何传递呢?

4.2 跨局域网数据传递

 在最前面的1.网络是什么中,我们就说了不同局域网之间需要通过路由器进行连接,那么究竟是如何通过路由器进行连接的呢?

还是一样举一个小例子:

我们的网络也是可以这么理解的:

传递过程: 

ipv4:32位4个字节,每个字节以.分开,每个点分开的数都是10进制数

mac地址:48位6个字节, 每个自己以:分开,每个:分开的数是16进制数

ipv6:128位16个字节; 

IP地址实现了全球主机的虚拟层,实现了一切皆IP报文;

总结:

数据的传输一定是基于硬件层面的,无论数据如何跳转,如何传递,都必须贯穿网络栈传递;

最后再说两个命令:

举报

相关推荐

0 条评论