卢畅的计算机网络课程笔记:持续更新中…

导论

课程要求

  • 掌握五层网络的模型结构和原理
  • 掌握应用层中相关协议的基本组成和原理
  • 掌握Ethernet的原理和协议
  • 掌握主要的路由算法及路由协议
  • 掌握主要的传输层协议

IEEE 标准

几个常用的:

  • Bus,IEEE 802.3【以太网】
  • Ring,IEEE 802.5【环网】
  • Token RING,IEEE 802.4 【令牌环网】
  • Wireless LANS,IEEE 802.11 【无线局域网】

数据、信号、信息之间的关系

  • 数据:就是0和1,看作货物。数据就是信息的载体
  • 信号:车:传输的是数据【数据的载体】
  • 信息:是数据的组合,比如C语言就会有ascii这种东西来给数据赋予具体的意义。

物理层

功能

通过规定物理设备和物理媒体之间的借口技术,实现物理设备之间的比特流传输。
服务是透明的,实现的细节不是透明的 => 层与层之间是相互独立又是联系的;

专有名词

  • 带宽: 信号占据的频道范围;
  • 信号传输速率:单位时间里传输信息波形的个数,单位为波特;【车辆通行的数量】
    最大采样频率:B = 2H (bund)
  • 数据传输率:单位时间内传输比特的个数,比特率,单位b/s,Kb/s 【这里的K是1000,只有说存储的时候才是1024】

波特与比特的关系:
波特是码元传输的速率单位,比特是信息量的单位
若一个码元上携带一个bit的信息这波特和比特在数值上相等

指标

  • 时延:总时延=发送时间+传播时延+转发时延
  • 时延带宽积=传输时延 x 带宽—— 带宽:传输过程中振幅不会明显衰减的频率范围
  • 信息传输速率:b/s,又称比特率
  • 码元传输速率:B\aud/s,又称波特率

传输定理

【重要考点】

Nyquist定理

Cmax=2Hlog2NC_{max}=2Hlog_2N

其中H是带宽,单位是Hz

N:离散基数,代表一个信号上面能够储存的比特;比如一次发送两个,N就是222^2

Shannon定理

有噪声信道

C=Hlog2(1+S/N)(bps)C = Hlog_2(1+S/N) (bps)

  • H: 信道带宽 (Hz)
  • S:信道内所传信号的平均功率
  • N:信道内部的高斯噪声功率
  • S/N:信噪比

关键转换公式

(S/N)dB=10log10(S/N)(S/N)_{dB} = 10log_{10}(S/N)

重要例题:

如果在一条长3kHz的信道上发送一个二进制信号,该信道的信噪比为20dB,试问可达到的最大数据率是多少?

解:(S/N)dB=10log10(S/N)(S/N)_{dB} = 10log_{10}(S/N)

Shannon:

C=3000  log2(101) (bps)C = 3000 \ * \ log_2(101) \ (bps)

Nyquist:

C=23000log22=6000(bps)C = 2 * 3000 *log_22 = 6000 (bps)

可得可以达到的最大数据率是6000bps

10base-T

考试重点:
10base-T中的T就是双绞线,base是基带信号,10是10Mbps

电话系统(telephone system)

电话系统的三种组成部分:

  • 本地回路(local loop)
  • 干线(trunks)
  • 交换局

通道传输

  • 为什么传0和1 ?
    计算机里面存储的是2进制数据

ADSL非对称数字用户线

比标准电话服务具有更多带宽的服务有时称为宽带服务,ADSL就是这些业务当中最流行的一种。

  • 为什么调制解调器那么慢呢?
    因为电话的发明是为了承载人类的语音,整个电话系统都是为了这个目的去优化。所以就具有一定的局限性。

FDM

FDM频分多路复用技术:将一条线路的频带逻辑地划分成几个信道,每个用户独立地拥有某些频率段;频率通道之间留有防护频带。

  • WDM:波分复用技术是FDM应用于光纤通讯时的一个变例;
  • TDM:时分复用技术
    • 一路语音信号:PCM(4k,采样频率8000次/秒)
    • T1线路:24路语音信号通过时分复用技术复用到一条线路上
    • 帧:193位
    • 数据传输速率是:1.544Mbps

交换技术

电路交换

就是计算机终端之间通行时,一方发起呼叫,独占一条物理线路,当交换机完成接续,对方收到发气端端信号,双方即可进行通信

  1. 在整个通信过程中双方一直占用该电路
  2. 实时信强,时延小,交换设备成本低
  3. 缺点:线路利用率低,电路接续时间长
  4. 适用于传输数据较大,实时性要求较高的场合

报文交换

将用户的报文存在交换机的存储器。当所需要的输出电路空闲时,再将该报文发给接受交换机或终端,它以“存储——转发”方式在网内传输数据

  1. 优点:中继电路利用率高,可以
  2. 缺点:时延高
  3. 适用于传输的数据较小,实时性要求较低的场合;

分组交换

实质就是“存储——转发”基础上发展起来的

  1. 兼具电路交换和报文交换的优点
  2. 采用动态复用技术,传输按照一定长度进行切割后的数据——分组。每个分组标识后,在一条物理线路上采用动态复用的技术,同时传送多个数据分组,把来自用户发端端数据暂存在交换剂的存储器内,接着在网内转发。到达接受端,再去掉分组头将个数据字段按顺序重新装配成完整的报文

异步传输技术 (ATM)

综合业务数字网是集语音、数据、图文传真、可视电话等各种业务为一体的网络、适用于不用等带宽要求和多样的业务要求。

数据链路层

  • 传输单位:帧(Frame)
  • 必考题:成帧技术

基础概念

  • 结点(node): 网络中的主机(host)和路由器(router)

  • 链路(link):通信路径上连接相邻结点的通信信道,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。

  • 数据链路:在一根线上传输数据,除了要有一个物理线路外,还有有一些必要的规程来控制这些数据的传输。将实现这些规程的硬件和软件加到链路上,这样就构成了数据链路。

  • 规程:早期的通信协议

  • 数据链路层协议:定义了一个链路的两个结点交换的数据单元格式,以及结点发送和接收数据单元的动作。

    • 适配器都包括了数据链路层和物理层之间的协调
  • 点对点通信(point to point) :在相邻结点间的一条链路上的通信【数据链路层主要解决的问题】

  • 端到端(end to end)通信:从源结点到目的结点通信。通信路径可能由多个链路组成

提供的服务

无确认无连接

  • 定义:原机器发送独立帧给目标机器(目标机器不对这些帧进行确认)
  • 特点:事先不需要建立逻辑连接,事后也不用释放逻辑连接。若由于线路的噪声而造成某一帧的丢失,数据链路层并不试图去检测这样的丢帧情况。
  • 应用场合:传输速率快,误差率小

有确认无连接服务

  • 定义: 每一帧的发送都会进行单独的确认
  • 应用场景:不靠谱的信道

有确认面向连接的服务

  1. 建立连接
  2. 进行帧的传送
  3. 对连接进行示范
  • 特点: 没有坏帧,没有相同的帧;

成帧方法

帧同步

  • 必考题
  • 定义: 以帧为单位进行传送,指出哪里上帧的开始和结束
  • 为什么成帧?
    • 提高传输效率
    • 差错控制

成帧方法

这个东西是网卡完成的

  1. 字符计数法(了解即可)

在帧头中用一个域表示整个帧的字符个数

  1. 带字符填充的首尾字符定界法
  2. 带位填充的首位标记定届法

必考
方法: 帧的起始和结束都用一个特殊的位串:“01111110”,称为标记(flag),即01111110

- 解决: 0 比特插入删除技术

如何操作:
在连续5个1的右边插入一个0;
(a) 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0
(b) 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0
考试方法: 给原始数据(a) 写出插入后的数据(b), 给多加上的0加粗

差错控制

  • 产生错误的原因:噪声
  • 错误类型:数据帧出错、数据帧丢失
  • 噪声
  • 错误的检测和纠正
  • 常用编码
    • 奇偶校验、水平垂直奇偶校验
    • 奇偶校验码: 通过增加冗余位来使得码字中“1”带个数保持奇或偶数的编码方法,是一种检错码;
  • 目的:使DL能够向上层提供无差错的服务(链路有干扰)
  • 基本原理: 接受端向发送端发送确认信息(ACK,NAK)

流量控制

解决方法:

  1. 基于反馈流量控制
  2. 基于速率的流量控制

差错检测编码

必考

CRC编码

  • CRC编码:检纠错能力强大,实现简单,使用广泛
  • 码多项式:将码元序列中的每一位看成是一个多项式的系数,则一个码元序列对应一个多项式,这个多项式被称为该码元序列的多项式。
  • 模2运算:加法不进位,减法不借位,除法中的减法仍然采用模2运算,全都是异或运算;

CRC码基本实现

校验和加在帧尾,使带校验和的帧的多项式能被G(x) 除尽;收方接受时,用G(x)去除它,若有余数,则传输错误,

校验与计算方法

必考

  • 生成多项式G(x): r次(r+1)高位与低位必须为1

  • 模2除法: “模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1。如果只是想简单的进行计算的话可以记住在除法的每一个步骤中:按位做异或运算;

    image-20210613201716956

一些例题

例1:假设选择的CRC生成多项式为 G(X)=x4+x3+1G(X) = x^4 + x^3 + 1,要求出二进制序列10110011的CRC校验码

解: 第一步:将多项式转化为二进制:x4+x3+1x^4 + x^3 + 1 可以转化为 11001. (多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0);

第二步:使用模2除法原则计算CRC校验码;生成的多项式有5位,我们需要在10110011的后面加上4个0来进行计算。

image-20210613201411308

最后我们可以得到CRC校验码为0100;

例2:要发送的数据为1101011011。采用CRC的生成多项式是 P(x)=x4+x+1P(x) = x^4 + x + 1。 试求应添加在数据后面的余数。 如果数据在传输过程中最后一个1变成了0,接收端能否发现呢?如果数据在传输过程中最后的两个1都变成了0,接收端能不能发现呢?

image-20210613205927843 image-20210613205950464

基本的数据链路层协议

  • 帧的内容: 帧头和帧数据

无限制的单工协议

  • 两个假设:
    • 链路是理想的传输信道,所传送到任何数据既不会产生丢失也没有差错
    • 不管发送方以多快的速率发送信息,收方总是来得及收下,并及时上交主机
  • 在完全理想化下,数据链路层不需要任何差错控制和流量控制
  • 一个发送方一个接收方 => 单工

单工停等协议

去掉第二个假设:链路不出错,但是可能出现流量不匹配情况

  • 解决方案
  1. 不限时的解决方案,插入一段时延 t,使得接收方有足够的时间来接收或处理
  2. 现实的解决方案:让结售汇提供给反馈信息发给发送方
    • 发方:每发一帧,停止下来
    • 收方:每收到一帧,上交网络层,再发一个确认帧(哑帧)给发送方;
    • ack是用来控制发方的速率的,发方只有收到了ack才会发下一个信号;

带噪声的单工协议

去掉两个假设, 帧有可能会丢

连续ARQ(自动请求重发)协议

经常考:回退n帧和选择重传的区别

连续ARQ的思想:

对于发送方而言,在发送完一个数据帧后不需要单纯的等待而是继续发送后面的数据帧。如果这时接收到了来着接收方的确认帧,那么还可以继续往下面发送数据帧,如果在超时时间后还没有收到确认帧那就从这一帧开始重发。

对于接收方而言,只需要持续的接受数据帧,当接收到一个坏帧的时候只需要简单的丢弃后面的所有帧就可以了。当成功接收一个数据帧时给发送方一个确认信号。

  • 回退n帧
    1. 效率提高,发送端不需要等待确认就可以连续发送
    2. 不实用,没有考虑到接受端的处理能力问题
    3. 如果发生错误,对效率的影响很大,不适合出错率比较高的信道
  • 选择重传
    1. 帧出错之后,对出错帧之后的帧能够接收并且储存在接收缓冲区中;
    2. 接收端需要更多的缓存;

滑动窗口协议 【 考点】

停止协议和连续A RQ协议的问题;

  • 停止等待协议:发送-停止-等待,效率降低,当传输时间比发送时间大得多时,性能变得不可接受
  • 连续ARQ协议
    1. 未经过确认的帧一次传输过多
    2. 序号占多位数过多,影响效率,一次能够传输1024帧,10位编号;
    3. 实际协议中,一次连续传输的帧的个数时有限的

滑动窗口协议 是停止等待协议和连续ARQ协议的折中:一次连续发送未经确认的帧的个数时有限的;

滑动窗口的特点:

  • 有流量控制
  • 减少了重发的代价

捎带技术

将A-B的数据帧, A-B的确认帧,混合在一起;将B-A的数据帧, B-A的确认帧,混合在一起实际上是在一方收到另外一方发来的数据帧之后,不立即回发确认帧给对方,而是等本站有数据要发送给对方时,将给对方确认信息和本站发向对方的数据混合成一个帧传送给对方。

捎带技术的优点[考点]:

  1. 较好的利用信道的带宽
  2. 减少目标端的中断次数
  3. 减少单独发送确认帧带来的效率上的降低

捎带技术带来的问题以及解决办法[考点]

遇到的问题:如果一个站点在收到对方的数据帧后没有数据发送给对方,源站可能要超时;

解决办法:设置辅助计时器,在目标端接收到数据后,启动辅助计时器,如果辅助计时器到时间了仍然没有数据传送,则单独发送确认帧。

发送窗口

  • 发送窗口的最大值:一次可以连续发送而未经对方确认的帧的个数的最大值

  • 发送缓冲区的个数相当于发送窗口的最大帧的个数(固定值),发送缓冲区中的帧有两类:

    1. 未发送的而落入发送缓冲区的帧,可以连续发送出去;
    2. 已经发送出去的等待对方确认的帧,发送缓冲区的帧只有得到确认才能删除,窗口向前移动,设置发送缓冲区的目的是使出错的帧可以重发
  • 发送窗口中的序列号代表:在发送缓冲区中已经发送但未确认的帧;

  • 只有收到对方的ack,发送窗口和发送缓冲区后沿向前移动,有更新的帧可以落到发送缓冲区中;

  • Ws=1 滑动窗口协议就是停等协议,Ws非常大;连续ARQ协议;

回退n帧协议

问题解决方法:

  • 不是一次发送一个
  • 增加最大发送窗口的数目,: (sending window)
  • 停-等协议信道利用率计算

[考点]已知信息传输速率b(b.s),帧长度是L(bit), 往返时间为:R(s). 忙 L/b (s),空闲R(s)。则利用率为:

LL+bR\frac{L}{L +bR}

  • 分析

    1. bR: 信道的容量,当信道的容量>L时,利用率将小于50%
    2. 当R很短,没有必要增加发送窗口的尺寸,从而增加协议的复杂度;
    3. 不适合信道不可靠的情况
image-20210522122021726
回退重选和选择重传的过程对比
  • 回退重传是在超时后从传输错误的帧的编号进行重传
  • 选择重传是只对错误的编号进行重传
  • 选择重传帧编号的意义
    • 接收方告诉发送方没有收到帧
    • 接收方告诉发送方需要重发
  • [考点] 选择性重传告诉帧编号,最大ws是2n12^{n-1}
  • [考点] 回退n帧告诉帧编号,最大ws是2n12^n-1
  • [考点] 对于滑动窗口协议,发送窗口的大小=窗口大小-1

介质访问控制子层

解决信道争用的协议称为介质访问控制协议;MAC(Medium Access Control),时数据链路层协议的一部分。

信道分配方法有两种:

  • 静态分配
  • 动态分配

重点:CSMA,以太网

多路访问协议

CSMA

  • 载波监听:
    在示波器上看,有信号就是在使用,没有载波就是信道空闲

1-坚持型CSNA

  • 原理
    • 若站点有数据发送,先监听信道;
    • 若站点发现信道空闲,则发送给;
    • 若信道忙,则继续监听直至发现信道空闲,然后完成发送
    • 若发生冲突,等待一随机事件,然后重新开始发送
  • 优点:减少等待的时间
  • 缺点:增加冲突的概率

非坚持型CSMA

  • 优点:减少冲突概率
  • 缺点:增加了等待概率

p-坚持型CSMA
相当于坚持型和非坚持型的折中方案;

引入原因

  • 当两个帧发生冲突时,两个被损坏帧继续传输毫无意义

【考点】原理

  • 站点使用CSMA协议进行数据发送;
  • 在发送期间如果检测到冲突,立即终止发送,并发出一个瞬间干扰信号,使所有的站点都知道发生了冲突;
  • 在发出干扰信号后,等待一段随机事件,再重复上述过程;

无线局域网协议

无线局域网存在的问题:

考点:无限局域网中常遇到的两种问题;

  • 隐藏站点问题
    • 由于站点距离竞争者太远,从而不能发现潜在介质竞争者的问题
    • A向B发送数据的过程中,C由于收不到A的数据也可以向B发送数据,导致B接收发生冲突;
  • 暴露站问题
    • 由于非竞争者距离发送站点太近,从而导致介质非竞争者不能发送数据的问题称为暴露站点问题
    • B向A发送数据,被C监听到,导致C不能向D发送数据
image-20210522122416541
隐藏站示意图
image-20210522122528061
暴露站示意图

为什么无限局域网发送数据帧后需要对方必须发回确认帧,而以太网就不需要对方发回确实帧?

因为无限局域网可能出现检测错误的情况:检测到信道空闲,其实并不空闲,而检测到信道忙,其实并不忙,因此需要接收方发回确认帧来确认信道时候空闲。

以太网

以太网(Ethernet)基于CSMA/CD协议

数据链路层分为MAC子层和LLC子层

曼彻斯特码

【考点】会画曼彻斯特码和差分曼扯斯特码和差分曼彻斯特码的图

  • 0是先低后高,1是先高后低(前一半是底的,后一半是高的)
  • 差分曼彻斯特码是:0变,1不变 (每一个小周期内都要有一个变化,在每个小周期的开头如果下一个小周期是1那么就维持原样不要动,如果下一个小周期是0就变化)
image-20210522122735796
两种编码方式的示意图

以太网MAC子层协议

最小帧长:64字节

最大帧长:1218字节

pad:因为以太网要求有效帧必须至少64字节,从目标地址算起一直到校验和,包括这两个字段本身在内。如果帧的数据部分少于46个字节,则使用填充字段来补充该帧

【考点】问一帧的数据有16字节,还需要填充多少字节?
因为一个帧的数据部分至少需要46个至少需要需要填充46-16=30个字节;

快速以太网

速度:100Mbps 【发送时延】
协议:802.3u标准

千兆以太网: 标准 802.3z

中继器,集线器,网桥,交换机,路由器,网关

考点: 每一层有哪些设备,哪些设备在哪一层

image-20210522123012643
各设备在各层中的应用

image-20210613231723616

以太网的MAC帧结构

[考点] 可能会结合后面网络层的知识考你协议分析,务必掌握这个结构;

image-20210616170350250

网络层

网络层概述

  • ISO定义:网络层为一个网络连接的两个传输实体间交换网络服务数据单元提供功能和规程的方法。

  • 网络层是处理端到端的最低层

  • 网络层传输的是IP数据包

  • 要解决的关键问题是了解通行子网的拓扑结构,选择路由

  • 为什么数据链路层不需要路由? 因为端到端(P to P)的条件是相邻的;其中两者之间的通信是直接连通的;

网络的两种实现方式

必考

填空题:网络的两种实现方式是: 数据报和虚电路

数据报:数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系。

虚电路:虚电路是分组交换的两种传输方式中的一种。在通信和网络中,虚电路是由分组交换通信所提供的面向连接的通信服务。在两个节点或应用进程之间建立起一个逻辑上的连接或虚电路后,就可以在两个节点之间依次发送每一个分组,接收端收到分组的顺序必然与发送端的发送顺序一致,因此接收端无须负责在接收分组后重新进行排序。虚电路协议向高层协议隐藏了将数据分割成段,包或帧的过程。

简答题:数据包和虚电路的区别[考点]:

  • 都属于分组交换,采用存储转发机制
  • 数据报:每个分组被单独路由,分组带有全网唯一的地址
  • 虚电路:先在源端和目的端之间建立一条虚电路,所有分组沿虚电路按次序存储转发,最后拆除虚电路。在虚电路中,每个分组无须进行路径选择。
image-20210529111017820
  • 虚电路和数据报网络的区别与联系

    image-20210616121916619

路由算法

必考题:求拓扑图的最短的路径

给定一个拓扑图求拓扑图中的最短路径:Dijkstra 算法

首先给定一个连通图,假设我们要求D到达任意顶点的最短路径,那么我们需要做的第一步是求出连通图的最小生成树;

最小生成树的生成过程如下;

距离矢量路由算法

每年必考的内容 对应例题:P377 第6题. 基本是每年都考 【查表,相加,取最小】

必考IP协议分析题

什么是距离路由矢量?

每个路由器维护一张表,表中列出了当前已知每个目标最佳距离,以及所使用的链路,这些表通过邻居之间相互之间相互交换信息而不断更新,最终每个路由器都了解到达每个目的地的最短路径。

image-20210529105405149

例:考虑图5-12(a) 中的网络。使用距离矢量路由算法,路由器C刚刚收到下列矢量:来自B(5,0,8,12,6,2);来自D的(16, 12, 6, 0, 9 ,10);来自E的(7, 6, 3, 9, 0, 4)。从C到B、D和E的链路成本分别为6、3和5。请给出C的新路由表,包括使用的出镜路线和成本。

image-20210614161837884

解: 解题过程如下图所示:

image-20210614170837718

拥塞控制算法

考点:拥塞控制与流量控制的差别:

  1. 拥塞控制(congestion control)需要确保通信子网能够承载用户提交的通信量,是一个全局性问题,涉及主机、路由器等很多因素;

  2. 流量控制(flow control)与点到点的通信量有关,主要解决快速发送方与慢速接收方的问题,是局部问题,一般都是基于反馈进行控制的。21

IP协议

IP数据包结构

image-20210529112658990
  • Version: 协议的版本号,比如Version;

  • IHL(ip header length):表明标头的长度,单位是4字节

  • Type of service:服务类型,占8bit

  • Total length: 标头以及数据;

  • DF: DF为1时表示不分片

  • MF: MF为1表示后面还有数据片。也就是说明这个数据片段并不是最后一片。

  • ttl: time to live,一般一个包的长度最长也就是255秒。

  • Protocol: TCP是06【10进制】,UDP是17 【10进制】=> 11

注意如果问IHL有多少字节,那么需要把结果乘以4。因为IHL的单位为4字节。IP数据包最长就只能够达到64K。如果一个数据的长度大于64K那么就需要DF、MF和Fragment offset来表示数据的分割。

考点:协议分析;

例1:一个IPv4分组到达一个结点时,其头部信息为0x45 00 00 54 00 03 58 50 20 06 FF F0 7C 4E 03 02 B4 0E 0F 02

(1) 分组的源IP地址和目的IP地址各是什么(点分十进制表示法)?

(2) 该分组数据部分的长度是多少?

(3) 该分组是否已经分片?如果有分片,则偏移量是多少?

解:首先我们需要知道这一串的数值是16进制的,每一个数据都代表4位,在根据IP数据包的结果就可以得到每一题的结果。

(1)源IP地址从第13个开始:为7C 4E 03 02转化为16进制也就是124.78.3.2。目的IP地址是从第17个开始的:为B4 0E 0F 02也就是180.14.15.2

(2)根据头部信息我们可以知道总长度为0054H = 84D, 头部长度为5*4=20字节。所以数据的长度就是64-20=64字节;

(3) 是否分片是根据DF来判断的,DF=1表示不可以分片,DF=0表示可以分片。所以是分片的。片偏移占13位也就是1,1000,0101,0000B=6224D, 单位为8字节,也就是49792字节。

例2:主机A的IP地址为218.207.61.211, MAC地址为00:1d:72:98:1d:fc。A收到一个帧,该帧的前64个字节的十六进制形式和ASCII形式如图所示:

IMG_20210616_171317

(1)主机A所在的网络的网关路由器的相应端口的MAC地址是多少?

(2)该IP分组所携带的数据量为多少字节

(3)如果该分组需要被路由器转发到一条MTU为380字节的链路上,那么路由器将何种操作?

解:(1)根据以太网帧的结构我们可以知道,00:1d:72:98:1d:fc是目的MAC地址,那么源MAC地址也就是紧挨着的00:00:5e:00:01:01,那么网关路由器的相应端口的MAC地址就是00:00:5e:00:01:01。

(2)主机A的IP地址为218.207.61.211转化为16进制就是:da:cf.3d.d3,我们就可以定位到他所在的位置,往回退14个和13个对应的就是总长度:0190H = 400字节;再往前回退2个就可以得到45其中5为IHL单位为4字节,IHL总长度为20字节。数据长度为:400-20 = 380字节

(3)由于IP字段的总长度为400字节,超出了MTU为380字节的限制。这个时候需要考虑分片,但是是否能够分片还要看IP的标志位DF,DF=1不能分片,DF=0可以分片。根据IP首部信息我们可以得到标志位对应的16进制数为40H=01000000B, 则可得DF=1,不能对该IP分组进行分片,那么路由器应该进行的操作就是丢弃该分组,并用ICMP差错报文像源主机报告;

IP地址

1.掌握给出一个ip地址,能指出是哪类地址

2.ip地址的构成

3.每类地址最大网络数和最大主机数

判断方法:看第一个0前有几个1

只考:a,b,c类

[考点] 综合考题形式(必考题):先问ip是多少,再问ip属于什么类型(将开头第一个数字化为二进制看看属于哪个分类)

例1:分析136.17.18.5的类别,给出他的网络号,主机号;

将136化为二进制: 10001000,所以属于B类。

再查看B类的结构知:前16位位网络号(Network)后16位为主机号(Host)

网络号:136.17

主机号:18.5

例2:分析200.3.4.5的类别,给出他的网络号,主机号;

将200转化为二进制:11001000, 所以属于C类;

再看C类的结构可以知道:前24位为网络号,后8位为主机号;

网络号:200.3.4

主机号:5

[考点] 每类地址最大网络数和最大主机数

求法:最大网络数=2^(Network所占位数)-2 最大主机数=2^(Host所占位数)-2

解释:-2的原因是除去全0和全1两种地址

  • A类:最大网络数=2722^7-2
  • B类:最大网络数=21422^{14}-2
  • C类:最大网络数=2722^7-2
image-20210605090625005

子网(暂时没讲,自学,如果要考老师会再提)

NAT(老师叫我们上网自己查)

概述:NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

P347

Three ranges of IP addresses have been declared as private:

10.0.0.0 – 10.255.255.255/8 (16,777,216 hosts)

172.16.0.0 – 172.31.255.255/12 (1,048,576 hosts)

192.168.0.0 – 192.168.255.255/16 (65,536 hosts)

NAT的工作原理:当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。

以下是补充:

NAT主要可以实现以下几个功能:数据包伪装、平衡负载、端口转发和透明代理。

数据伪装: 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。

端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。

负载平衡: 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。(不是很明白)

失效终结: 目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。(如何转移的?)

透明代理: NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。(如何重定向的?)

Internet控制协议

除了用于数据传输协议的IP协议外,Internet在网络层还有几个辅助控制协议。他们包括ICMP协议、ARP协议、DHCP协议

  • ICMP

    ICMP和IP的关系:

    • ICMP使用IP协议传输ICMP报文,ICMP报文被封装在IP数据报中;
    • ICMP协议和IP协议同处于一个互联网层

    ICMP报文的格式:

    image-20210605141605791
  • ARP

    必考 :arp属于哪一层(网络层)将什么以什么形式传给对方(将本机IP地址和MAC地址以ARP应答的方式传给对方)

    1. DL层是不理解IP地址的,它只能够按照MAC地址来发送和接收帧

    2. IP层将IP分组交给DL层,同时还应该给出该目标IP地址所对应的MAC地址,只有这样DL层才能够顺利地将IP分组封装成帧传送出去

    3. 如何进行IP地址和MAC地址的翻译—ARP

    4. ARP的目的:
      已知IP地址,求该IP地址对应的MAC地址

    5. 转换过程 :

      LAN内部广播发送ARP请求分组,有待求的IP地址
      目标站收到该请求,回答,将本机IP地址和MAC地址以ARP应答的方式传给对方

      改进1:ARP高速缓存的应用;将已知道的IP地址-MAC地址对,记在ARP高速缓存,下次使用时无须再问

      剩余改进见ppt

    6. 数据传输过程:
      发送以前,由APR协议获知目标IP对应的MAC地址;
      主机将数据报和MAC地址通过IP层和DL层的接口交给DL层,DL将IP数据报加上DL头和尾,形成DL帧发出去;

传输层

传输层就两个协议:TCP和UDP

传输层概述

从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

image-20210605103636232

传输服务

引入传输层的原因:
消除网络层的不可靠性;
提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输。
传输服务:
传输实体(transport entity):完成传输层功能的硬软件;
传输层实体利用网络层提供的服务向高层提供有效、可靠的服务;

传输层提供两种服务

  • 面向连接的传输服务:连接建立,数据传输,连接释放;

  • 无连接的传输服务。

    1 ~ 4层称为传输服务提供者(transport service provider),4层以上称为传输服务用户(transport service user)。

    传输层协议和网络层协议的主要区别:

image-20210605094034290

端口(port)

端口就是传输层服务访问点 TSAP。 端口的作用:就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。

端口用一个 16 bit 端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

两类端口:一类是熟知端口(well-known ports),其数值一般为 0~1023。如: Web HTTP: 80,File FTP: 21,Email SMTP: 25等等。当一种新的应用程序出现时,必须为它指派一个熟知端口。
另一类则是一般端口1024~65535,用来随时分配给请求通信的客户进程。

套接字

image-20210605102738244

Client/Server客户服务器方式

TCP和UDP 的连接和建立都是采用客户服务器方式。
主动发起连接建立的应用进程叫做客户(client)。
被动等待连接建立的应用进程叫做服务器(server)。

传输协议

UDP协议

UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
发送数据之前不需要建立连接
UDP 的主机不需要维持复杂的连接状态表。
UDP 用户数据报只有8个字节的首部开销。
网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

image-20210605103324801

UDP用户数据报的首部格式

image-20210605104623472

TCP

TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。
TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。

分配的端口号:

image-20210605103930117

重点!TCP 的数据编号与确认,一定要会分析!

image-20210605104730542

源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

序号字段(SEQ)——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段(ACK)——占 4 字节,是期望收到对方的**下一个**报文段的数据的第一个字节的序号。

TCP头长度——占 4 bit,它指出 TCP 头部包含多少个32bit的字。(也指明了报文段的数据起始处距离 TCP 报文段的起始处有多远。“TCP头长度”的单位不是字节而是 32 bit 字(4 字节为计算单位)也就是说一定要将字节化为字,即乘4,考试一定要写单位不然会扣分。

1
2
例题:
收到tcp头为0110,则其头长度为6*4,即24bit

保留字段——占 6 bit,保留为今后使用,但目前应置为 0。

紧急比特 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认比特 ACK —— 只有当 ACK =1 时确认号字段才有效。当 ACK = 0 时,确认号无效。

推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位比特 RST (ReSeT) —— 当 RST  1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。

终止比特 FIN (FINal) —— 用来释放一个连接。当FIN  1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段(WIN) —— 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的位置。

选项字段 —— 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”

填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。

三次握手建立TCP连接

image-20210605112418186

第二行的含义:x+1之前的报文全部接受;下一次发的序列号是x+1

SEQ:发送的数据包

考点:会在图中挖空,以填空的方式考察。需要我们完全掌握掌握这个图

符号说明:

  1. 序列号:SEQ:用来标记数据段的顺序
  2. 确认号:ack:期待收到对方的下一个报文段的第一个数据字节序号
  3. 确认ACK:当ACK=1时,确认字段才有效,否则确认字段没有效
  4. 同步SYN:连接建立时用于同步序号
    • SYN=1,ACK=0 --> 连接请求报文
    • SYN=1, ACK=1 --> 同意连接
  5. 终止FIN:用来释放一个连接,FIN=1表示数据发送完毕,请求释放连接;

第一次握手:客户端将标志位SYN置为1,随机产生一个值SQL=x,并将数据包发送给服务器端,等待服务器的确认;

第二次握手:服务器端收到数据包后,由标志位SYN=1知道客户端要请求连接,服务器将标志位SYN和ACK都置为1,ack=x+1,随机产生一个SEQ=有,并将该数据包发送给客户端以请求确认

第三次握手:客户端收到确认后,检测ack时候为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给服务器,服务器检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功;

TCP传输策略

掌握这个图:

image-20210605112904778

解释:

SEQ:是数据包中第一个编号

2K:地址0-2047,因为从0开始

ACK=2048,因为ACK指向下一个文段的数据的第一个字节的序号

WIN:还可以发多少给我,例如:WIN=2k,表示还可以发2k

考试题型:

传输过程中该填什么?(以上图为例,最后一次右边到左边发送什么?)

答:ACK=4096+1023+1 WIN=1k

TCP拥塞控制

[考点]

(1) 慢开始算法:

在TCP刚刚连接好,开始发送TCP报文的时候,先让拥塞窗口cwnd=1,即一个最大报文段长度MSS。而在每收到一个对新的报文段的确认后,将cwnd加1,即增大一个MSS。用这样的方法逐步增大发送方的拥塞窗口cwnd,可以使得分组注入到网络的速率更加合理。

使用慢开始算法后,每经过一个传输轮次,拥塞窗口的cwnd就会加倍,即cwnd的大小呈指数型增长。这样慢开始一直吧拥塞窗口cwnd增大一个规定的慢开始门限ssthresh,然后采用拥塞避免算法。

(2)拥塞避免算法:

拥塞避免算法的做法是:发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS的大小,而不是加倍,使得cwnd按照线性的规律增长,而当复现一次超时时,则让慢开始门限ssthresh等于当前cwnd的一半。

image-20210618101908264

快重传和快恢复是对慢开始和拥塞避免算法的改进

(1) 快重传

快速重传技术使用了冗余ACK来检测丢包的发生。同样,冗余ACK也用于网络拥塞的检测(丢了包当然意味着网络可能出现了拥塞)。1快重传并非取消重传计时器,而是在某些情况下可以更早地重传丢失的报文段。

当发送方连续收到三个重复的ACK报文时,直接重传对方尚未结果到的报文段,而不必等待那个报文段设置的重传计时器超时。

(2)快恢复

快恢复算法的原理:当发送端收到连续三个冗余ACK(即重复确认)时,就执行“乘法减小”算法,把慢开始门限sshresh设置为拥塞时发送方cwnd的一半。与慢开始不同之处是他爸cwnd的值设置为慢开始门限ssthresh改变后的数值,然后开始执行拥塞避免算法,使得拥塞窗口缓慢地线性增大

例题:设TCP的拥塞窗口的慢开始门限值初始为8(单位为报文段),当拥塞窗口上升到12时发生超时,TCP开始慢启动和拥塞避免,那么第13次传输时拥塞窗口的大小为:

解:1 -> 2 -> 4 -> 8 -> 9 -> 10 -> 11 -> 12 -> 1 -> 2 -> 4 -> 6 -> 7

所以在第13次传输时拥塞窗口为7;