学习笔记-计算机网络

145 阅读6分钟

在早期,以单个计算机为中心的远程连接系统,在这种情况下,如果说,中间这个单个计算机,出于某种情况,被损坏了,是不是整个网络就不能用了,那么,在冷战时期,也就是60年代初,当时的美国国防部为了干什么呢,为了保证说我美国本土的防卫力量和海外的防御武装不怕被偷袭,当时是冷战啊,非常担心,每次都非常担心,说对方突然成一个一个突袭,把我的某些重点干掉了,对不对,他说为了保证说我的这个重要的节点,在受到前苏联第一次这个核打击以后,仍然有一种生存的反抗能力,他就觉得,我能不能引入一种所谓的分散的指挥系统,比如说这个指挥点由一个一个的,分散的点组成,那么你就在我有部分的指挥点被摧毁了以后,其他点仍然能够正常工作,并且相互之间能够怎么样能够继续保持一种联系,所以说,在这种情况下,美国国防部的这个国防高级研究计划署,英文简称呢,叫做这个DRPA这么相关机构。

现在现在这个机构目前来讲还在,叫做美国国防部高级研究所,阿帕网这么一个相关的网络系统,它干什么呢,把这一个多个大局的计算机的主机连接起来,然后,大学之间,主任之间用分组交换的技术,然后进行一个相关的互联,那么也就是说这个当年的计算机网络诞生的时候,他是为了应付战争的情况下面保证某一个节点被摧毁了以后,我的网络依然存活,所以说大家在学习TCP的协议的时候,就会完全可以感知到,TCP/IP,他的设计一大目的就是为了去中心化。

         到时候我们在学习这个类似于三次握手等等相关之后,你会深刻地感觉到一点,他的设计的原就是这样子,为什么是这样来的,好,那么在这个阿帕网的时候,我们现在常说的email FTP,什么talent,在阿帕网上面其实就已经诞生了,那么随着说我们,阿帕网做阿帕网,因为他说,战争实现了这个网络的这么一个相关的互通,大家都很好用,对不对,那么,慢慢的这个阿帕网就从哪里,从学术界慢慢就成为了什么,往开始往商业领域去蔓延,于是呢,各大计算机公司都纷纷推出了自己的网络体系结构和相关的这个软件产品。

       在往后就是它逐渐演变成上面的这七层ois模型,简化后就是这么一个tcp/ip的四层模型,

tcp就是在传输层

ip在网络层

http在应用层

上面这几个还是背一背

接下来我们看网络传输中的数据:

比如讲现在我们在应用层,我们要传递一个字,比如我们在看手机上面,我们写了一句话,我要把它通过微信传到另外一个用户的手机之上,好,我们在微信里面写下这句话,点击了一个发送,点击发送了以后,交给了网络,交给了或者交给了网卡,于是TCPIP的层就开始发挥一些相关的作用,首先交给谁,首先交给TCP层进行相关的处理,TCP层把这一个这一句话,打包,然后呢,前面放一个TCP包的一个相关的首部,她处理完了交给谁?交给下面的IP层进行相关的处理,于是IP层把把上一层TCP交给我的数据又是为一个整数据包。

加上自己一个所谓的IP包,首部,再交给我们的数据链路层,数据链路层又把IP曾包装过的数据视为一个整包,加上自己一个相关的首部,比如说通过网络传输,比如我们通过以太网传输,那么通过以太网首部,然后呢,最后打包成一个可以在网络上所传递的数据,交给谁,交给实际的物理层进行一个相关的传输,那么用户B他的手机收到了,一层层进行一个相关的剥离,比如说数据链路层,数据链路层把数据链路层所打包的这个包,把它剥离以后,把剩下的部分,网上传递交给网络层处理,网络层把自己相关层又进行一个剥离,把剩下的部分往上交给交给TCPIP处理,TCP又把TCP包的首部剥离以后就交给我们的微信。

     通过这么一层一层相关的处理,才最终怎么样完成了我们用户a发送一个数据发送到用户B的一个全过程,那么在这其中每一层都有自己的一个打包过程,比如说发送数据有自己的打包过程,收到数据库有这个拆包过程,为什么这么设计,因为在TCPIP协议在进行设计的时候就考虑说,每一层,我只做自己,单独的事情我不会说,我有一层把所有的事情全部都做完,这种情况下可以使得我们这个层次之间相对来讲比较的分明,这也属于典型的,我们说可以理解为设计模式里面的什么呢,有点类似于单一职责,你一层只做自己的事儿,正是因为说在我们的TCP这个,处理过程中有这么一层层的往下打包对不对。

      所以呢,一般来讲呢,对于每一层呢,它会有一个专门的一个相关的术语,一般来讲,我们说数据包这是个的全能型术语,是什么意思呢,意思不管你在传输层、网络层、数据层,都可以称之为数据包,那么真,我们常说的数据帧,这个帧一般来讲指的是说我在数据链路层的包单位,这里指的是真,那么骗,指的是做IP层的,我们称之为,叫做片,那么段指的是什么,TCP层的这个东西,TCP层打包以后呢,我们称之为段,那么消息一般讲是指我们的应用层要进行发送的应用数据呢,我们一般呢,把它称之为一个相关的消息,当然讲就我们平时作为这个程序开发来讲的话呢,不会分得这么,细致一般呢,我们会统称呢,就是叫做数据包对不对,到了,但是呢,到需要进行每层区分的时候,

    大家还是要知道说每一层有每一层的数据包,它有自己的,专属的名称,但一但是在一般情况下,我们是不用去区分的,得知道是这么回事儿