内容基于中国大学MOOC的2023考研计算机网络课程所做的笔记。
感谢LY,他帮我做了一部分笔记。其中第四章网络层各小节的顺序稍微做了下调整,和上课老师讲的先后顺序稍有不同,但内容是完整的。
课程内容和西电平时讲课的内容大致重合,西电可能会多讲一点内容,但多讲的考试基本不是重点,自己对照任课老师的课件补一下即可。考试要复习的内容看上去很多,但最后考的都很基础,基本不会考特别偏的知识。
王道的计网讲的中规中矩,听课听完可能会有点懵,建议快速过一遍内容后就开始刷题来加深理解。
其他章节的链接如下:
计算机网络笔记(王道考研) 第一章:计算机网络体系结构
计算机网络笔记(王道考研) 第二章:物理层
计算机网络笔记(王道考研) 第三章:数据链路层
计算机网络笔记(王道考研) 第四章:网络层
计算机网络笔记(王道考研) 第五章:传输层
计算机网络笔记(王道考研) 第六章:应用层
其他各科笔记汇总
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报
缺点:若计数字段出错,会导致后面所有帧全部发生错误
键盘上的ASCII码和帧开始和结束定界符对应的比特组合
用两个编码当中不会用到的电平方式来标志帧的起始和终止
局域网的IEEE802标准就采用这种方法
无确认无连接服务保证可靠传输需要传输层解决
位错/比特错的差错控制虽然能保证接收每个帧时都能无差错,实现无比特差错的传输,但是有些帧被丢弃没有进行处理,发送端发送的数据并没有被全部接收,所以不是可靠传输
海明码能够发现错误,找到位置并纠正错误
检验d位错:码距 ≥ d + 1 \ge d + 1 ≥d+1
纠正d位错:码距 ≥ 2 d + 1 \ge 2d + 1 ≥2d+1
链路层的滑动窗口协议中窗口大小在传输过程中是固定的
滑动窗口协议中的帧序号是重复利用的
《计算机网络》和《计算机网络 自顶向下方法》放在传输层,王道考研的辅导书放在链路层
在计算机网络发展的前期,通信链路质量不好,所以链路层需要保证可靠传输,因此链路层会使用停止-等待协议、后退N帧协议、选择重传协议等等。随着技术的发展通信链路的质量越来越好,出现差错的可能性变小,因此链路层就可以主要负责差错控制,可靠传输交给传输层实现,这样数据在链路上传递的速度更快,延迟更小
因此不需要太纠结停止-等待协议属于哪一层次,因为它在哪一层次最后只会影响数据传输的对象是分组还是帧
虽然都叫0帧,但这是两个完全不一样的帧,只是用相同的编号表示
通过编号来判断是否发生了帧丢失和帧重复,停止-等待协议中如果连续收到相同发送序号的数据帧说明发送端进行了超时重传,连续出现相同序号的确认帧表明接收方收到了相同的重复帧
接收方会丢弃出错帧不做处理,不返回确认帧
T D T_D TD:发送方发送一个数据帧的发送时延
RTT:往返时延
T A T_A TA:确认帧的发送时延
数据传输率即数据发送速率
例题忽略了确认帧的发送时延
习题1:
习题2:
信道带宽即发送方发送数据的理想状态速度
甲发送数据的理想状态是可以一直发送,滑动窗口一直前移,那么就可以达到100Mb/s,但这是永远达不到的。还有一种情况是甲已经把发送窗口里的帧全部发送出去,但是还没有等到第一帧的确认帧,所以甲发送完所有帧之后就要等待,等到接收方发来对于第一帧的确认帧才进行滑动窗口前移,进而再发送写一批数据。这里看一下是否会出现第二种情况:
甲把发送窗口里的全部数据发送出去需要多久:
发送窗口尺寸 × 数据帧长 甲的发送速率 = 1000 × 1000 × 8 b 100 × 1 0 6 b / s = 80 m s \frac{发送窗口尺寸\times 数据帧长}{甲的发送速率}=\frac{1000\times 1000\times 8b}{100\times 10^6 b/s}=80ms 甲的发送速率发送窗口尺寸×数据帧长=100×106b/s1000×1000×8b=80ms
用信道带宽来近似代替发送速率
甲在发送第一帧之后多久才能收到确认帧:
传播延迟 + 甲发送第一帧的发送时长 ( 第一帧的传输延迟 ) = 传播延迟+甲发送第一帧的发送时长(第一帧的传输延迟)= 传播延迟+甲发送第一帧的发送时长(第一帧的传输延迟)=
2 × 50 m s + 1000 × 8 b 100 × 1 0 6 b / s = 100.08 m s 2\times 50ms+\frac{1000\times 8b}{100\times 10^6 b/s}=100.08ms 2×50ms+100×106b/s1000×8b=100.08ms
可以看出甲发送完窗口里的所有帧之后还没有收到第一帧的确认帧,需要再等待20ms左右才能进行窗口前移。接下来的流程也跟这段很类似一直循环。所以我们现在就可以根据第一次发送的情况得出答案:
发送窗口尺寸 × 数据帧长 从刚开始发送第一帧到收到它的确认帧的时长 = 1000 × 1000 × 8 100.08 m s ≈ 80 M b / s \frac{发送窗口尺寸\times 数据帧长}{从刚开始发送第一帧到收到它的确认帧的时长}=\frac{1000\times1000\times8}{100.08ms}\approx 80Mb/s 从刚开始发送第一帧到收到它的确认帧的时长发送窗口尺寸×数据帧长=100.08ms1000×1000×8≈80Mb/s
解决这种问题时需要把整个发送数据的过程想清楚,同时要抓住第一帧,最后一帧还有第一帧的确认帧这几个重要的帧
窗口的下界是否收到或者被确认决定滑动窗口会不会往前移
习题:
广播式链路适用于网络范围比较小的局域网,而点对点链路适合于通信范围比较大的广域网
移动设备上网时就使用无线局域网
星型中间在局域网当中常用集线器
集中器搜集所有用户的数据在一条信道上发送
假如线路传输速率是8000b/s,对应于TDM中每个用户可能平均速率最高只分到2000b/s,STDM中一个人最高则可以达到8000b/s
如果有的用户经常发送数据,有的用户偶尔会发送数据就比较推荐使用统计时分复用,可以让信道的利用率大大地提高
A,B是发送数据的源站,C是接收数据的目的站
发1个bit需要一段时间,我们称之为1bit的时隙时间,把这段时间分割成n位的芯片序列,这样就分成了n个微小的时隙。对于每一个bit都可以把它分为唯一的n位的芯片序列。可以把芯片序列理解成向量
规格化内积其实就是在内积的基础之上除以一个向量的分量个数
分为纯ALOHA协议和时隙ALOHA协议
T 0 T_0 T0用帧的发送时间描述帧的长度,这里的发送时间既包括传输时延也包括传播时延。上图假设每一个站点所发送的每一个数据帧的 T 0 T_0 T0都相同
信道上有两个站点在同时发送数据就必然会发生冲突。由于站点并没有在发送数据时进行监听,所以不知道是否发生冲突
每一个站点只能在时间片的开头发送帧
时间片对应 T 0 T_0 T0,也叫做时间槽
用吞吐量来形容数据帧的发送成功率,指在一段时间内成功发送的平均帧数
信号还没有到达B时,B检测发现并没有信号进入站点,会认为信道空闲
对于数据帧有差错控制,B会根据收到的A所发来的数据帧检测它是否发生碰撞出错
上图中经过 t = 2 τ − δ t=2\tau -\delta t=2τ−δ时间A得知自己发生了碰撞,经过 t = δ t=\delta t=δ时间B得知自己发生了碰撞,因此最迟要经过 2 τ 2\tau 2τ(此时 τ → 0 \tau \to 0 τ→0)时间才能够知道自己发送的数据没有发生碰撞
故需要定义最小帧长,希望检测到碰撞时帧还没有发送结束。考虑到最迟在争用期 2 τ 2\tau 2τ时可以检测到碰撞:
以太网为了达到最小帧长,会对较短帧进行填充再放到链路上传输
CSMA/CD常用于总线式以太网,属于有线网络
RTS和CTS都是一种帧
建立连接后其他站点再向接收端发送RTS接收端不返回CTS,这样就解决了隐蔽站问题
询问的过程就是在发送短数据帧
实际网络当中会多建立一些备用主结点
TCU是传递数据帧时的转发接口,可以传递所有经过的帧,并为接入站发送和接收数据提供接口
网络空闲,没有主机要发送数据时,令牌在各个主机之间传递,直到有一个主机要发送数据。该主机会修改令牌的标志位,把令牌从空闲状态变成忙状态,并在令牌控制帧后面加上数据构成数据帧发送出去。传递时其他主机不做处理,到目的主机就会被复制一份,传递回发送主机后会先检查数据帧是否出错,如果出错可能还要再重传,如果没有就会回收数据帧不再转发,并将令牌调回空闲状态传递出去
一些书也会说在源站点传送完数据后还会产生新的令牌
可以设置替代机应对可能的单点故障
星型拓扑共享能力差是相对于总线型拓扑来说的,总线型拓扑中所有人都在共享一条主干信道
树形拓扑和环形拓扑构建好后通信的方向就已确定,如之前的令牌环网
综合这几种拓扑,总线型拓扑优势最大。以太网就是逻辑上的总线型拓扑结构
按照介质访问控制方法分类
令牌环网和FDDI(光纤分布式数据接口)网造价较高
通信时每一个数据会被分成小单元,ATM网当中长度单元固定为53B,其他几种网络交换的信息单元长度是可变的
WIFI是无线局域网的一种技术上的应用,无线局域网可以的覆盖范围要比WIFI更广一些,可能是几千米
IEEE802.3:以太网介质访问控制协议(CSMA/CD)及物理层技术规范
IEEE802.5:令牌环网(Token-Ring)的介质访问控制协议及物理层技术规范
IEEE802.8:光纤技术咨询组,提供有关光纤联网的技术咨询
FDDI网使用的标准是IEEE 802.8
IEEE802.11:无线局域网(WLAN)的介质访问控制协议及物理层技术规范
题目当中用E1标识的一个网络就是以太网
局域网采用CSMA/CD技术就可以说是一个以太网
这里的高层通常指的是传输层
无差错接收 —— 假如说发送方发送1010,那接收方也要按照1010接收,如果接收方通过差错检测发现帧出错就干脆拒收或者丢弃该帧
可靠传输 —— 只要是发送方发来的帧都要接收,即要解决帧丢失和帧重复,帧失去等问题
Base —— 基带传输,传送基带信号(数字信号)
T —— Twisted,双绞线
10 —— 传输速率
MAC地址是在数据链路层上标识每一个主机或者设备的标识符
适配器就是网卡。现在的计算机主板上都已经嵌入了适配器,不再需要单独再使用网卡
MAC地址随着网卡烧制结束就已经确定
根据MAC地址就可以验证买的鼠标等设备是否是正品。在相关网站输入自己设备的MAC地址的前24位进行搜索,看是否是对应的厂商
为了使发送方和接收方能够保持同步需要在从MAC层往物理层传递的帧前面插入一个8B的前导码,8B前导码并不是以太网MAC帧的一部分
前同步码前面的1010 …使发送方和接收方能够进行一个时钟的同步,而最后面的两位1告诉接收方可以开始准备接收MAC帧
目的地址会有单播地址(专有MAC地址),广播地址(全1),多播类型三种情况。所有的主机看到广播地址都会接收
类型指明网络层使用的协议,以便把收到的MAC帧的数据上交给上层的协议
1500B是链路层的MTU。46B由以太网最小帧长64B得来
FCS是CRC帧检验序列
为什么没有帧结束定界符?以太网使用曼彻斯特编码作为编码形式,且每一个发送帧之间都会有一个最小间隔,并不会紧挨着发送。曼彻斯特编码1bit对应2个码元(或者说在一个bit时间范围内会有2次信号变化),发送数据时适配器能感受到电压的变化,不发送数据时电压就没有变化
集线器只会从每一个端口简单转发比特流。100BAST-T以太网星型拓扑当中的中心结点变成了交换机。交换机可以隔离冲突域,交换机的每一个端口都是一个冲突域,一个主机在一个交换域当中肯定就不会发生冲突,所以在全双工方式下不用使用CSMA/CD协议
无线局域网所覆盖的范围能比WIFI范围大的多。WIFI满足IEEE802.11b和IEEE802.11g标准
AP指无线接入点,也称作基站,是主机想要访问网络时通过无线介质可以接入的设备。假如现在A主机给B主机发送数据,A附近有基站AP1,B附近有基站AP2,AP1和AP2之间是一个无线或有线网络。A先把信息通过电磁波发给AP1,然后AP1再发给AP2,AP2再通过电磁波传给B
此时DA是MAC B,SA是MAC A。接收端和发送端是在实际通信过程当中实现接收和发送数据的两个基站,因此RA是MAC AP2,TA是MAC AP1
为什么到一个新的地方能收到欢迎短信?
中国移动和中国电信在全国各地分布有非常多的基站,基站的数据库会经常更新。我们手持移动设备行走时保持电话号码被注册在离手机最近基站的数据库当中
上面只是802.11标准当中的一种帧类型,802.11会把帧分成四种类型,不同的帧类型对应不同的地址字段:
To AP是要发往AP的帧,接收端是AP的MAC地址BSSID
From AP是从AP发来的帧,发送端是AP的MAC地址BSSID
分为有固定基础设施无线局域网和无固定基础设施无线局域网的自组织网络
一个AP包括所覆盖范围内的各个主机构成一个基本服务集BSS
AP1和AP2可以实现BSS范围内的各个主机之间进行通信。如A主机可以和C主机进行通信,因为都在AP1所覆盖的范围内。A会发送信号给AP1,AP1根据它所发送的数据帧找到对应端口发出给C
也可以实现漫游,让不同BSS范围内的主机进行通信。如A主机可以借助分配系统DS和B主机进行通信,DS把无线和有线结合在一起,AP都会接入到一个有线线缆上,A先把数据发给AP1,通过线缆到DS当中进行有线通信,数据通过线路到AP2,再由AP2转发给B
这样几个ESS组合在一起就形成了一个扩展的服务集ESS
我们在连WIFI时可以看到很多WIFI名,WIFI名又叫服务集标识符,每一个分别对应一个AP
没有任何转发器、集线器、路由器、基站等等,一些主机自己组成一个网络,每一台主机都可以充当路由器的功能,既可以发送数据也可以帮忙转发数据,各结点之间地位相互平等,而且每一个结点都可以任意地移动
组网的过程也非常简单,只需要把所有主机安排在一个网段
结点交换机是链路层设备,和路由器的区别在于只能在单个网络中转发分组
局域网和广域网的区别:
在广域网当中可以有交换机、集线器、路由器,覆盖的网络体系结构层次从物理层一直到网络层。而局域网只覆盖物理层和链路层
局域网普遍采用逻辑上为总线型的多点接入技术。广域网多采用点对点链路,全双工或半双工通信模式
广域网强调资源共享,局域网强调数据传输
使用拨号上网,宽带入网时一般都使用PPP协议
在设计因特网体系结构时,把最复杂的部分都放在了TCP协议当中,而IP协议较简单,主要提供不可靠的传输服务,因此链路层就没有必要在IP层之前实现可靠传输
实际生活应用当中主要靠TCP协议实现差错控制和流量控制,而网络层和链路层基本实现的都是不可靠,尽最大努力交付的传输,原因在于现在对网络的速率要求比较高
异步线路在传输过程中逐个字节或逐个字符发送,同步线路是一位位bit发送
差错检测使用CRC码
MTU默认不超过1500B,因为是全双工通信不使用CSMA/CD协议,不需要最短帧长
数据压缩协商 —— PPP协议需要在发送数据时对数据进行压缩
不支持多点线路 —— 只需要满足点对点之间的连接过程
身份验证 —— 比如拨号上网时要输入账号和密码,否则无法满足LCP协议连不上网
点开宽带连接输入账号密码建立物理链路,LCP把物理链路构造成LCP链路,LCP链路再经过NCP的配置协商形成NCP链路,此时才能正式访问网络上的内容
遇到转义字符也在它前面插入一个转义字符
PPP协议既可以用0比特插入法,也可以用插入转义字符实现透明传输
A地址字段和C控制字段没有携带有用信息
面向字节 —— 帧格式以字节为单位,传输时逐个字节发送
面向比特 —— 帧格式以bit为单位,传输时是一连串连续的bit位
每个PPP帧都是整数个字节
HDLC的站
HDLC的帧格式
PPP协议 & HDLC协议
网桥核心功能和交换机类似,非408考点
主机和集线器之间的距离不能超过100m,否则就会严重失真无法恢复。为了使距离比较远的主机之间进行通信,就要在物理层次上扩展以太网
光纤调制器把电信号转换成光信号,光纤解调器把光信号转换成电信号
集线器会通过所有的端口转发出去
冲突域 —— 在这个物理层设备所连的这些主机之内如果进行通信,同一时间只能有一台主机在发送信息,否则就会发生冲突
这样虽然能实现跨冲突域的远距离通信,扩大以太网的地理范围。但是共享通信信道主机数增多,发生冲突的概率更高,降低通信效率
网桥可以有多个端口,但不会很多
若每个网段的带宽是10Mb/s,那么这三个网段合起来最大的吞吐量就变成了30Mb/s。如果把网桥换成物理层设备,那么整个网络是一个冲突域,整个冲突域的最大吞吐量仍然是10Mb/s
通信的过程中会逐步填满转发表。若上图中主机A要给主机B发送数据帧,设两网桥的左接口为1,右接口为2
A发送的数据帧在网段当中广播出去,
左网桥接口1收到A帧,按照MAC A查找转发表
发现转发表当中没有源地址MAC A,于是把地址A和收到帧的接口1写入到转发表当中
如果以后收到发往A的数据帧,经过左网桥处理就知道应从接口1发送出去
按照目的地址MAC B查找转发表,发现没有。因此从除了左网桥接口1之外的所有接口转发出去
转发出的帧会到达C和D,C和D发现不是给自己的就不予处理直接丢弃
帧到达右网桥接口1,右网桥按照同样的方式处理该帧
为什么A和B在一个网段,还要从网桥转发出去?
这两个网桥并不知道当时网络的拓扑情况,需要自学习算法构建转发表,这样就可以方便以后发送数据时从哪个接口转发数据帧,因此尽管帧已经被目的主机正确接收,但是发送不会停止
若F要给C发送数据帧,B要给A发送数据帧
显然如果这个网络上每一个站都发送过帧,每一个站的地址最终都会被记录在转发表当中
转发表几分钟更新一次,把之前的记录全部删除
源站以广播方式向欲通信的目的站发送一个发现帧,每个发现帧到达目的站后会原路返回或者目的站返回一个响应帧,从多个返回帧中选取需要的方案
网桥通常只有2个端口
每一个端口都是一个冲突域
独占媒体带宽
实际生活中通常都使用存储转发式交换机
与网桥区别在于网桥只有两个端口,交换机有多个端口
例题:
广播域:看路由器
冲突域:看路由器和交换机。链路层设备,一个端口就是一个冲突域
可见不仅可以在一个交换机所连接的这些主机上进行划分,可以在一个大局域网中进行划分
比如A主机要发送给E主机,A主机先准备好普通的MAC帧,交换机1会在帧上新增一个VLAN标记字段,令其中的VID=1表示该帧属于VLAN1。将该帧从trunk端口发出通过链路到交换机2,交换机2识别出要发给VLAN1当中的主机,再结合MAC地址字段等决定发给E还是F,选定E后会把VLAN标记字段去掉还原成普通的MAC帧再发出
trunk端口让这个链路当中不把VLAN标记字段去掉,这种交换机和交换机之间连接的端口常用trunk端口
用户主机和交换机之间交流和通信都是普通的MAC帧,不是802.1Q帧
练习1:
练习2:
一个逻辑工作组也可以说是一个子网,或者说是一个广播域