本章纲要
- 计算机网络概述
- (1)计算机网络概念,组成,功能
- (2)计算网络的分类
- 计算机网络体系结构与参考模型
- (1)计算机网络分层结构
- (2)计算机网络协议,接口,服务等
- (3)ISO/OSI 参考模型 和 TCP/IP 模型
关键:(1)对基本概念需要适当记忆,(2)掌握5层/7层分层结构,尤其是ISO/OSI各层的相关协议,接口,服务,(3)掌握性能指标,尤其是时延,带宽,速率,吞吐率计算
1. 计算机网络概述
计算机网络的概念广义定义的一个通信网络,资源共享,各机独立自治,用户透明
1.1 计算机网络的组成
- 从组成部分看:硬件,软件,协议,缺一不可。
- 从工作方式看:分为边缘部分和核心部分
- 从功能组成上看:分为通信子网(数据通信的基础),资源子网(提供共享的服务)
1.2 计算机网络的功能
- 数据通信
- 资源共享(软件,硬件,数据)
- 分布式处理(多CPU计算机)
- 提高可靠性(替代机)
- 负载均衡(解决多并发问题)
1.3 计算网络的分类
按分布范围来看:
- 广域网WAN:因特网的核心部分,长距离通信,采用交换技术
- 城域网MAN:针对街区和城市,大多采用以太网技术
- 局域网LAN:采用广播技术
按传输技术来看:
- 广播技术:所有联网的计算机共享一个信道,A发送报文的时候,全部人都”听到“,目标计算机会通过检查目的地址来决定是否接收该分组
- 点对点技术:两台物理计算机,发送的数据通过多个中间结点接收,存储和转发到达目的节点
按拓扑结构分类:
- 网状网络:多用在广域网中,分为有规则和非规则,每个节点至少有两条路径和其他节点相连
按使用者分类:
- 专用网:军事什么的用到
- 公用网
按交换技术分类:
- 电路交换网络:在源节点和目的节点之间建立一条专用的通路,整个过程完成建立连接,传输数据,断开连接三个阶段。(例如:传统的电话网络)
- 报文交换网络:我们给需要发送的数据加上源地址,目的地址,校验码之类的信息,然后封装起来再发送,各个节点之间传输,但是这样子处理的话,也会存在一些些问题,那就是报文的大小是不确定的,目标计算机对缓冲区难以进行管理
- 分组交换网络:我们定义一个报文包的大小,固定下来,这样的速度是最快的,因为长度固定之后,我们可以采取很多的优化算法对此进行优化,但是需要处理大量的校验信息。
1.4 标准化
所有的互联网标准都以RFC的形式发布
★ 1.5 性能指标
- 带宽:最高数据率,是一个速度,单位:bit/s
- 时延:指的是从发送端到接收端需要的总时间,包括:发送时延,传播时延,处理时延,排队时延
- (1)发送时延(传输时延):指的是分组将所有的比特推送到传输链路所需要的时间,从分组发送的第一个比特开始计算到最后一个比特发送完毕所需要的时间
发 送 时 延 = 数 据 长 度 / 信 道 宽 度 发送时延 = 数据长度/信道宽度 发送时延=数据长度/信道宽度 - (2)传播时延:电磁波在信道中所需要花费的时间
传 播 时 延 = 信 道 长 度 / 电 磁 波 在 信 道 上 的 传 播 速 率 传播时延 = 信道长度/电磁波在信道上的传播速率 传播时延=信道长度/电磁波在信道上的传播速率 - (3)处理时延:在交换节点上处理所需要花费的时间,比如校验,查找路由等
- (4)排队时延:在路由器中等待队列的时间
- 时延带宽积:表示整个信道管道能容下的比特数量。
时 延 带 宽 积 = 传 播 时 延 ∗ 信 道 带 宽 时延带宽积 = 传播时延 * 信道带宽 时延带宽积=传播时延∗信道带宽
- 吞吐量:单位时间内通过某个网络(信道/接口)的数据量
- 速率:带宽是速率的一种,是最大的数据速率叫”带宽“。我们这里的Kb/s,Mb/s,Gb/s 用 1 0 3 10^3 103进行递增换算即可。
补充1:
- 计算机网络最基本的功能是数据通信
- 下面设备属于资源子网的是:软件,
网桥,交换节,路由器 - 局域网和广域网的差异还存在于:使用的协议不一样,局域网使用的广播技术,广域网使用的是交换的技术,数据的传输方式不一样,使用的协议肯定也是不一样的
- 网络的拓扑结构取决于通信子网(通信底层的硬件设备)
- 广播网络中:共享广播信道,不存在路由选择问题,可以没有网络层,需要服务访问点
- 世界上最早的计算机网络是ARPAnet
例题1:
- 假定有一个通讯协议,每个分组都引入100 字节的开销用于头和成帧,现在使用这个协议发送 1 0 6 10^6 106字节的数据,然而在传送的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃,请分析对于1000字节和20000字节的分组的有效数据大小分别计算"开销+丢失"的字节总数目,分组数据大小的最佳值是多少?
我们需要知道开销是什么,就是分组的报文头,丢失是什么,就是丢掉的那组数据,我们设 D D D 为每组数据的字节数,那么我们需要分的组数为 n = 1 0 6 / D n = 10^6/D n=106/D
每一组发生的开销是: 1 0 2 10^2 102,那么所有的组一共的开销就是: n ∗ 1 0 2 = 1 0 8 / D n*10^2= 10^8/D n∗102=108/D
题目提到丢失了一组数据,所以,我们丢失了: D D D
这样子,我们就能写出表达式: Y = D + 1 0 8 / D Y= D+10^8/D Y=D+108/D
把 D D D代入进去,我们就能计算出我们需要的结果了。
如果我们需要求最小值,需要求个微分就是了。
d
y
=
(
1
−
1
0
8
D
2
)
d
D
dy=(1-\frac{10^8}{D^2})dD
dy=(1−D2108)dD
当
D
=
1
0
4
D=10^4
D=104的时候,
d
y
/
d
D
=
0
dy/dD=0
dy/dD=0,所以分组数据大小的最佳值是10000字节
- 考虑一个最大距离是2KM的局域网,当带宽等于多大时,传播时延等于100B分组的发送时延?(传输速率是 2 ∗ 1 0 8 m / s 2*10^8 m/s 2∗108m/s)对于分组是512B的结果呢?
分组交换的时延计算=发送时延+传输时延+处理和排队时延(一般我们研究)
带宽,就是一个速度,而 发送时延 = 分组长/信道宽,宽就是一个速率。从题目里面,我们知道信道长是
2
∗
1
0
3
m
2*10^3 m
2∗103m,所以传输时延 = 信道长/传输速率,直接可以算这个
1
0
−
5
s
=
2
∗
1
0
3
m
2
∗
1
0
8
m
/
s
10^{-5}s=\frac{2*10^3 m}{2*10^8m/s}
10−5s=2∗108m/s2∗103m 了。
现在说发送时延等于传输时延,我们直接可以推算出带宽咯。(带宽是一个速度,记住这个!!)
1
0
−
5
=
1
0
2
带
宽
10^{-5} = \frac{10^2}{带宽}
10−5=带宽102
带宽是
1
0
7
B
/
s
=
80
M
b
/
s
10^7 B/s = 80Mb/s
107B/s=80Mb/s
- 分析电路交换和分组交换的详细过程计算。假设现在有需要发送的报文x比特,从源点到终点需要经过k段链路,每段链路的传播时延为d秒,数据传输速率为b比特每秒。在电路交换时电路的建立时间为s秒。在分组交换时的分组长度为p比特,且各个节点的排队等待时间可以忽略不计,问在怎样的条件下,分组交换的时延比电路交换的要小?
首先,我们需要明确电路交换的时延计算公式 = 建立连接时延 + 发送时延 + 传播时延
而分组交换的时延计算公式 = 发送时延 + 传播时延
两者的传播时延已经知道了,kb,电路交换的时延 = s + x/b + kd
我们需要好好体会一下发送时延这个时间,就相当于把数据放到公路上,电路交换是把全部都放上来之后再进行传输。
分组交换则是放上来一部分就开始运一部分了。
对于分组交换,我们设有 n 个分组,采用存储转发技术,一个站点发送时延是 t = p/b,在多个点的流动当中,每个节点我们都需要重新打包转发,当我们经过 k-1 个 t 之后,从第k个t开始,每个t就会有一个分组到达目的地,所以全部的传送完需要的发送时延是:
( k − 1 + n ) t (k-1+n)t (k−1+n)t
所以,分组交换的总时延是 kd+(k-1+n)p/b
当 np = x 的时候,分组交换的总时延小于电路交换的总时延
- 在下列情况下,计算传送1000KB文件所需的总时间,即从开始传送时起知道文件的最后以为到达目的地为止的时间。假设往返时间RTT为100ms,一个分组是1KB(即1024B)的数据,在开始传送整个文件数据之前进行的起始握手过程需要2RTT的时间。
(1)带宽是1.5Mb/s,数据分组可连续发送
(2)带宽是1.5Mb/s,但在发送完每一个数据分组之后,必须等待一个RTT,才能发送下一个数据分组
(3)假设带宽无限大,也就是说我们的发送时延是0,但是在等待每个RTT后可以发送多达20个分组
(1)总时延 = 发送时延 + 传播时延 + 握手时延
发送时延 = 1000KB/1.5Mb/s = 5.46s
传播时延 = 100ms/2 = 50ms
握手时延 = 200ms
总共 5.71s
(2)无非就是在每个组发送前增加一次握手,一共是1000个组。5.71s+999 * 0.1 = 105.61s
(3)发送时延变成 0 ,我们需要考虑传播时延。和第一题不同的是,23题我们中途需要握手才能继续传输,一共有1000组,我们需要发送 50次。
0.5RTT + 2RTT + 49RTT = 5.15s
2. 计算机网络体系结构和参考模型
2.1 计算机网络分层结构
我们把计算机网络的各层以及协议的集合称为网络的体系结构,实体指的是任何可发送或者接受信息的硬件和软件进程,同一层称为对等层,同一层的实体称为对等实体。
下层的服务者为上层的用户提供服务。传输的每一个数据块是一个 PDU(协议数据单元),分为服务数据单元(SDU)和协议控制单元(PCI)。
对于 PDU,在每一层的叫法不一样,在物理层的PDU叫比特,在链路层的PDU叫帧,网络层的PDU叫分组,传输层的PDU叫报文。
- 协议:只有在对等的实体之间才有协议,所以说,协议是水平的。协议能是新线路管理,差错控制,数据转换等功能
- 接口:上下相邻两层进行交换信息的连接点,接口是垂直的。他们通过服务访问点SAP进行交互。
- 服务:下层给上层提供服务。下面是一些服务的原语:
上层用户只看的见服务,看不见下面的协议。
服务的分类
- 面向连接的服务:需要建立连接之后才能通信,这样的话,双方可以分配相应的缓冲区,保证通信的正常进行,结束之后就释放资源。TCP就是这样的协议
- 无连接的服务:发送的时候直接发送,尽最大努力交付,不保证通信的可靠性。IP,UDP通信就是一种无连接的通信。
- 有应答:接收方在接受数据之后会给发送方给出相应的应答,比如,文件传输服务就是有应答的服务
- 无应答:接收之后不给出应答
2.2 ISO/OSI 参考模型和TCP/IP 模型
我们主要学习的是OSI模型,低三层是通信子网,高三层是资源子网。
- 物理层:传输单位是比特,物理层的一些协议:EIA-232C,CCITTX.21,EIA/TIARS-449。这一层是最底层的,0和1作为基础的传输单位。
- 链路层:传输的单位是帧,我们把一段数据流作为一个帧,链路层完成的功能是:成帧,差错控制,流量控制,传输管理。所谓的差错控制,就是能纠错的就纠错,不能纠错的就扔掉。所谓的流量控制,就是两个结点在通信的时候,发送的速度和接收的速度不匹配的话,会导致传输的效率下降,所以我们需要流量控制。另外,链路层当中的介质访问子层可以解决共享信道的访问,这是针对广播式网络的。链路层的协议:SDLC,HDLC,PPP,STP
- 网络层:传输的单位是分组,他关心的是通信子网的运行控制,实现对分组数据进行路由选择,实现流量控制,拥塞控制,差错控制和互联的功能。所谓的拥塞控制,只的是我们结点来不及接收分组而丢弃大量分组的话,网络就叫拥塞状态。网络层的协议:IP,IPX,ICMP,IGMP,ARP,RAPP,OSPF
- 传输层:传输的单位是报文段(TCP)和用户数据段(UDP),他负责的是两个主机进程之间的通信(端对端通信)。而链路层提供的是主机之间的通信(点对点的通信)。传输层已经可以忽略通信子网的存在了。传输层的协议有:TCP,UDP。
- 会话层:会话层利用的是传输层提供的端对端服务进行增值,并且可以使得通信绘画在失效的时候继续恢复通信,实现数据同步(SYN)。
- 表示层:该层用于处理通信系统交换信息的表示方式,两台机器使用使用的编码和表示方法不同,使用的数据结构不同,我们利用表示层用抽象的方法定义数据结构,并且进行数据压缩,加密解密。
- 应用层:应用层是我们实际利用网络实现的一些应用,比如文件的传输:FTP,电子邮件的SMTP,万维网的HTTP。
我们再来看看TCP/IP,其实这是一个简化的ISO/OSI 模型:
ISO/OSI 模型的最大贡献是精准的定义了三个主要的概念:服务,接口,协议,而TCP/IP 模型考虑到了多种异构网的互联问题。
补充2:
- 分块传输的好处:减少延迟时间,提高错误控制效率,使得多个应用更公平地共享通信介质
- 协议内部的细节是由设备生产厂家设定的,和分层架构无关
- 注意,n+1 是上层,n是下层
- 我们实际执行的标准是 TCP/IP 协议
- 链路层不能进行拥塞控制,只有网络层和传输层才能拥塞控制
- 链路层可以实现物理寻址
- 链路层的目的是为了保证数据的正确顺序和完整性的
- 不参与数据封装工作的是物理层
- 具有端对端应答,分组排序,流量控制的是传输层,网络层只负责分组的传送,对分组进行排序管理的就是传输层了
- 会话层进行的进程间的管理,和实现会话同步
- 自下而上第一个提供端对端服务的是传输层
- 数据格式的压缩等是在表示层完成的
- 实现流量控制的是链路层,网络层,传输层
- 提供建立,维护,拆除端对端连接的是传输层
- 为数据分组提供分组的是网络层
- 传输层提供是主机进程之间的传送,会话层提供的是主机进程之间的管理。网络层提供是对分组之间的传送,传输层实现的是对分组数据的排序和管理。
- 为网络层实体提供服务的是链路层
- 在TCP/IP 模型当中,传输层处理关于可靠性,流量控制,错误纠正等问题
- 应用层的服务访问点SAP是用户界面
- 假设OSI模型当中,应用层需要发送 400B的数据,每下一层的数据打包需要增加20B 的额外开销,传输效率是?80%
- 传输层实现是两个用户进程之间的端对端的通信,在传输层把数据分割成报文送到网络层,网络层把数据封装成分组之后送到链路层,在链路层封装成数据帧后发送到物理层。