赞
踩
在早期的计算机发展中,一开始其实是一个个独立的设备,通俗来说就是电脑和电脑之间不是像现在这样可以互相传输数据的,只能通过,比如将这个电脑上的数据通过软盘拷贝下来,再到另一台电脑下载。而有人的参数,效率定然是低下的,因此就有了网络,通过网络来实现不同设备之间的数据传输。
我们上面说了,网络可以使不同的设备之间互相传输数据,那么此时就有问题了。比如丢包了怎么办,我们知道一台设备可能会给另一个距离十分远的设备传输数据,距离变长的,那么如何能确定这个数据一定能送到呢?再比如网络中一定是有很多个设备在传输数据,那么如何定位你的目标机器呢?
协议本质就是一种约定。举个浅显的例子,时间线拨回20世纪初,电话刚刚兴起的时候,每次打电话都是要收费的,对普通人来说是一笔不小的费用,所以一个大学生就与家里人作了一个约定,如果我打电话,电话响了一声我就挂了,那么就意味着没有生活费了,如果电话响了两声我就挂了,意味着我在大学里的生活状况一切良好,不用担心我,而两声以上的话就说明我需要和你们进行通话了,此时你们再接电话。而这就是一种约定,也就是一种协议。
我们知道电脑是有很多厂商的,如果每个厂商所定下的协议不一样的话,那么设备和设备之间是无法进行通信的,因此就需要有一套完整的网络协议来进行规范,所以的厂商都需要遵守这个协议。
网络一定要能保证各个不同的机器都能无障碍的连入互联网,所以要定制全年的协议,不仅仅要定义010信号是什么意思,还需要规定其底层是以光电信号的频率还是强弱来识别010。
一台主机转发数据可能要经过多个路由器转发才能最终到达另一台主机,那么就会有问题:
这些问题都需要由协议来解决。
左边的是一开始约定的协议模型,右边的是后来工程实现(编码实现)的时候完成的协议模型。
OSI:
TCP/IP:
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
因此对于网络的编程,实际上与我们之前的编程并没有什么太大的区别,都是通过调用系统调用接口来进行的。也就是说在操作系统中它还会实现TCP/IP协议!!!
那么我们再来理解一下数据是如何转发的呢?也就是主机之间是如何进行通信的呢?
我们先以我们熟悉的事物来类比,比如快递,到达我们手上的快递实际上并不仅仅只要快递,还有快递单,上面写了收件人、地址、电话等待内容,我们知道这些东西我们其实是不需要的,那么带上它干什么呢?这并不难理解,这是为了给快递员指明要将这个快递送到什么地方,为其指明一个方向。也即是说,快递 = 快递单 + 我们所买的物品。
在计算机传输数据时也是一样的,它并不仅仅只是传输了数据,还需要将目的主机的的信息等等一系列内容都发过去,在这里,这些数据就是对应上面所说的快递单,而我们需要的数据,比如说你发送了个你好,这个你好就对应我们所买的物品。
那么在计算机中用C语言要如何表示呢?那么肯定就先描述了,使用struct xxx{} 结构体来表示。在计算机种,协议通常用结构体字段来表征的,而结构体字段定义出来的对象,我们称为协议报头。
上面是主机一向主机二发送你好的大概流程,最后从主机一发出的数据实际上是报头 + 有效载荷,也就是你发的真实数据。那么就有问题了:
上面的两个问题是每一个协议都要解决的问题,是任何的共性!!!所以要好好理解!!
上面圈起来的就是ip地址,它是一个点分十进制的形式,以[0~255]. [0~255]. [0~255]. [0~255] 的形式展示的。
如果在发送的报文中以这样的形式进行发送,那么占据的内存是相当大的,因为这些就是一个个的字符,一个字符是一字节,这么多是非常浪费内存的,而它的没有数字的范围都是0~255,所以我们可以用一个字节(8个比特位)来表示。
ip大概分为两类,一类是公网ip,一种是内网ip,它们加起来就是所有的ip地址。IP地址是用来表示互联网中唯一的一台主机。
IP地址的意义:进行路径选择,为了到达目的主机,帮助我们该如何选择路径,从而将数据送到目的主机。
IP协议有两个版本,IPv4和IPv6。我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指IPv4。
MAC地址:
上述就是一个简单的跨网络传输,在其中,保存的IP地址是不会发生变化的,但是保存的mac地址是会被不断改变的,它保存的是上一个经过的主机/路由器的mac地址,和下一个要去的主机/路由器的mac地址。
其中令牌环可以看作一个共享资源,在同一时间只允许一个软件使用,它的作用可以理解成就是用来传递数据的,并且会进行封装报头。
在跨多个网络中,就是以这样的方式来不断传输数据的。
经过对网络的简单讲解,相信大家已经对于网络如何传输数据有了大概的理解,那么接下来我将会深入讲解关于每一层都在干什么等内容,也希望能与大家公共进步。
如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续深入学习Linux,希望能与大家共同进步,那么本期就到此结束,让我们下期再见!!觉得不错可以点个赞以示鼓励!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。