用最有趣的方式带你解决计算机网络!(零)——概述

一、总述

  计算机网络可谓是计算机最重要的基础专业课之一,大家看到对于其中大量的概念、算法、原理、协议都非常头疼,但是每次看完又一下子会忘记,所以希望能用各种有趣(骚里骚气)的比喻和举例帮助大家更深刻的记忆相关的姿势 QAQ

注:本教程参考华南理工大学的计算机网络大学mooc教程,如果意犹未尽的同学可以继续去深入学习一波~

二、互联网络发展史

(1) 奇妙的起源(1955-1970s初期)

  学习一个东西,最好从他是怎么来的开始说起,只有知道了过去它是怎么一步步过来的,才能知道现在它的每个部分都是为啥这么设计,它的好处在哪里,能理解的更加深刻~
  那我们的男主角小计,是怎么一步步长大成为今天这样迷倒万千观众的帅哥的呢,故事要从1955年说起…
  1957年,老大哥前苏联发射了第一颗人造地球卫星,这美国可不能坐视不管啊,落后就得挨打,赶紧在1958年2月成立了APRA(Advanced Research Projects Agency),意思是高级研究计划署,就相当于游戏里建了个能研发新技术的工厂。
  在这众多项目中,有个娃子,叫ARPANET,在1969年出生了,这家伙就是现在的因特网他爸。他有四个节点,分别位于斯坦福研究院,加州大学圣巴巴拉分校,加州大学洛杉矶分校,犹他大学。
图片来自百度百科
  没错,大家看这几个节点的位置就能感受到此子的不凡,但更加不凡的是,他特立独行,有着跟前辈们完全不一样的特点。它采用了包交换(Packet Switching),也叫分组交换,这可让大家伙大吃一惊。就像过去大家都喜欢穿运动裤,突然一个小伙穿着破洞裤就来了,之前最主要的通信网络——电话网络,用的一直都是电路交换技术,让大家大吃一惊。
  这电路交换技术打电话打这么爽,为啥突然又来个分组交换呢,电路交换它不香吗整这些花里胡哨的,那肯定是他有啥不一样的好处!分组交换使得APPAnet具备抗毁性,为啥这么说呢。分组交换是啥?大白话讲就是派出一大堆外卖小哥,告诉他们要把这些外卖赶紧送到指定客户手里。这外卖小哥那是精通地理位置,所以为了更快的送到客户手里,当它发现一个地方路堵了,或者塌了,马上动用自己丰富的知识找其他的路最后到达终点。执行分组交换也就是这个外卖小哥是一个叫IMP(Interface Message Processor 接口报文处理器)的小型机设备。
在这里插入图片描述

(2) Internet的形成(1970s初期-1982)

  看到这小伙的天赋后,被誉为互联网之父的瑟夫、凯恩、柏兰登发明了被称为互联网骨干协议的TCP/IP,ARPANET也由4个节点发展到30多个节点,快速成长。1981年美国国家科学基金成立计算机科学网络CSnet,然后在Vinton Cerf的建议下,说这个姑娘和那个小伙挺配,让他俩连起来吧!然后就进行了两网互连,这一事件也被人认为是互联网正式诞生的标志~主要的技术特点就是TCP/IP协议簇的形成和应用,可以把这个协议理解为他们的结婚协议,说好他俩婚后怎么交涉…

(3) 走向公众

  虽然这小伙小姑娘都不错,但是这俩都出身贵族,一般人家根本见不着他们。但是随着技术的进步,他们的观念也在转变,逐渐走进了民众的身边。同时随着计算机体积不断缩小,以及视窗操作系统的出现,使得学习计算机的成本飞速下降。而1985年的仲夏之夜,Tim发明出世界上第一个web服务器和第一个web客户机,他把它称作World Wide Web,也就是我们说的3W,促进了浏览器的诞生。1993年4月,美国伊利诺州的伊利诺大学的NCSA发布Mosaic浏览器诞生。

  说完了外国再说说咱中国的事情。

  • 1987年9月20日,从北京向德国卡鲁厄尔大学发送了第一封邮件标志着咱中国人使用Internet的起点。
  • 1994年4月20日,中国克服重重障碍,实现与Internet的全功能连接。
  • 1996年发布了中国人写的第一个RFC文档RFC1922。
  • 1997年,中国四大网络互联互通。
  • 2006年,建成世界上最大的纯IPv6网络CNGI。
  • 2012年出现“互联网+”概念。

三、常用基本概念

  为了后面更好地讲课,一些基本的行话还是要预先说明一下滴,就像各种奇葩的网络术语,都需要有所了解才能在网上没有阻碍地快乐冲浪~

广义上的网络

  • 广义上网络是指类似的事物连接在一起,以提供某些功能,说白了就是把能干一个事儿的人都叫起来,然后大家一起干一个活儿,人多力量大。就像快递网络啊,邮政网络啊,电话网络啊,都是网络。

计算机网络

  • 计算机网络是网络的一种,它指的是使用单一技术相互连接的自主计算机的互联集合。说白了就是用同一个技术把很多自主的计算机让它们互连起来,要注意这个自主,就说明每个计算机都是一个有血有肉的小伙,他不受其他人的限制,他的开关都是由自己决定的。同时这个介质也可以很多样,可以是光纤、铜线也可以是微波、红外、卫星,而且也可以呈现不同的大小形状形式。

互联网络

  • 互联网络顾名思义,就是计算机网络的相互连接,是网络的网络,就是我们常说的Internet,是全球最大的网络。简单的说就是每个地方都有自己的网络,而互联网络呢,就是把大家的小圈子连起来,从而让大家伙都连起来。而我们常说的万维网并不是计算机网络,它是构建在互联网络上的一个分布式系统,上面的一切都表现出高度一致性,就像一个文档一样。

信道

  • 信号的通道。

拓扑

  • 信道的分布方式。
    – 分为总线型、星型、环型、树型和网状。
    – 最常见的是总线拓扑和星型拓扑。
    在这里插入图片描述

总线拓扑

  • 主机连接在总线上,相互直接通达。
    – 从主机上发出的信号在总线上双向同时传输
    – 所有的主机都可收到这个信号

说白了就是大家都住在同一条街上,然后大家伙都比较懒,嗓子有比较大,直接就朝外大吼一声,然后整条街都听到了(所有主机都可收到信号)。而且你喊的时候,对面也能喊,两边可以同时说话(发出的信号可以在总线上双向同时传输)。

星型拓扑

  • 主机都挂接在一个中心节点上。
    – 早期中心节点由集线器充当,现在的中心节点主要由交换机充当。
    – 单点故障。

说白了就是现在大家聊天不能直接聊,得先告诉一个老大哥,老大哥帮你转告给另一个人。这个老大哥以前是集线器,现在换成了交换机。这种模式的缺点就是老大哥得一直干活,如果某天老大哥生病了就没法聊天了。

协议

  • 一系列规则和约定的规范性描述,它控制网络中的设备之间如何进行信息交换

协议就是说白了就是一些规定,比如你们现在不方便说话,就需要偷偷用一些手势来说明现在的情况,而手势就是两个人约定好,哪些手势是什么意思,什么时候应该用手势,这样才能更好地沟通。同时也制定了一些规则,比如这个时候不能说话只能用手势。

数字带宽

  • 值在单位时间内流经的信息总量
  • 带宽越大越好,单位时间信息越多
  • 基本单位:比特每秒,即bps
    – 常用K,M,G,
    – 1Gbps= 1 0 3 10^3 103Mbps= 1 0 6 10^6 106kbs= 1 0 9 10^9 109bps

这个就相当于一条高速公路能通过的货车,当然是单位时间通过的货车越多,传送的货物越多啦。数字带宽就是单位时间送出的货物!

吞吐量

  • 指实际的、可测到的带宽。
    – 网络设备性能
    – 用网时间
    – 网络拓扑
    – 用户数量
    – 用户计算机性能
    – 服务器

数字带宽是你理想情况下能通过的信息总量,但是实际上,比如这个货车,可能中间路堵了,或者说某个关卡需要检测很久,即使货车到了,还要接受很长时间的检测所以很慢,这个吞吐量就是实际上的带宽。

信息量、带宽和传输时间之间的关系

理想情况:
T = S B W T=\frac{S}{BW} T=BWS
传输时间=信息量/带宽

实际上:
T = S P T=\frac{S}{P} T=PS
传输时间=信息量/吞吐量

点到点

  • 信源机和信宿机之间的通信由一段一段的直接相连的机器间的通信组成机器间的直接相叫做点到点连接。
  • 举例:计算机-计算机,交换机-交换机

这个就是说,比如说你要找你同桌,你直接叫了他一句,然后跟他开始聊天,这就是点到点连接。

端到端

  • 信源机和信宿机之间直接通信,好像拥有一条直接的线路
    –它是由一条一条点到点连接组成的

其实计算机网络就是一个很好的例子,层与层之间的练习其实就是端到端,大家以为是直接通信的,其实是一层层过去的。举个例子,你现在要跟一个美国人聊天,但是你们都不会对方的语言,你通过一个很牛B的软件,发送一条中文过去,然后软件帮你弄到一个翻译官那里,给你翻译后转到美国人手里,美国人拿到后发了个英语过来,然后翻译官翻译后发给你,在你们俩看来你们好像是直接在对话,但是实际上中间其实是要先到翻译官的。

计算机网络的分类

  • 按照传输介质:
    – 有线网络
    – 无线网络
  • 按照大小和规模:
    – PAN(Personal Area Networks)个域网——1米(电脑鼠标)
    – LAN(Local Area Networks)局域网——1公里(校园、单位、建筑)
    – MAN(Metropolitan Area Networks)城域网——100/1000公里(国家、洲)
    – Internet互联网——1万公里(全球)

四、参考模型

网络实在太复杂了,直接学太难,所以就把它分层,逐一击破。

分层的好处

  • 各层工作独立,层之间通过接口联系,降低协议工作的复杂程度
    – 每个人分配好自己的工作,大家只用关心自己负责的部分,就不会因为推脱责任而掐架,而且大家干的事情固定了也降低了复杂度。比如做菜,本来大家都要干全程就很难学,现在把它分掉了,一个人只用洗,一个人只用切,一个人只用烧,协议只用规定好每个人干啥,每个人要用别人的结果直接调用就行,降低了复杂度
  • 灵活性好,任何一层的改变不影响其他层
    – 洗菜的同学发现自己洗菜太累了,买了个洗菜机,用洗菜机来洗菜,但是他做出了洗菜方式的改变并不影响其他人干活,因为他怎么洗菜后面的人不关心,只要他洗出来就好。这样就能有很强的灵活性,你这一层想什么办法随你定随你改,能把东西弄出来就行。
  • 每层的实现技术可以不同,减少了实现的复杂度
    – 就跟刚才说的一样,每一步不管你咋样,你咋花里胡哨都行,不用去管别人咋搞,你只要能把东西弄出来就行,就不用担心这么多乱七八糟的,降低了复杂度。
  • 易于维护,每层可以单独进行调试
    – 还是一个道理,大家都自己管自己的,所以大家都可以自己对自己实现的方法进行改进,不用管别人。
  • 有利于标准化

分层的原则

信宿机第n层收到的对象应与信源机第n层发出的对象完全一致。

典型模型

ISO OSI七层模型
  • OSI(Open System Inerconnection 开放系统互联)是ISO(International Stantards Organization于1983年提出。

  • 结构
    – 应用层(供网的):主要为各种各样的网络应用提供网络服务(Email,FTP,微信)
    – 表示层(信息转比特的):将信息表示为一定形式和格式的数据流(因为计算机不认识信息,但是认识比特,所以得转成比特流)
    需要完成压缩解压缩、加密解密等
    – 会话层(建联系的):它负责通信主机间的会话建立、管理和拆除。协调、通信双方。
    – 传输层(连接加控制传输的):参考模型上的核心层之一,负责通信主机间端到端连接。对于TCP来说,还负责提供可靠传输、差错恢复、拥塞控制等额外的功能。
    – 网络层(确定送快递路线的,负责把东西送到):另一个核心层,它的功能可用地址(为通信主机提供标识)和最优路径(路由,寻径,每一个中间设备都为到达的分组找到一根最优路径并送出)来描述,它负责将每一个分组从源机一路送达目的机。
    – 数据链路层 (检错 打包 顺便确定快递送哪儿):提供介质访问服务,通过物理地址识别通信主机,提供可靠的帧传递,并做差错控制,流控等。
    – 物理层 (真正的快递员):提供透明的比特流传输,只关心比特流传输,忽略比特流具体内容(就想快递小哥只关心把货物送到,但是不关心送的是啥)。

  • 特点
    – 每一层都完成特地的功能,都为它的上一层提供服务,每一层都是用下层提供的服务
    每个人都可以让自己的小弟提供服务,同时自己也要给自己的老板服务。

TCP/IP(DoD)四层模型
  • 结构
    – 应用层
    – 传输层
    – Internet
    – 物理层
OSI模型和DOD模型比较
  • 相同点
    – 分层
    – 都有应用层(服务不同)
    – 都有可比较的传输层和网络层
    – 使用分组交换而不是电路交换技术
  • 不同点
    – TCP/IP将表示层和会话层包含到了应用层
    – TCP/IP将OSI的数据链路层和物理层包括到了一层中
    – TCP/IP更简洁,但OSI更易开发和排除故障
    – TCP/IP广泛应用,而OSI仅在教科书中
OSI模型没流行的原因
  • 糟糕的时机:TCP/IP已经流行
  • 糟糕的技术:参杂太多政策考量
  • 糟糕的实现:庞大而笨拙

五、参考模型相关的概念

一次发送涉及的主角

发送方
  • 封装/打包:将信息打包,从最高层——应用层开始逐渐下行到最底层——物理层

  • 在每一层上,数据都被加上头部信息,用于传递信息
    就是现在要发送一个快递,每到一个地方就得给快递加一个包装,用来帮它确定要去的地方,标注它要去的地方,并说明一些关于包裹的事项,还得查查有没有送错

  • 具体来说
    – OSI上三层,信息被表示为一定格式和形式的数据流(DataStream),先根据需求打造商品。
    – 数据流被传到传输层,将其切割为适合传输的数据段(Segment),并加上段头,段头中包含定位应用进程的端口号等信息,就是说明要送给哪个进程,也就是给商品放进包裹,并说明要送到小区的一个房间的哪个人
    – 数据段传到下一层网络层,添加分组头部形成分组(Packet),分组头部中包含寻址主机的IP地址和其他一些传输需要用到的信息,就是确定送给哪个局域网,也就是送给哪个小区
    – 分组再传到数据链路层,添加帧头部形成帧,帧头中包含寻址主机所需的物理地址、校验等信息,就是确定送给哪个设备,可以理解成送给小区的哪个房间
    – 帧到了物理层,被转成可供传输的比特流,也就是快递被准备好,要送出去了

接收方
  • 解封装/解包:将收到的比特流解包,从最低层——物理层开始逐渐上行到最高层——应用层提出去信息。
  • 解封装的过程是封装的逆向过程,在每层去掉头部信息,最终还原出应用层的输出:信息
  • 在网络层,从下层收到分组,去掉分组头,提取出数据段,送给上层传输层

在这里插入图片描述

中间的信号通道

在这里插入图片描述

数据在各层的形式

  • 数据单元(PDU:Protocol Data Unit)
    – 信息(Information,应用层)
    – 数据流(Data stream,上三层)
    – 数据段(Segment,传输层)
    – 分组(Packet,网络层)
    – 帧(Frame,数据链路层)
    – 比特流(Bits,物理层)

实体

  • 每层中活动的元素
  • 每一层都有一个实体,可能是硬件也可能是软件,它负责实现本层的功能,就是这一层干活的家伙就叫实体
  • ==对等实体(Peer Entity):==收发双方对应层上的实体互称,还是前面跟美国人用牛Bapp聊天的例子,先发到翻译,翻译先帮忙翻了再给对方,但是你并没有注意到,你以为你是直接跟那个美国人聊天,你们就是对等实体

虚拟通信

  • 只看发方和收方的对应层,发现收发双方的对应层之间(即对等实体之间)有一根直接的通道(虚通道),沿着这根通道,PDU从发放到达收方

服务、协议和接口之间的关系

  • 参考模型上的每一层都为它的上层提供服务,以接口的形式供上层调
  • 协议作用于对应层之间
  • 层与层之间有接口,用于服务的调用
    在这里插入图片描述

总结

  • 任何一次通信,总是以发放的封装开始,接收方的解封装结束。
  • 封装由上而下,信息从数据流起,数据段、分组、帧,到比特流。
  • 数据从发方穿过中间的网络云流向双方,是一个“U”型流。
  • 发方和收方对应层之间有一个“直接”的通道
  • PDU从发方流向接收方

六、结语

  到这里,概述的部分就告一段落,在这里我们介绍了互联网的历史,计网的基本概念,以及用到的基本模型,大概了解了计算机网络是咋运作的,接下来我还会继续逐层的讲解每层的情况,欢迎大家继续阅读~

猜你喜欢

转载自blog.csdn.net/toohandsomeIeaseId/article/details/105001715