计算机网络---概述

1.计算机网络基本概念

1.计算机网络概念

将分散在不同地点的,具有独立功能的计算机系统连接起来,进行数据通信的计算机集合叫做计算机网络

2.互连网,互联网,万维网,物联网

互连网: 多个计算机网络相连成为互连网(internet)

互连网和互联网:
互连网的概念仅限于上面所说的,而互联网是直世界上最大的互连网,也叫因特网

万维网(WWW): 万维网并不是一个物理网络,只是互联网提供的一种分布式信息服务,互联网上面分布着各个web站点,各个站点之间相互连接,通过访问站点,可以获取需要的信息
物联网: 他是以互联网为载体,让所有能够被独立寻址的普通对象全部连通起来

3.互联网标准化

  • 互联网上的协议均由RFC文档来描述

下面的叫法中,互联网和因特网的含义是一样的

并非所有RFC文档都是互联网标准,一个文档正式成为互联网标准需要经过下面四个阶段:

  1. 因特网草案:这个时候还不是RFC文档,有效期六个月
  2. 建议标准:开始成为RFC文档
  3. 草案标准
  4. 因特网标准

2.因特网的组成

核心部分:由各种网络和网络互连设备组成(通常指路由器),作用是提供连通和交换
边缘部分:由接入互联网的主机和终端组成,作用是进行数据处理和资源共享

1.因特网边缘主机之间的通信方式

1.客户服务器方式(C/S)

这里的客户和服务器都是运行在主机上的两个进程,应用进程通常需要占用主机上的两个端口,所以一般详细称为客户端和服务器端,有时候我们会遇见分别叫两个主机为客户和服务器的说法,这是因为往往对支持服务器端运行的主机的性能要求比较大,而支持客户端的主机性能并没有什么要求,甚至一个浏览器就可以,所以就管性能比较好的主机叫做服务器。

如果客户仅仅是一个浏览器,也叫做B/S模式,这样仅仅开发服务器端就可以了

客户服务器方式描述的是进程之间服务和被服务的关系

客户是服务的请求方,服务器是服务的提供方

2.对等连接方式(P2P)

本质上来讲,对等连接方式仍然是客户服务器方式,只不过是对等连接的双方是相等的,即可以是客户也可以是服务器,既可以请求服务,也可以提供服务

2.因特网核心部分

  • 核心部分的主要功能还是提供边缘中各主机的连通性,以便边缘主机进行数据处理和资源共享
  • 核心部分有各种网络组成,中间由路由器进行连接
  • 因特网以分组交换的方式传递数据,其中路由器是实现分组交换的重要组件,用来接到分组之后选路并转发

那么什么是分组交换呢?首先我们要了解电路交换:

1.电路交换

  • 电路交换的概念:
    传统方式中,如果两步电话要进行通信,那么需要使用一根电话线将两部电话进行连接,但是当电话的数量过多时,电话线呈指数增长,开销太大,后来使用交换机的方式:

    这样随着电话数量的增多,只需要增加一条到交换机的电话线即可。

电路交换中的交换的含义,也就是转接,即将一根电话线转接到另一根电话线,使两部电话连通起来

  • 电路交换的三个阶段:建立连接,通信,释放连接

  • 不可抢占性:两个电话建立连接后,在数据传输时,两个电话机之间有一条专用物理链路,只能供通信双方使用,直到通信结束才释放


  • 电路交换优点:通信实时性强,只有通线路延迟,适合实时大批量数据传输
  • 缺点:对突发性通信不适应,线路利用率低,不具备存储数据的能力,也不能平滑交通量

理解:
为什么实时性强,可以将数据流从源点到终点理解为一个管道,只要想传输数据,那么一定只有线路延迟,什么是线路延迟,就是在管道中传输数据花费的时间,其他的时间消耗没有,其他可能是什么时间消耗呢?以分组交换举例,如果当前路由节点的分组比较多,那么要转发的分组就要进行队列中进行等待,这是有时间消耗的。
为什么适合大批量数据传输?既然管道已经建立起来了,就像水管一样,你灌溉的时候肯定是希望水管填满水进行吧
为什么对突发性通信不适应,线路利用率低呢?就是你这个人可能比较随意,现在正在和hxf进行连接呢,但是你又想对lpf通信,你说你和hxf好不容易建立起来一个连接,半天可能也没说几句话,就断了连接和lpf建立连接说话了,太折腾了,开销太大了。
为什么不具备数据存储能力?管道你有个屁的存储能力,那不堵了吗
为什么不能平滑交通量?一条道路修好了只能供你自己使用,但是你闲者不用还不让出来,人家那天那么多车等着呢,也不让过,造成了交通拥挤,这不就是不能平滑交通量嘛

从上面的理解可以看出来,电路交换是不适合计算机网络的!!!我们在上网时,这回可能在看Youtube,不过一会之后可能又换了一个网站,用户的点击具有随意性,这样不就造成了频繁的建立连接和关闭连接。可能你访问人家一个网站,几乎没有进行什么数据传输,还有可能你进去之后浏览器就放在那里,你去吃饭了,那这条通信链路就这么占用着?
接下来引出我们计算机网络使用的方法:存储转发

2.存储转发

1.存储转发概述
  • 数据先传到相邻节点,全部存储下来,然后进行选路、转发给下一节点
  • 传输时,不占用一条端到端的通信链路,可以分段使用
  • 可以面向连接,也可以无连接

  • 存储转发优点:
  • 相对于电路交换来讲,线路利用率高,何为线路利用率?我是这样理解的,线路进行数据传输的时间占线路从创建到撤销时间的比值。电路交换那个线路的,要是好不容易建完了说不上几句话,真的白瞎了,存储转发的话采用了步步为营、摸石头过河的方法,先将数据全部传输到相邻节点并存储下来,发现下一个节点是空闲的,并且可以建立线路,那么就建立起来,然后再都传输并存储到下一节点,我觉得这个过程线路利用率几乎是百分之百的。而且中间通过的节点还可以进行差错检测和其他相关处理

缺点:
数据经过节点时延迟大,实时性差,每一个通过的节点都要进行数据的转发存储,延迟肯定大

2.存储转发的两种形式:

1.报文交换:数据传输以报文(逻辑信息包)为单位,长度不限且可变
2.分组交换:将报文分成若干较小的数据单元,称为分组,每次只能发送一个分组

和报文交换相比,分组交换的优缺点:
优点

  1. 限制了分组的长度,降低了节点所需的存储量
  2. 分组长度比较短,在传输出错时便于检测出错误并进行重发
    3.各个分组可以独立路由,选择最佳路径
    缺点:
  3. 每个分组在节点进行转发时都需要排队,这样可能造成更大的延迟。
  4. 各个分组必须携带地址信息,增大了开销
3.分组交换的两种实现方式

数据报

  1. 通信前不需要建立连接,较少建立连接和撤销连接的时间
  2. 每个分组独立路由,灵活
    3.每个分组在每个节点都需要进行路由,增加了开销,而且每个分组必须携带各自的地址信息,增加了开销
  3. 每个分组到达终点的顺序和时间不能保证,当发生拥塞时,分组可能被节点抛弃
    虚电路
  4. 通信前需要建立连接,路由只发生在数据传输之前,连接一旦建立,路由不再改变,可以节省路由选路时间
    (虚电路分永久型和临时型,永久型虚电路是固定保持的,只有临时虚电路通信需要建立连接过程)
    2.每个分组不需要再携带详细信息,分组就像一个快递,上面是带有快递单的,上面会有发件人信息,收件人信息,如果你把一个大东西分开发送,还需要在快递单上面说明组装顺序,分组也是这样,如果不采用虚电路的方法,那么每个分组都需要携带源主机信息,目的主机信息,以及分组序号,那么使用虚电路之后,这些信息都可以省去,但是需要加上逻辑信道号,分组用这个来寻找虚电路所在位置,这也就是在两个两个人之间加上一个传输带,相关信息在建立传输带的时候就已经确定,只要你发信息就默认知道了源主机和目的主机的信息,你只需要加上一个逻辑信道号找到这个传输带就好了,你的分组按序发送,那么晚我这边的分组也会按序接收
    3.线路或者设备发生故障时,可能会导致虚电路中断,必须重新建立连接

3.计算机网络的性能指标

时延

  • 发送时延:数据块长度/发送速率
  • 传播时延:信道长度/信号在信道上的传播速率
  • 处理时延:交换节点为存储转发而进行的必要工作所花费的时间
  • 排队时延:节点缓存队列中分组排队所经历的时间

  • 时延带宽积:传播时延 * 带宽

  • 往返时延RTT(Round-Trip Time):表示从发出数据到收到确认经历的时间;

  • 利用率:包括信道利用率和网络利用率,利用率不是越大越好,就像马路上并不是车越多越好,车太多根本跑不起来啊,信道利用率增大,时延也会增大

4.计算机网络体系结构

概述

  • 将连网整体工作按照层次进行划分,起到了解耦的作用,每层完成特定的功能,每层都可以独立实现,易于维护

  • 每一层都要为上层提供服务,也就是说上层都能调用下一层的服务,通过层间接口进行,注意上下层之间进行的交流并不是协议规定的内容,同级之间才是

  • 将层次、层间接口、以及各层协议的集合叫做计算机网络的体系结构
    网络协议
    网络协议三要素:语法、语义、时序

可以将计算机之间通过网络进行的通信,理解为两个人之间的聊天,协议就是他们之间使用的语言,传递的数据就是两个人要传达给对方的信息,如果两个人不能使用公共的语言,那么他们之间就无法进行通信,传递数据。协议一致,才能通信自如。

但是实际上人与人之间的交谈即使使用同一种语言,但是在交流的方式上很是随意,可能会漏掉几个词,或者进行不完整的表述,对方都能够根据语境理解意思,但是计算机这个彻头彻尾的钢铁直男做不到这个,协议必须进行保姆式的规定和要求,要做到周全的考虑,来面对各种可能发生的情况,这是二者之间的不同之处。在计算机通信之初,没有明确的系统化与标准化的协议,迫切需要一种通用的“普通话”

所以根据自己的理解,在通信双方规定好了统一的语言之后,那么三要素就很容易理解了,语法,就是两个所说的话使用的格式,如果使用英语,那么就要遵守英语语法,语义,就是交流的双方要表达的意思,时序,因为计算机是不会像人一样根据语义来判断说话时机的,所以网络协议还要明确的规定计算机之间交流的时序,例如著名的TCP三次握手,就是一个时序规定


1.典型的体系结构

OSI模型
由国际标准化组织提出的,共七层,从低到高依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
只是理论模型,无产品推出。
TCP/IP模型
共分四层,从低到高依次为网络接口层、网络层、传输层、应用层;
TCP/IP没有对网络接口层内容做出具体规定。

因为OSI规定的七层模型结构复杂,划分太细而没有实际产品,只是用来作为一个参考的标准
TCP/IP的四层定义的比较简单,但是比较模糊,实际定义的只有三层内容,对网络接口层没有具体定义内容
而不管在教材中,还是面试中,使用的都是折中的五层模型,就用这个,上面只是一个由来背景的说明

各层功能

对等层间传输的数据包成为协议数据单元
从低到高依次称作:比特、帧、分组(数据报)、报文段、报文(bit,frame,datagram,segment,message)

2.网络层次的理解

  • 通过物理层和数据链路层,各个节点可以连接起来形成一个物理网络,把这两层统一叫做网络接口层
  • 如果一个网内节点要和网外节点进行通信,那么一定要通过网络层实现,我的理解是要出网关,除了网关之后使用外网也就是公网ip进行通信
  • 如果要区分不同进程通信,那么就要使用传输层
  • 如果要完成应用解析,那么就通过应用层
  • TCP/IP只是定义了网络层,传输层,应用层这三层具体的内容,至于下面网络接口层是什么样的,TCP/IP一点也不关心,也没有做任何规定,只要我解决了物理网络的连通,完成了进程到进程之间的通信就可以了。


通过这张图,可以看出网络层ip的重要性,在互联网核心部分的路由器作为一个中间传输节点,只需要实现物理层,数据链路层,网络层就可以了,这三层的主要作用就是传输,而传输层和应用层的作用是数据处理


这篇笔记作为概述,主要是对计算机网络有一个基本的入门级认识,至于每一层的内容,都会在接下来详细深入的理解,这一遍是横向的总结,打破认知障碍,在掌握的比较全面之后,就可以就行专题式的总结,可以以面经为出发点。