计算机网络可谓是计算机最重要的基础专业课之一,大家看到对于其中大量的概念、算法、原理、协议都非常头疼,但是每次看完又一下子会忘记,所以希望能用各种有趣(骚里骚气)的比喻和举例帮助大家更深刻的记忆相关的姿势 QAQ
注:本教程参考华南理工大学的计算机网络大学mooc教程,如果意犹未尽的同学可以继续去深入学习一波~
学习一个东西,最好从他是怎么来的开始说起,只有知道了过去它是怎么一步步过来的,才能知道现在它的每个部分都是为啥这么设计,它的好处在哪里,能理解的更加深刻~
那我们的男主角小计,是怎么一步步长大成为今天这样迷倒万千观众的帅哥的呢,故事要从1955年说起…
1957年,老大哥前苏联发射了第一颗人造地球卫星,这美国可不能坐视不管啊,落后就得挨打,赶紧在1958年2月成立了APRA(Advanced Research Projects Agency),意思是高级研究计划署,就相当于游戏里建了个能研发新技术的工厂。
在这众多项目中,有个娃子,叫ARPANET,在1969年出生了,这家伙就是现在的因特网他爸。他有四个节点,分别位于斯坦福研究院,加州大学圣巴巴拉分校,加州大学洛杉矶分校,犹他大学。
没错,大家看这几个节点的位置就能感受到此子的不凡,但更加不凡的是,他特立独行,有着跟前辈们完全不一样的特点。它采用了包交换(Packet Switching),也叫分组交换,这可让大家伙大吃一惊。就像过去大家都喜欢穿运动裤,突然一个小伙穿着破洞裤就来了,之前最主要的通信网络——电话网络,用的一直都是电路交换技术,让大家大吃一惊。
这电路交换技术打电话打这么爽,为啥突然又来个分组交换呢,电路交换它不香吗整这些花里胡哨的,那肯定是他有啥不一样的好处!分组交换使得APPAnet具备抗毁性,为啥这么说呢。分组交换是啥?大白话讲就是派出一大堆外卖小哥,告诉他们要把这些外卖赶紧送到指定客户手里。这外卖小哥那是精通地理位置,所以为了更快的送到客户手里,当它发现一个地方路堵了,或者塌了,马上动用自己丰富的知识找其他的路最后到达终点。执行分组交换也就是这个外卖小哥是一个叫IMP(Interface Message Processor 接口报文处理器)的小型机设备。
看到这小伙的天赋后,被誉为互联网之父的瑟夫、凯恩、柏兰登发明了被称为互联网骨干协议的TCP/IP,ARPANET也由4个节点发展到30多个节点,快速成长。1981年美国国家科学基金成立计算机科学网络CSnet,然后在Vinton Cerf的建议下,说这个姑娘和那个小伙挺配,让他俩连起来吧!然后就进行了两网互连,这一事件也被人认为是互联网正式诞生的标志~主要的技术特点就是TCP/IP协议簇的形成和应用,可以把这个协议理解为他们的结婚协议,说好他俩婚后怎么交涉…
虽然这小伙小姑娘都不错,但是这俩都出身贵族,一般人家根本见不着他们。但是随着技术的进步,他们的观念也在转变,逐渐走进了民众的身边。同时随着计算机体积不断缩小,以及视窗操作系统的出现,使得学习计算机的成本飞速下降。而1985年的仲夏之夜,Tim发明出世界上第一个web服务器和第一个web客户机,他把它称作World Wide Web,也就是我们说的3W,促进了浏览器的诞生。1993年4月,美国伊利诺州的伊利诺大学的NCSA发布Mosaic浏览器诞生。
说完了外国再说说咱中国的事情。
为了后面更好地讲课,一些基本的行话还是要预先说明一下滴,就像各种奇葩的网络术语,都需要有所了解才能在网上没有阻碍地快乐冲浪~
说白了就是大家都住在同一条街上,然后大家伙都比较懒,嗓子有比较大,直接就朝外大吼一声,然后整条街都听到了(所有主机都可收到信号)。而且你喊的时候,对面也能喊,两边可以同时说话(发出的信号可以在总线上双向同时传输)。
说白了就是现在大家聊天不能直接聊,得先告诉一个老大哥,老大哥帮你转告给另一个人。这个老大哥以前是集线器,现在换成了交换机。这种模式的缺点就是老大哥得一直干活,如果某天老大哥生病了就没法聊天了。
协议就是说白了就是一些规定,比如你们现在不方便说话,就需要偷偷用一些手势来说明现在的情况,而手势就是两个人约定好,哪些手势是什么意思,什么时候应该用手势,这样才能更好地沟通。同时也制定了一些规则,比如这个时候不能说话只能用手势。
这个就相当于一条高速公路能通过的货车,当然是单位时间通过的货车越多,传送的货物越多啦。数字带宽就是单位时间送出的货物!
数字带宽是你理想情况下能通过的信息总量,但是实际上,比如这个货车,可能中间路堵了,或者说某个关卡需要检测很久,即使货车到了,还要接受很长时间的检测所以很慢,这个吞吐量就是实际上的带宽。
理想情况:
T = S B W T=\frac{S}{BW} T=BWS
传输时间=信息量/带宽
实际上:
T = S P T=\frac{S}{P} T=PS
传输时间=信息量/吞吐量
这个就是说,比如说你要找你同桌,你直接叫了他一句,然后跟他开始聊天,这就是点到点连接。
其实计算机网络就是一个很好的例子,层与层之间的练习其实就是端到端,大家以为是直接通信的,其实是一层层过去的。举个例子,你现在要跟一个美国人聊天,但是你们都不会对方的语言,你通过一个很牛B的软件,发送一条中文过去,然后软件帮你弄到一个翻译官那里,给你翻译后转到美国人手里,美国人拿到后发了个英语过来,然后翻译官翻译后发给你,在你们俩看来你们好像是直接在对话,但是实际上中间其实是要先到翻译官的。
网络实在太复杂了,直接学太难,所以就把它分层,逐一击破。
信宿机第n层收到的对象应与信源机第n层发出的对象完全一致。
OSI(Open System Inerconnection 开放系统互联)是ISO(International Stantards Organization于1983年提出。
结构
– 应用层(供网的):主要为各种各样的网络应用提供网络服务(Email,FTP,微信)
– 表示层(信息转比特的):将信息表示为一定形式和格式的数据流(因为计算机不认识信息,但是认识比特,所以得转成比特流)
需要完成压缩解压缩、加密解密等
– 会话层(建联系的):它负责通信主机间的会话建立、管理和拆除。协调、通信双方。
– 传输层(连接加控制传输的):参考模型上的核心层之一,负责通信主机间端到端连接。对于TCP来说,还负责提供可靠传输、差错恢复、拥塞控制等额外的功能。
– 网络层(确定送快递路线的,负责把东西送到):另一个核心层,它的功能可用地址(为通信主机提供标识)和最优路径(路由,寻径,每一个中间设备都为到达的分组找到一根最优路径并送出)来描述,它负责将每一个分组从源机一路送达目的机。
– 数据链路层 (检错 打包 顺便确定快递送哪儿):提供介质访问服务,通过物理地址识别通信主机,提供可靠的帧传递,并做差错控制,流控等。
– 物理层 (真正的快递员):提供透明的比特流传输,只关心比特流传输,忽略比特流具体内容(就想快递小哥只关心把货物送到,但是不关心送的是啥)。
特点
– 每一层都完成特地的功能,都为它的上一层提供服务,每一层都是用下层提供的服务
每个人都可以让自己的小弟提供服务,同时自己也要给自己的老板服务。
封装/打包:将信息打包,从最高层——应用层开始逐渐下行到最底层——物理层
在每一层上,数据都被加上头部信息,用于传递信息
就是现在要发送一个快递,每到一个地方就得给快递加一个包装,用来帮它确定要去的地方,标注它要去的地方,并说明一些关于包裹的事项,还得查查有没有送错
具体来说
– OSI上三层,信息被表示为一定格式和形式的数据流(DataStream),先根据需求打造商品。
– 数据流被传到传输层,将其切割为适合传输的数据段(Segment),并加上段头,段头中包含定位应用进程的端口号等信息,就是说明要送给哪个进程,也就是给商品放进包裹,并说明要送到小区的一个房间的哪个人
– 数据段传到下一层网络层,添加分组头部形成分组(Packet),分组头部中包含寻址主机的IP地址和其他一些传输需要用到的信息,就是确定送给哪个局域网,也就是送给哪个小区
– 分组再传到数据链路层,添加帧头部形成帧,帧头中包含寻址主机所需的物理地址、校验等信息,就是确定送给哪个设备,可以理解成送给小区的哪个房间
– 帧到了物理层,被转成可供传输的比特流,也就是快递被准备好,要送出去了
到这里,概述的部分就告一段落,在这里我们介绍了互联网的历史,计网的基本概念,以及用到的基本模型,大概了解了计算机网络是咋运作的,接下来我还会继续逐层的讲解每层的情况,欢迎大家继续阅读~