前言:
- 本复习笔记基于王相林的《计算机网络》第二版整理
- 只针对与期末复习所作
- *为可能重点考察内容
1.计算机网络概述
1.1计算机网络的定义
1.计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互联起来,实现资源共享和信息传输的系统。
2.涉及到的知识点:1)传输介质;2)通信协议;3)不同地点.;4)计算机设备;5)资源共享;6)数据传输;7)系统。
3.计算机网络提供的基本功能:
- 数据通信
- 资源共享
- 协同工作
4.计算机网络协议体系的特征
计算机网络中计算机进行通信、数据交换时需要制定算双方都要遵守的通信规则和约定就是协议。协议是按层次节后世界的,协议层次的集合构成了协议体系结构。网络协议层次结构包含两个基本内容:
- 网络实现的功能分解到若干层次,每个功能用同等层协议或对等层协议实现,不同系统中的对等层要遵循对等层协议,通过对等层协议理解和完成该层的功能。
- 相邻层次之间通过接口交互必要的信息,构成下层为上次提供服务的关系,也成为接口关系。网络服务靠服务原语进行描述,网络协议软件根据网络协议结构进行设计和开发
2. 计算机网络协议和体系结构
2.1 计算机网络协议的要素
- 语法 用来说明信息的格式
- 语义 用来说明PDU某些信息位组合的含义,标识双方可以理解的、确定的意义
- 同步(时序) 即收、发双方能分辨出通信的开始和结束,哪些动作先执行,哪些动作后执行。
2.2 服务原语
对计算机网络中的服务采用服务原语来描述。
服务原语由3部分组成:原语名、原语类型和原语参数
服务原语的格式: 原语名.原语类型(原语参数)
原语的类型有4种:
- 请求
- 指示
- 响应
- 证实
2.3 OSI参考模型
OSI分为7个层次层次 | 功能 | 对应的协议数据单元 |
---|---|---|
应用层 | 包含了用户通常需要的各种各样的协议 | A-报文 |
表示层 | 关注传递信息的语法和语义 | P-报文 |
会话层 | 允许不同机器上的用户建立会话,通常提供各种服务 | S-报文 |
运输层 | 接收来自上一层的数据 | T-报文 |
网络层 | 控制子网的运行 | 分组 |
数据链路层 | 将一个原始的传输设施转变成没有漏检传输错误的线路 | 帧 |
物理层 | 传输原始位流 | 位流(bits) |
2.4 TCP/IP参考模型
层次 | 功能 | 协议数据单元 | 协议 |
---|---|---|---|
应用层 | |||
TCP层 | TCP UDP | ||
IP层 | IP ICMP | ||
网络接口层 |
2.5 习题整理
1.长度为100字节的用用层数据交给运输层传送,需加上20自己的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传输,假设以太网的数据部分为1500字节,加上帧首部18字节。求数据的传输效率
答:总共需要传输的应用层数据为100字节,传输过程中以太网帧的数据部分为 100+20+20=140字节,因为140字节小于1500字节的以太网帧的数据部分字长。故用一帧传输即可不用分片,所以,数据传输率为
100/(100+20+20+18)
3. 数据通信技术基础
3.1 通信的基本要求
通信双方完成一次通信需要满足三个要求:
- 双方要有通信的愿望
- 通信双方之间有信息传递的信道
- 通信双方要规训通信的规则和约定
3.2 *数字数据编码为数字信号
曼切斯特编码信号:每一周期中间的跳变不仅用作始终同步,而且用来标志0或1.可以规定:由高到低标志1,由低到高标志0.
差分曼切斯特编码信号:每位的前沿电平与前一位的后沿电平相比较,有跳变标志0,无跳变标志1。空心箭头表示有跳变,表示0。
3.3 交换技术 p78
3.3.1 电路交换
电路交换是面向连接的,通信双方在通信之前先建立起一条连接,然后再连接的基础上传输数据,数据传输玩后释放连接。
3.3.2 报文交换
报文交换与网络节点的存储、转发相连接。
优点:
- 不独占电路,可以多个用户一起使用
- 不存在建立时延,可以随时转发
缺点:
- 如果传输过程出现差错,需要对整个报文进行重传
- 报文在每个节点的存储和转发需要一定的时延
3.3.3 分组交换
分组交换也与存储、转发相联系,把需要传输的数据(报文)分成长度固定的分组,分组独立地在每个节点进行存储和转发
优点:
- 分组大小比报文小得多,在节点地时延较小,即使出现传输差错,重传的数据量比较小。
- 灵活
3.3.4 习题
试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit)。从源点到终点共经过k段链路,每段链路的传播时延为d(s),数据率为b(b/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察k段链路共有几个结点。)
答:
电路交换时延:kd+x/b+s,
分组交换时延:kd+(x/p)(p/b)+ (k-1)(p/b)。
其中(k-1)(p/b)表示K段传输中,有(k-1)次的储存转发延迟,当s>(k-1)(p/b)时,电路交换的时延比分组交换的时延大,当x>>p,相反。
3.4 差错控制技术 p80
3.4.1 *循环冗余校验(CRC)
若发送的数据为1010001,采用CRC生成多项式为G(X)=x4+x2+x+1,请求出校验位,并写出发送序列位。
易得生成多项式为10111,r=4(生成多项式的最高次为4),则用1010001除以10111,这里的除只进行本位的异或操作,不考虑进位或者借位。
如图所示,得到校验位1101,将校验位与信息位拼接得到发送序列位10100011101
3.5习题整理
- 收发两端之间的传输距离为1000km,信号在传播介质上的传播速率为2×108m/s。试计算以下两种情况的发送时延和传播时延:
(1)数据长度为107bit,数据发送速率为100kb/s。
(2)数据长度为103bit,数据发送速率为1Gb/s。
答:(1)发送时延ts=107bit / 100kb/s = 100s
传播时延tp=1000km / 2×108m/s = 0.005s
(2)发送时延ts=103bit / 1Gb/s = 10-6s
传播时延tp=1000km / 2×108m/s = 0.005s
4.应用层
应用层定义了运行在不同端系统上的应用程序进程相互传递报文的方式。
4.1 DNS
DNS的功能:将主机名、电子邮件目标地址、网址映射成IP地址。
DNS记录的格式:Name.Value.Type.TTL
Name:一般为节点主机的域名,或是域的名字;
Value:是与Name对应得值,如对应的IP地址;
Type:指出记录的类型,表示这个记录是对应一个主机的IP地址或是一个名字服务器;
TTL:指出该记录的生存时间,一般为一天,按秒计算为86400s。
4.2 URL
url的格式:<协议>://<主机>:<端口>/<路径>
5.运输层
5.1 运输连接的建立与释放
1.连接建立的三次握手机制
第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
2.连接释放的四次握手机制
3.为什么建立连接只用三次握手,释放连接需要四次握手。
因为建立连接时,server主机收到client主机的SYN连接请求报文后,可以直接发送SYN+ACK报文。但是释放连接时,server主机收到FIN报文时,可能并不会直接断开连接,而是需要等待双方的数据传输完毕,所以只能先回复一个ACK报文,告诉client端已经收到FIN报文。过一段时间后,server端在发送FIN报文。
5.2 网络协议
5.2.1 停-等协议
停-等(stop-wait)协议的基本思想是:
在发送方每发送完一个协议数据单元后,就停止发送
-等待接收方的确认信息,并把所发送过的数据的副本保留下来
若发送方从接收方收到的确认信息的肯定的
-例如ACK,则发送方按顺序接着发送下一个协议数据单元
若收到的反馈信息是否定的,例如NAK
-则发送方就重新发送上次发送过的协议数据单元
5.2.2 回退N协议
5.2.3 选择重传协议
5.2.4 三种传输协议的比较
停-等协议的两个窗口的值均为1
回退N协议需要满足Wr+Wt <=2K,若不能满足,则滑动窗口协议不能成立,因为不满足Wr+Wt <=2K的要求,会出现接收方无法判断接受的新数据还是旧数据
对选择重传协议,接收窗口的值应满足Wr<=2K/2,若大于此值,没有什么用处
5.3 运输层协议
协议 | 特点 |
---|---|
用户数据报协议UDP | 无连接,不可靠,适用于小文件 |
传输控制协议TCP | 面向连接,可靠 ,适用于大文件 |
5.3.1 UDP
校验和计算
校验和字段即是UDP首部的最后2字节部分
5.3.2 TCP
5.4 习题整理
- 一个卫星信道数据传输速率为50kbit/s。往返时延为500ms,帧的长度为1000bit,问:
1)若采用停等协议,用t表示从发送一帧数据到发送下一帧数据的时间间隔,试求出t的值是多少?
2)采用停等协议时,线路利用率是多少?
3)若才用连续ARQ协议,则发送方在收到一个帧的应答之前,最多能发送多少帧?
答:
1)发送时延=1000b/50kbps=20ms
传播时延=500ms
则,t=发送时延+传播时延=520ms
2)若采用停等协议,停等协议的线路利用率计算公式:传输时延tf,重传时间tout,利用率U=tf/(tf+tout)
线路利用率是:(500/2)/520=48%
3)往返时延=500ms
传播时延=20ms
则,若使用选择连续ARQ,发送方在收到一个帧的应答前最多能发送500/20=25个
-
TCP和UDP是否需要计算往返时延RTT
TCP需要,UDP不需要 -
传输层用进程编号(PID)来标示主机间通信的应用进程...........(X )
传输层使用运输层地址(例如:TCP/IP协议中运输层PDU的“端口号”字段的值)来标示主机间通信的应用进程
6.网络层
6.1 *最短路径算法
最短路径算法的步骤:
如下图所示,我们要求从节点A开始到其他所有节点的最低费用路径。
首先从A开始,找到距离A最短的是节点D,
6.2 *距离矢量算法
上面的一行表示节点E要经过的节点,侧边栏表示目的节点。
例如DE(A,B) = 节点E经过节点B到达节点A的最小路径= 节点E直接与B相连的距离 + 节点B到达节点A的最短距离 = 8 + (1+2+2+1) = 14
最后根据圈出每一行的最小路径,得出路由表
目的路径 | 下一跳地址 |
---|---|
A | A |
B | D |
C | D |
D | D |
6.3 *子网划分
例如C类IP地址,可用于子网划分的标志主机位就有8位。
注意:子网划分时,子网号不能为全0或者全1(防止二义性)
6.4 习题整理
- 假定网络中的路由器B的路由表有如下的项目
目的网络 | 距离 | 下一跳地址 |
---|---|---|
N1 | 7 | A |
N2 | 2 | C |
N6 | 8 | F |
N8 | 4 | E |
N9 | 4 | F |
N1 | 7 | A |
现在B收到从C发来的路由信息
目的网络 | 距离 |
---|---|
N2 | 4 |
N3 | 8 |
N6 | 4 |
N8 | 3 |
N9 | 5 |
试求出路由器B更新后的路由表(详细说明每一个步骤)
更新后距离要+1(作者也不知道为什么)
目的网络 | 距离 | 下一跳地址 | 步骤 |
---|---|---|---|
N1 | 7 | A | 没有新信息,不改变 |
N2 | 5 | C | 相同的下一跳,更新, |
N3 | 9 | C | 新项目加入路由表 |
N6 | 5 | C | 下一跳不同,选择距离更短的 |
N8 | 4 | E | 下一跳不同,距离相同不更新 |
N9 | 4 | F | 下一跳不同,距离更大不更新 |
- 假设某路由器建立了如下路由表(这三列分别是目的网络、子网掩码和下一跳路由器,若直接交付则最后一列表示应当从哪一个接口转发出去
目的网络 | 子网掩码 | 下一跳路由器 |
---|---|---|
128.93.39.0 | 255.255.255.128 | 接口0 |
128.96.39.128 | 255.255.255.128 | 接口1 |
128.96.40.0 | 255.255.255.128 | R2 |
128.4.153.0 | 255.255.255.192 | R3 |
*(默认) | - | R4 |
现共收到5个分组。其目的站IP地址分别为:
(1)128.96.39.10
(2)128.96.40.12
(3)128.96.40.151
(4)192.4.153.17
(5)192.4.153.90
答:本题考查的是子网划分的知识
接口0的子网掩码是255.255.255.128,说明它用于标志主机的二进制位数是7位,所以可得
目的网络 | 子网掩码 | 下一跳路由器 | 子网范围 |
---|---|---|---|
128.93.39.0 | 255.255.255.128 | 接口0 | 128.96.39.0 - 128.96.39.127 |
128.96.39.128 | 255.255.255.128 | 接口1 | 128.96.39.128 - 128.96.39.255 |
128.96.40.0 | 255.255.255.128 | R2 | 128.96.40.0 - 128.96.40.127 |
128.4.153.0 | 255.255.255.192 | R3 | 128.4.153.0 128.4.153.63 |
*(默认) | - | R4 |
下一跳分别为接口:0、R2、R4、R3、R4
7.数据链路层
7.1 *HDLC
HDLC采用面向位的协议,使用位填充实现数据的透明传输
例题:
有一二进制位串0110111111111100用HDLC协议传送。经过位填充后变成怎样的位串?
011011111011111000
若接收端收到的HDLC帧的数据部分时0001110111110110,问删除发送端加入的’0’位后变成怎样的位串?
00011101111111111110