计算机网络
本文为计算机网络相关考试的书本内容详细总结
之前专栏分享过自顶向下的分析方法,本文采用常规的自底向上的方法从物理层到应用层对计算机网络相关的内容、概念进行系统复习,总结;而计算类型题目本文暂不涉及
本文内容来自cfeng自我理解,可能有误,欢迎指正~
在正式介绍网络各层次结构,先对网络进行一个概括性描述:
广义理解: 计算机网络就是计算机通信网络: 用通信链路将多个计算机连接起来的计算机系统的集合,以传输信息为主要目的
资源共享理解: 计算机网络就是资源共享系统: 分布在不同的地理位置上的具有自治功能的多台计算机、终端和附属设备在物理设备上相连,按照网络协议通信,以共享资源和协同计算为目标的系统
用户透明理解: 计算机网络是一个分布式系统: 利用网络操作系统为用户提供网络资源管理服务,整个网络像一个计算机系统一样对用户提供透明的服务
可以看到不同的侧重点具有不同的解释,但是网络就是将多台计算机连接到一起
计算机网络: 将多台计算机连接到一起 ---- 连接计算机
互联网 internet: 遵循某种网络协议,将不同的计算机网络连接到一起,是网络的网络; ---- 连接网络
因特网 Internet: Internet 国际互联网, 世界上最大的互连网络 ---- 连接所有网络
(互联网为小写i, 因特网为大写I)
从范围上看: 计算机网络 < 互联网 < 因特网
任何一种技术的诞生都具备两个条件: 前期技术积累, 社会需求
计算机网络是计算机技术和通信技术相结合的产物
本部分可参见专栏之前的blog…
WAN = 公网, 外网 , LAN = 内网
局域网LAN上每一台设备都有一个或者多个局域网IP(私网、内网IP),局域网地址是局域网内部分配的, 不同的LAN互不影响,所以不同的LAN中的IP可以相同
WAN上每一台设备都有一个或者多个WAN、公网IP地址, IP地址需要到ISP处 缴费才能申请 (不能重复),
广域网(公网)与局域网(内网)电脑交换数据通过路由器或网关 的NAT(网络地址转换)进行, LAN内电脑发起的对外连接请求,路由器或者网关都不会阻拦, 但是外网对LAN的电脑的请求一般都会被网关拦截 【由内向外发起信息不会拦截,由外向内的信息要进行筛选才会转发) ----- 很多内网用户没有“远程”,速度不好
LAN和WAN是相对的概念 : 比如公司里具有一个庞大的局域网LAN, 办公室里面的几台电脑组成一个小LAN , 相对公司大LAN, 小LAN为LAN, 大LAN为 外网WAN; 而大LAN相对整个Internet,又是LAN
内网 通过网关( 连接两个网络的节点 ---- 双重电脑身份,既有内网IP,又有外网IP, 两个IP捆绑在不同的网卡 【所以外网和内网的设备可以有多个IP ,eg : 网关】)的代理访问外部网络
外网的设备看不见内网设备, 内网设备想与外网某台设备通信, 都是将目的外网IP告知网关(内网IP), 网关识别后,通过其网卡绑定的外网IP与目的设备通信, 因此,对外网设备来说,它只会认为是和网关在通信, 而不是内网的机器
eg: 网吧组成的LAN, 使用的同一个网关, 网吧内的所有电脑访问ip地址查询,都是同一个IP, 因为对于外网服务器,只会识别网关
内网也可能是外网的一部分,比如公司大LAN,相对办公司的小LAN,大LAN连同外部更大的Internet都是外网, 办公室的小局域网的网关(路由器)连接到外网,进行数据路由
ADSL调制解调器(电话上网)比较特殊,有两种工作方式:
- 当其modem打开代理功能,modem可以看作一台电脑,是外网的一个节点,同时与your computer组成LAN, 这个modem此时就是网关
- 通过电脑拨号上网,modem就是一个外部设备,your computer直接通过电话线连接在internet上面,不存在其他的网络(没有经过网关的代理), 所以不区分内外网
cfeng认为区分内外网就是访问Internet是否需要经过网关(或者路由器、交换机), 直接可以被访问就是外网,需要代理就是内网
WAN外网和内网LAN其实除了是否走代理,最主要的还是距离上的划分,WAN任务是通过长距离运送主机发送的数据,MAN城域网将多个LAN互联,LAN的作用范围一般较小
总线型网络: 拓扑结构为总线型
星型网络: 拓扑结构为星型
环型网络: 拓扑结构为环型
网状网络: 拓扑结构为网状
计算机通信指的是计算机进程之间的通信
网络中的结点可以是计算机、集线器、交换机、路由器等
从一个结点到另一个结点的物理线路, 中间没有其他的结点
连接在因特网上面的计算机
因特网服务提供者, 提供商
上面提到公网IP需要向ISP申请
互联网交换中心IXP的作用就是允许两个网络直接相连并且交换分组,不需要第三个网络来转发分组; 一般由第三方中立运营,提供网络互联、流量资源交换的服务场所, 促进互联网骨干网的网间互联
IXP本身只提供接入平台,不参与成员流量交换(比如移动和电信的流量交换),接入平台的各家运营商一般采用免费对等互联策略(Peering)
之前分享过,请求评议包含很多Internet的重要资料,有相关组织管理
在个人工作的地方将属于个人使用的电子设备使用无限技术连接在一起的网络,(比如使用热点将自己的手机、电脑等设备连接称为局域网)
因特网中传送的数据单元, 由 首部(header) + 数据段 组成,【分组又称为包,首部就是包头】
路由器收到一个分组, 会首先校验一个分组是否正确,并过滤掉冲突包错误,确定包正确,才会取出目的地址,查找路由表,将分组进行转发
实现分组交换的关键构建,任务是转发收到的分组( 网络核心的重要部分),分组交换采用存储转发技术 ---- 将一个报文划分为几个分组再进行传送,每一个分组选择独立传输路径,正确交付到分组传输的终点
跟数据存储有关的就是2^10, 和速率、频率、网速、带宽等有关的就是10^3
表示单位时间从网络的某一点到另外一点的“ 最大数据率”, 表示网络传送数据的能力, 单位就是bit/s , 描述的是设备的最大发送速率 【对应发送时延】
常用的带宽单位: kb/s 10^3 Mb/s 10^6…
在计算机网络中,KB = 2^10 , 1024, 不是1000, 从上图可以看出,数字信号中,信号的宽度随着带宽的增大而变窄
因为分组交换的关系,A计算机到B的数据延迟 不一定等于 B计算机到A的延迟,
在数据传输过程中,因为需要存储转发,时延产生的地方一共三种:
因为发送速率(max就是带宽)限制,将数据块 (一个bit一个bit打出)从结点进入传输媒体需要的时间
从发送数据帧的第一个bit算起,到该帧的最后一个bit发送完毕所需要的时间
发送速率: 网络设备向信道发送数据的速率, 和带宽不同,带宽针对的是网络中的数据传输,这里针对的是从网络设备发送到信道
信道带宽: 单位时间信道允许发送的最大速率 ;
发送时延 = 数据块长度bit / 发送速率 bit/s
电磁波在信道中传播一定的距离花费的时间, 数据发送速率和传播速率完全不同
电磁波自由空间传播速率: 3 * 10^5 Km/S , 铜线中为2.3,光纤中为2.0, 需要对2 * 10^5 KM/S有映像 【也就是电磁波真空速度 和光速 相同; 相速度可以大于光速】
传播时延 = 信道长度 m / 信号在信道的传播速率 m/s
分组交换,中间结点收到数据后需要在结点中进行校验处理,并且需要等待队列前方的数据分组发送完成,整个时间就是处理时延
总时延 = 处理时延 + 发送时延 + 传播时延
一般发送时延占据较多,高速网络链路, 只是数据的发送速率(带宽)高,描述的是带宽、接口特性, 不是数据在链路上的传播速率 — 传播速率是电磁波等载体的传送的速率
100MB数据,带宽1M b/S,线路长1000KM,计算发送、传播delay
【唯一需要注意的就是单位转换,B为Byte, 1Byte = 8 bit 100MB = 100 * 2^20 * 8 这里的带宽 却是 1M b/s, 不是Byte,就是bit 这里数据块长度为存储,使用2^幂, 而带宽为速率单位和时间S有关,为10^幂】
发送时延 = 100 * 2^20 * 8 / 1 * 10^3 = 819.2 s
【题目中没有显式给出传播速率,但是光纤链路,电磁波的传播速率2 * 10^5 KM/S
传播时延 = 1000 * 10^3 / 2 * 10^8 = 0.005s = 5ms
因为光纤传播速度快,所以传播时延很小
例2: 键盘上一个字符,在1 M b/s光纤传播,1000KM
[C语言和一般情况Char占用1字节, 而java中采用Unicode编码,为存储更多的字符,采用2字节]
发送时延 = 1* 8 / 1 * 10 ^6 = 8us
传播时延 = 1000 * 10^3 / 2 * 10^8 = 5ms
数据太少,传播时延反而占据较多
时延带宽积表示一条数字链路上的数字数据bit个数,带宽* 传播时延 【每s进入链路带宽个bit, 一共要传播时延s才能传输完成,这期间的bit都滞留在链路上
以比特为单位的链路长度
信道传播延迟20ms,带宽 10M b/s
时延带宽积 = 20 * 10^ -3 * 10 * 10^6 = 2 * 10^5 bit
在第一个bit到达终点时,链路上还有
往返时延 Round Trip Time: 表示从发送端发送数据开始,到发送端接收到来自接收端的确认(ACK,接收端收到后立刻返回ACK),总共经历的时延(不只是传播时延)
线路利用率: 线路被占用时间比率 ---- 某线路有% 多少的时间被利用(有数据通过)
信道利用率 = 有数据通过时间 / (有 + 无) 数据通过时间
完全空闲的线路的利用率为0, 网络利用率 为 网络中所有线路的加权或者平均线路利用率
D0表示网络空闲时时延, D表示当前时延,U 为网络利用率, 简单可以表示:
D = D0/ 1 - U 当网络利用率增大时,引起的网络时延迅速增加; 因为需要排队
单位时间内某个网络(信道,接口)的数据量,表示对于现实世界的网络的一种测量,吞吐量受网络带宽或者速率限制
上述的带宽、速率、吞吐量、时延、往返时延、信道利用率都是计算机网络常用的性能指标
网络协议 ,就是为进行网络数据交换建立的规则, 计算机网络各层以及其协议集合,称为网络的体系结构
五层体系结构: 物理层、数据链路层、网络层、传输层、应用层; 7层 就是再传输层上面加了表示层和会话层; 网络层的最重要协议IP协议, 传输层最重要的协议TCP/ UDP协议, 应用层常见的HTTP协议、WS协议
网络设计需要考虑的: 编址机制addressing、错误控制 error control、 流控制 flow control 、 路由选择routing 、 信号传输: 数字传输、编码、调制、 多路复用multiplexing
协议分层的好处: 问题简单化、灵活性好,促进标准化工作 【层数太少协议还是复杂,层数过多集成复杂,功能重复】
计算机网络各层以及其协议集合, 是一个抽象的概念
五层体系结构: 物理层、数据链路层、网络层、传输层、应用层; 7层 就是再传输层上面加了表示层和会话层; 网络层的最重要协议IP协议, 传输层最重要的协议TCP/ UDP协议, 应用层常见的HTTP协议、WS协议
数据链路层和物理层都是点到点之间的通信 – 相邻结点的通信
网络层以及其上的为端到端系统提供服务
TCP/IP 四层协议的表示方法:
主机A: 应用层、传输层、网络层、数据链路层
|
路由器: 网络层、 网络接口层MAC
|
主机B : 应用层、传输层、网络层、数据传输层
可以看到不具备通用性,只能描述TCP/IP模型,没有区分服务,接口,缺乏完整性
网络之间通信,是从最高层将数据逐层封装到底层,通过物理层bit流放松,接收方从下往上逐步解析 【所以设计RPC也需要如此功能明确】
可以看到应用程序数据不断加上应用层 —> 链路层的首部, 在链路层还需要加上尾部
接收方物理层收到bit流后,交给数据链路层,数据链路层剥去帧首部和帧尾部,向上提交给网络层, 上面各层依次剥离首部,之后应用数据交给程序进程
上面提到网络可以按照就拓扑结构进行分类, 拓扑结构就是网络中各个结点互联的几何构型和特性,也就是各个结点的连接方式 【结点分为端结点和交换结点, 线 分为有线传输介质和无线传输介质】
总线型简单理解就是一根传输线作为传输介质,所有的结点都通过硬件接口直接连接到这根传输线上 , 地位平等
星型结构主要就是有一个中间的网络交换结点,其余都连接到该结点,发散状,任何两个结点的通行需要经过中心结点
多个MAU通过点到点的链路首位相连组成一个闭合的环,早期的网络多采用
星型拓扑演变 ---- 倒置的树,最上方为根结点, 分层管理和控制系统, 容易扩展,但是管理困难
数据从根结点向下发送到叶子结点,比较依赖根结点,如果根故障,那么全网都会故障,就和星型是一样的
网络中任意两点都直接相连, 任何两站点之间的通信冗余高(可用性高), 但是组件费用高,硬件成本高,适合高可用场景
网络交换设备(同通信子网中的各个结点)按照某种动态方式分配线路资源和数据转发方式
通信双方在数据传输前要建立一条物理线路【可以复用信道】,该物理线路一直保持到通信双方结束才会释放
公共电话交换网络为典型的电路交换【电路建立(电话拨号成功建立一条链路)、 数据传输(通话)、电路拆除(通话结束挂机,物理线路自动拆除)】
建立物理线路时间长,但是建立之后的延迟小(主要就是传播延迟,没有处理延迟和排队延迟,发送延迟也小)
但是每条线路独占,线路利用率低,不会发生数据冲突,不会乱序 , 因此没有纠错机制, 数据只需要电路号,不需要目的地址
发送报文(目的地址,源地址),控制信息按照规则组成数据单元,进入通信子网, 通信子网的交换设备完成数据单元的接收,校验,排队,选路(路由)、转发
按照数据封装方式,分为报文交换和分组交换; 报文交换不管数据大小,全部封装一个报文,而分组交换会将长的数据划分为多个分组,接收结点会组装
报文交换
在发送数据的时候,不论数据的大小,都会作为一个发送的数据单元DU,在发送数据前加上首部(目的地址等控制信息)组成一个报文
报文交换作为存储转发交换,线路利用率高,不需要建立拆除物理线路,不需要同步工作, 网络延时波动大(因为长的报文可能长时间占用链路,管理复杂)
不适合实时通信和交互式通信
分组交换
将长的数据分为多个分组进行发送,接收结点将多个分组按照顺序组装一个完整的长数据, 分组交换的传输单位为分组,共享传输线路,使用存储转发机制
一个分组的数据长度有限制,长度超过之后会划分为若干分组,一次发送一个分组,每一个分组的前面都会加首部, 目的结点接收到分组去掉首部,重新拼装为完整的报文
因为交换结点具有路由功能,所以就算部分的线路坏掉也没有关系
分组交换又分为数据报方式和 虚电路方式
数据报交换: 和报文交换类似,不需要建立电路,但是因为是分组交换,长的报文会划分为小的分组, 一个传输单位为分组,一个为报文 【每一个分组独立路由,所以到达时的顺序可能不一样,目的地会重新排序】
虚电路交换: 和电路交换类似, 数据传输面向连接, 在数据传输前需要建立虚拟电路, 电路交换是物理线路,最后需要删除虚拟链路 【建立虚电路, 数据传输, 拆除虚电路】
它也属于存储转发交换,也属于分组交换,所以它的虚电路上面的结点也是具有缓存功能和纠错功能的, 只是相对于数据报,不需要进行路由,只需要按照虚电路传输即可, 各个结点可以和任何结点建立多条虚电路
关于modem等信息可以看专栏之前blog~