计网期末复习索引

计网期末复习索引

因为本次期末开卷,点击目录大纲可以直接跳转(应该)

五层模型,每一层的PDU(协议数据单元,也可理解为传输的数据单位)分别是:

  • 物理层的PDU:比特
  • 数据链路层的PDU:帧
  • 网络层的PDU:IP数据报(分组、包)
  • 传输层的PDU:TCP报文段/UDP用户数据报
  • 应用层PDU:还没复习到

物理层

奈奎斯特定理——信道的极限容量

理想低通信道最大数据传输率:

\[2 \mathbf{H} \log _{2} \mathbf{V} (bps) \]

  • H 信道带宽(Hz,四舍五入也等于baud per second),注意奈准则只给出了码元传输速率的上限,一个码元对应多少个二进制位才决定信息传输速率
    • 如果题目已经给了2H,即baud为单位的信号传输速率,就不要再乘2了!
  • V 信号电平状态数

image-20200609203720471

香农定理——有噪声干扰的极限传输速率

  • 信噪比

    \[信噪比= \mathbf{1 0} \log _{10}(\mathbf{S} / \mathbf{N}) (dB) \]

  • 信道的极限信息传输速率 C 可表达为

    \[\mathbf{C}=\mathbf{W} \log _{2}(\mathbf{1}+\mathbf{S} / \mathbf{N}) \quad \mathbf{b} / \mathbf{s} \]

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

数据链路层

主要功能

  • 组帧
  • 差错控制
    • 检错编码
    • 纠错编码
  • 流量控制和可靠传输机制
    • 停止等待协议
    • 后退N帧协议(GBN)
    • 选择重传协议(SR)
  • 介质访问控制
    • 信道划分:频分复用、时分复用、波分复用、码分复用
    • 随机访问:ALOHA协议、CSMA/CD协议、CSMA/CA协议
    • 轮询访问:令牌传递协议
  • 局域网,IEEE 802.11令牌环网的基本原理
    • IEEE局域网的数据链路层分为逻辑链路控制介质访问控制两个子层
  • 广域网,PPP协议,HDLC协议

组帧

字符计数法(不好)

  • 在帧头部使用一个计数字段来标明帧内字符数(该字段也算一个字节),就知道后面跟了多少个字节,确定帧结束位置,但是第一个字节一旦错了,会有灾难后果

字符填充的首尾定界符法

零比特填充的首尾标志法❤️

  • 数组在发送端,例如一旦碰到5个1,就填充一个0,用一串011111110标志首尾,与数据区5个1后面会有一个0区分开
  • 很容易由硬件实现,比字符填充要快

物理违规编码法

  • 例如,使用曼彻斯特,不存在的电平方式“高-高”,“低-低”

差错控制——检错编码

奇偶校验码

循环冗余码CRC(可能要计算)

【写不动了,看谢希仁第七版《计算机网络》教材P74】

流量控制和可靠传输

以下停等,GBN,SR都是自动重传请求(ARQ,),通过接收方请求发送方重新传输出错的数据帧

滑动窗口特性:

  • 只有接收窗口向前滑动(即接收方发送了确认帧),发送窗口才有可能向前滑动(发送方收到确认帧后才向前滑动)
  • 以下三种协议在滑动窗口概念上的区别
    • 停止-等待:发送窗口 = 1,接收窗口 = 1
    • 后退N帧:发送窗口 > 1,接收窗口 = 1
    • 选择重传:发送窗口 > 1,接收窗口 > 1
  • 数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的

单工停-等协议ARQ

IMG_1399F8B55E50-1

后退N帧(Go-Back-N, GBN)

​ 一旦有一个帧出错或者丢失,发送方就要退回到出错的地方,然后重传出错帧和随后的N个帧。

​ 换句话说,后退N帧协议下,接收方只允许按顺序接收帧。接收窗口大小为1。用n比特进行编号时,发送窗口\(W_T\)应当满足\(1 \leqslant W_T \leqslant 2^n -1\),若发送窗口大于\(2^n - 1\),可能会造成接收方无法区分新旧帧。

​ 且为了减少开销,GBN不一定每次收到一个帧都会返回确认帧,可能连续收到好几个后,接收方也有数据要发,才捎带发送一个确认帧。

IMG_0327

选择性重传(Selective Repeat, SR)

后退N帧有时候太浪费了,出错后面的全都丢掉,所以有了SR,只重传出错的帧,当接收方检测到出错帧(n+1号)时,发送一个否定的确认帧\(NAK_{n+1}\),发送方收到后会尽快重传,而不必等到超时。

所以这样可能是乱序接收的!数据链路层要有一个缓冲区来存出错帧(n+1号)后到达的帧,并且每收到一个持续发送ACKn(表示n及n以前的帧均已被正确接收),直到出错帧正确到达。窗口大小一般遵循:

  • 发送窗口尺寸\(W_T \geqslant\) 接收窗口尺寸\(W_R\) (接收窗口大了无意义)
  • \(W_T + W_R \leqslant 2^n\),一般接收窗口不超过序号范围的一半 \(W_R \leqslant 2^{n-1}\)
  • 接收窗口最大值时,\(W_{Tmax} = W_{Rmax} = 2^{n-1}\),一般二者相同

IMG_158E3A0B8AF0-1

介质访问控制MAC

image-20200610122828305

image-20200610122857599

CSMA/CD协议:

  • 载波监听:发送前先听,若有其他节点在发送数据,听到信号,先不发
  • 碰撞检测:一边发送一边监听是否有碰撞,发生碰撞时,信号无法识别
  • 碰撞强化:检测到碰撞,立即停止,并发送32或48bit的干扰信号通知所有用户
  • 碰撞退避/指数退避:等一段时间再发
    • 单程端-端传播时延为τ(为物理距离/物理速度)
    • 退避时间 \(T = 2\tau \times 倍数\)
      • 倍数\(\in [0,1,2,...,2^k-1]\)
      • \(k = min\{10, 重传次数\}\)

由于这个性质,以太网要求发送的帧长度要使得在2τ时间发不完->

最小帧长 = 2τ(s)*数据传输速率(xbit/s)

  • 其中τ = 物理距离(km)/物理传播速度(km/s)

IMG_4AE166FECAFF-1

以太网

  • 用曼彻斯特编码

    • 用电平的跳变表示0下降沿或1上升沿,即每个码元都有电平跳变
  • 用CSMA/CD访问控制协议

    • 以太网的争用期长度2τ = 51.2 us
    • 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节(这里的M是10^6)
  • 规定以太网帧长≥ 64 字节,长度小于 64 字节的帧为无效帧

  • 以太网帧格式:

    • 目的地址、源地址:各6字节的MAC地址
    • 类型:2字节,标明上层协议类型,例:0x0800表示IP包
    • 数据:网络层数据报,长度46 ~ 1500字节
    • FCS:4字节,帧校验序列,采用CRC校验

IMG_E44FAFF634B7-1

以太网不需要帧结束符,但是帧也需要首部和尾部的。

交换机自学习算法建立转发表

交换机通过“来源”学习

收到一个帧后的处理过程:

  • 看源地址:交换表中存在否?若不存在,添加一项「MAC-接口号」;若存在,很好。
    • 若源地址=目的地址,丢弃不转发
  • 看目的地址:交换表中存在否?若不存在,每个接口都广播;若存在,发到该接口。

网络层

网络层功能

异构网络互联;路由与转发;拥塞控制

IP地址

IP 地址 ::= { <网络号>, <主机号>}

image-20200610160457521

IP数据报格式

image-20200610160156698

分片:有一定的计算

假设数据链路层一帧载荷不超过1500字节(以太网的最大传输单元MTU)

那么要传输3980字节

  • 一个片的有效数据为1500字节 - 20字节(IP包头) = 1480字节
  • 3980有效数据要拆分 = 1480+1480+1020字节
  • 每个片单独一个IP首部

IMG_65D93245560C-1

网际协议IP——ARP与RARP协议

IP 地址与物理地址的相互转换问题

主机设有一个ARP高速缓存(ARP cache),存有本地局域网上各主机和路由器的 IP 地址与硬件地址的映射表

子网划分与子网掩码

IP地址 ::= {<网络号>, <子网号>, <主机号>}

注意:主机号不能为全0或者全1,因为这是留给子网号的代表

image-20200610161716943

路由器中路由表必然要包含:目的网络地址、子网掩码、下一跳地址

使用子网掩码的分组转发过程❤️(书写过程)

主机先自己判断目的地址是否在本地子网:目的地址与自己的掩码“与”

若不在,数据包发给路由器Gateway(局域网内可能有ARP查询过程)

  1. 路由器将收到的分组首部提取目的IP
  2. 与路由表中各个子网掩码“与”操作,看是否有匹配
  3. 若有,找到下一跳接口出去;若无,则走默认路由
  4. 最后一个路由器发给目的主机,可能也有ARP

无分类编址CIDR(❤️怎么分配IP要考)

“斜线记法”:IP地址后加一个斜线“/”,后跟网络前缀所占的位数

128.14.35.7/20 表示该地址的高20位是网络前缀,剩下32-12位,表示的CIDR地址块共有\(2^{12}\)个地址

构成超网(路由聚合)

可以减少路由表中表项个数,共同前缀最长的放在一个项,聚合前后,地址块个数加起来一样就行,否则不能聚合

CIDR不使用子网,但仍使用“地址掩码”这一名词

例:/20的地址掩码是:11111111 11111111 11110000 00000000

前缀越短,单位内部分配的主机号越多

最长匹配前缀原则

在查找路由表时可能会得到不止一个匹配结果

从匹配结果中选择具有最长网络前缀的路由,其地址块就越小,因而路由就越具体

网际控制报文协议ICMP

ICMP位于IP层,ICMP报文是封装在IP包中传输的

ICMP差错报文

  • Destination unreachable:终点不可达,路由器或主机无法传输报文时向源主机发送此报文
  • Source quench:源点抑制,路由器或主机由于拥塞丢弃报文时,向源主机发送此报文,使其放慢发送速度
  • Time exceeded:超时,路由器收到TTL字段为0的报文时, 向源主机发送此报文
  • Parameter problem:参数问题,路由器或主机收到的报文中头部有非法字段时,丢弃数据包,并向源主机发送此报文
  • Redirect:重定向,路由器向主机发送此报文告知路由改变, 主机下次发送数据报给另外的路由器

ICMP询问报文

  • Echo request / reply:回声探测,用于测试网络连通性
  • Timestamp request / reply:请求时间,可用于时间同步

典型应用:ping(工作在应用层,但直接用网络层的ICMP,未采用传输层的TCP或UDP) ,trace route 工作在网络层

路由算法❤️

内部网关协议1——RIP(应用层)

特点:

  • 只和相邻路由器交换信息
  • 互相交换自己的整张路由表
  • 定时交换
  • 若别人发来的路由表,计算路由器经过X到达i的距离(跳数)更短,那么更新自己的路由表,走另一条路,跳数+1(表项「目的网络-相邻点(下一跳路由器)-跳数」)
  • 最大跳数不超过15,否则「网络不可达」
  • RIP是应用层协议,使用UDP传送数据

内部网关协议2——OSPF(网络层)

要使得所有路由器最终自身都有一个全网路由数据库

直接使用IP数据报传送

使用Dijkstra计算最优路径,路由表只存下一跳

收敛速度快,洪泛发送

OSPF 将一个自治系统再划分为若干个区域(area)

外部网关协议——BGP

  • 每个AS要选择至少一个路由器作为“BGP speaker”

  • BGP发言人除了运行BGP协议外,还要运行AS的内部网关路由协议

  • 网络拓扑状态发生变化时才会交换info

  • BGP-4使用四种报文

    • OPEN报文:用来与相邻的另一个BGP发言人建立关系
    • UPDATE报文:用来发送某一路由的信息,以及列出要撤消的多条路由
    • KEEPALIVE报文:用来确认打开报文和周期性地证实邻站关系
    • NOTIFICATION报文:用来发送检测到的差错

IP路由器功能

image-20200610172255439

III.路由器确实会对IP分组头进行差错检验,丢弃有差错的首部的报文,但是并不能保证IP分组不丢失(可能还没到就路上没了)

IP组播

使用D类IP地址作为组播地址

使用网际组管理协议IGMP

VPN和NAT

image-20200610172430397

传输层

传输层提供的服务

无连接服务(UDP):DNS、RIP

面向连接的服务(TCP):HTTP、FTP

只有主机才有传输层!

传输层为主机进程之间提供逻辑通信;网络层为主机之间逻辑通信;真正的端到端通信

对收到的报文(数据部分)进行差错检测

传输层需为多个应用进程提供服务->复用与分用

  • 复用:应用层多个应用进程通过传输层发送数据

  • 分用:传输层收到的数据必须交付给指明的应用进程

熟知端口号:

image-20200610203524613

UDP

面向报文,不保证可靠交付

UDP数据报

image-20200610205548273

UDP发送的报文长度是应用进程给出的,不过一般不会太长

UDP校验

TCP

面向连接,点对点,可靠交付,全双工通信,面向字节流(发送方应用进程发出的数据块与接收方应用进程收到的数据块可能没有一一对应关系,但数据保证一致)

image-20200610210347456

TCP连接管理——客户C/服务器S方式

  • TCP连接是一条虚连接而不是一条真正的物理连接
  • TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节
  • 可以把太长的数据块划分短一点,也可以把短数据积累到足够多的字节,再发报文段

TCP连接的端点叫「套接字」或插口。套接字 socket ::= (IP地址: 端口号)

TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

连接建立:三次握手

image-20200610213928861

连接释放

可以由任意一方发起

image-20200610214032333

报文段最大存活时间:MSL

TCP连接必须经过时间2MSL后才真正释放掉,为了保证A发送的最后一个ACK报文段能够到达B

TCP报文段的首部格式

image-20200610211807162

  • 序号:在TCP连接中传送的数据流中的每一个字节都有序号
  • 确认号:期望收到对方的下一个报文段的数据的第一个字节的序号
  • 确认ACK:1bit,为1时,确认号字段有效;为0时,确认号无效
  • 同步SYN:1bit,为1时,表示这是一个连接请求或连接接受报文
  • 终止FIN:1bit,为1时,表示要求释放TCP连接
  • 窗口大小:2字节,用来让对方设置发送窗口的依据,单位为字节

TCP可靠传输

基于滑动窗口

发送窗口的上限值=min [对方接受窗口大小,拥塞窗口]

image-20200610212813094

超时重传——时间选择

传输层的往返时间变化较大,每个数据报所选择的路由都可能有变化

  • TCP采用一种自适应算法计算超时重传时间
    • 先算加权平均往返时间\(RTT_S\)
    • image-20200610213034145
    • 再算超时重传时间RTO:
    • image-20200610213222075

TCP流量控制

流量控制(flow control)就是让发送方的发送速率不要太快,使接收方来得及接收

发送方的发送窗口\(\leqslant\)对方的接收窗口rwnd

【注意】跟数据链路层的滑动窗口不一样,链路层的接收窗口都可以小到1

持续计时器

当ack方发来的接收窗口rwnd=0时,开始计时。时间到后,发零窗口探测报文段看接收窗口是否好了

传输效率

  1. 缓存数据达到一定量(最大报文段长度MSS)就发送
  2. 发送方的应用进程指明要求发送报文段,即推送(push)操作,给我马上发车
  3. 发送方计时器到了,已缓存的数据装入报文段发出

TCP拥塞控制❤️

注:TCP窗口大小是以字节为单位的,这里讨论拥塞窗口时,rwnd=1,意思是接收窗口最多1个MSS,不是1字节

以下两种方法是可以混在一起使用的,看触发条件是什么:拥塞or收到重复确认帧

慢开始+拥塞避免(发生网络拥塞时使用)

image-20200610215215903

快重传+快恢复(收到重复确认帧)

发送方只要接连收到三个重复确认就应当立即重传对方尚未收到的报文段

cwnd拥塞窗口仅降到新的ssthresh值即可(都是发生拥塞/重复确认时的窗口的一半)。

image-20200610215409796

总结流程:

拥塞控制:

  • 超时->cwnd=1,慢开始,指数增大,ssthresh变为超时的窗口一半
  • 收到3个重复确认帧->cwnd=ssthresh(收到重复帧时窗口一半),线性增大+1

发送窗口的上限值 = Min[rwnd, cwnd]

应用层

posted @ 2020-06-10 22:16  Vanellope  阅读(669)  评论(0编辑  收藏  举报