前言
通过一整个学期的学习,我对于计算机通信网架构和基本思想有了比较宏观的理解。而在放假之前,我将试图整理一些细微、高频的知识点以应对即将到来的考试
一、概述
1.1 曼彻斯特编码(Manchester Encoding)
- 逻辑1由高-低信号序列表示,逻辑0由低-高信号序列表示,在每一位的"中间"必有一跳变。
1.2 差分曼彻斯特编码(Differential Manchester Encoding)
- 数据的表示在于每一位开始处是否有电平转换,有电平转换表示0,无电平转换表示1
1.3 关于速率
- 电信号在固体介质中的传播速率一般认为是固定的,即2/3c=2*10^8 m/s
- 区分数据传输速率和信号传播速率之间的差别
1.4 分流与复用
- 分流:用多个网络通信来实现一个传输层的通信,提高传输层的通信速度
- 复用:多个传输层的通信复用到一个网络通信上,可降低费用
1.5 服务接口模型
1.6 服务与协议的关系
- 某层实体在具体考虑服务与协议时,涉及
- “我”向上提供什么样的服务
- “我”使用什么样的协议与对等实体虚通信
- “我”将利用什么样的下层服务
二、物理层
2.1 奈奎斯特定理——有限带宽无噪声信道
- 最大数据传输速率=2Hlog2V
- H:铜线宽度
- 2:最大码元传输速率是最高频率(带宽)2倍的关系
- V:信号电平级数量
- log2V:一个信号变化可以表示多少位数据变化
- 比特率=波特率*每个符号所含比特数
可以用提高编码效率的方式,在有限带宽中多传数据——加大数据传输速率
2.2 香农定理——随机噪声信道
- 最大传输速率=Hlog2(1+S/N)
- H:铜线带宽
- S/N:信噪比(dB)
提高编码效率不是最终的解决方案,在噪声影响下,最大速率是路的尽头
三、数据链路层
3.1 汉明码
对于发送方
- 给定码长m,纠正单位错需要r位纠错码,且r满足
(m+r+1)<=2r
- 第1个位置,变成第0001个位置;
- 第2个位置,变成第0010个位置;
- 第3个位置,变成第0011个位置;
- 第4个位置,变成第0100个位置;
- 依此类推
规定凡是位置符合XXX1,归到 P1;XX1X,归到 P2;X1XX,归到 P3;1XXX,归到 P4;组分好了,就可以把校验码的值也就确定下来了(依旧采用偶校验 )
对于接收方
- 分组,分好P1,P2,P3……然后分别对每个组校验,没有错的令它为0,有错的令它为1
- 把各个分组P从大到小排列起来,标志排成了一串一零串。这个数就是出错的数据的位置。
3.2 循环冗余校验(CRC)
发送端生成
- 设原始码串M(x)= 10101011
- 生成多项式G(x)= 10011=x^4+x+1
- 首先,在数据位后加多项式最高幂次个0,变成:101010110000,作为被除数
- 比如这里的多项式最高次项为x^4,那就在数据位后加四个0
- 然后,将生成多项式G(x)=10011 作为除数,对应位做异或
- 最后得到的余数:1010,即是校验位码串的值
- 那么整个最终发送的CRC码串为:10101011 1010
接收端校验
- 假设收到的码串变成了 10001011 1010,与上文对比,第10位(右边为低位)发生了错误
- 现在尝试用接收端收到的CRC码串与生成式G(x)=10011 进行异或
- 得到余数为 1010(2) = 10(10) ,即第10位发生错误,只需要反转第10位的值,便可获得正确的值
3.3 校验和
3.4 停等协议与滑动窗口协议
3.5 数据链路层的成帧方法与最小帧长
3.5.1 成帧方法
字符计数法 用一个帧的第一字节来说明帧的总长度(总长度包含这个帧头)
- 看这张图,白色为帧头,指明了长度,比如第一帧长度为5,后面就跟了4个字节,第二帧的长度为5,后面也跟了4字节,之后是两个8字节长度的,所以各自跟了7字节的正文部分。
- 但是很显然,如果头这一个字节出了问题,影响的就不仅仅是这一帧了,其他的都会出问题。比如:
- 第二个帧头出了问题,那么就会出现大问题:后面的全部帧都会出错,连锁反应。所以这种方法不太常用
字符填充的首尾界定法
- (在帧的头之前和尾之后加一个特殊的字符,只要读到这个字符帧就开始了,再次读到就认为这个帧结束了),如下图所示:
- 这种方法能够避免上面字符计数法的头出错问题,但是他也有问题:
- 如果正文里面出现了flag特殊字符怎么办?
- 解决办法是在正文里面flag字符前面加上转义字符esc,这样读到flag之前如果没有转义字符esc,那么认为帧结束,如果有esc那么认为他就是普通的数据就行。
- 那么 正文里面如果有esc字符呢 ?
- 就在esc前面再加一个esc就行了,这两个的处理是一样的。如下图:
- 如果正文里面出现了flag特殊字符怎么办?
比特填充的字符界定法
- 当正文读取的时候一旦出现了5个连续的1,那么在后面填充一个0,避免出现6个1造成帧提前结束。如下图所示:
- 收端接收到之后,每读到5个连续的1之后,就把后面的0去掉一个,这样就得到了原文的数据了
3.5.2 最小帧长
- 最小帧长必须大于整个网络的最大时延位(最大时延时间内可以传输的数据位)
- 如果帧长度太小,就可能出现网络上同时有两个帧在传播,就会产生冲突(碰撞)而造成网络无法发送数据。
- 如果数据帧太长就会出现有的工作站长时间不能发送数据,而且可能超出接受端的缓冲区大小,造成缓冲益出。
四、介质访问子层
4.1 波分多路复用
4.2 无线局域网(隐藏站点与暴露站点)
隐藏站点
- A向B发送数据时,C监测不到载波,C也向B发送数据,造成冲突,即A对C隐藏
暴露站点
- B向A发送数据,C向D发送数据,本来互不干扰;但是B发送时,C检测信号,以为会发送冲突,而停止。即B暴露在C、D之间
均是由于监听范围无法包含所有主机造成的
解决之道(MACA)
- 冲突避免
- 解决隐藏站点冲突
- A欲向B发送数据,先发送RTS(Request To Send)帧提醒B
- B应答CTS(Clear To Send),阻止在B覆盖范围内的其他所有站点发送数据(不包括A)
- C收到CTS后,不向B发送数据而避免了冲突(在B周围的所有站点中只有A能发送数据)
4.3 网桥技术
源路由网桥有一点像电路交换,路线已经预先设定好了
交换机就是多端口桥,并且处于第三层(网络层 ),而网桥处于(数据链路层 )
五、网络层
5.1 虚电路交换
5.2 链路状态(LS)路由选择算法
上图的链路状态算法建立过程如下
- D(v) :到算法的本次迭代,从源节点到目的节点 v 的最低开销路径的开销
- p(v) :从源到 v 沿着当前最低开销路径前一节点 ( v 的邻居)
- N’ :节点子集;如果从源到 v 的最低开销已确知,v 在 N’ 中
- 在初始化步骤,从 u 到与其直接相连的邻居 v、x、w 的当前已知最低开销路径分别初始化为 2、1、5。不与 u 直接相连的 y、z 开销设为 ∞
- 在之后的迭代中,观察还未加入集合 N’ 中的节点,并且找出在前一次迭代结束时具有最低开销的节点,计算最短开销,循环如此
- 已经加入 N’ 的节点那一列在加入之后则这一列的开销不再更新维护
5.3 距离向量路由选择算法
- 一直持续到邻居之间无更多信息要交换为止
- 每个节点通过 Bellman-Ford 维护其各自的路由选择表
5.4 拥塞控制与流量控制
5.5 IPv4数据报分片
- 一个链路层帧能承载的最大数据量叫作 最大传输单元(MTU) ,IP数据报通过分片的方式严格遵守限制
- 主机通过检查标识号(identification)来确定哪些数据报实际上是同一较大数据报的片
- 标志字段(Flag) 占3位,但目前只有2位有意义
- 标志字段中的最低位为MF(More Fragment)
- MF=1即表示后面“还有分片”的数据报
- MF=0表示这已是若干数据报片中的最后一个
- 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”
- 只有当DF=0时才允许分片
- 标志字段中的最低位为MF(More Fragment)
- 偏移量的意思是目前该数据报是从源数据包哪个位置开始的 ,其衡量单位是 8个字节(8Bytes)
- 例如:一个携带5000字节的IP数据报,下一步经由 MTU 为1500字节的以太网
- 则将IP数据报分为4个片
头部 | 数据部分 |
---|---|
片1头(标识号=x,标志字段=001,偏移量0) | 片1数据(1480字节) |
片2头(标识号=x,标志字段=001,偏移量185) | 片2数据(1480字节) |
片3头(标识号=x,标志字段=001,偏移量370) | 片3数据(1480字节) |
片4头(标识号=x,标志字段=000,偏移量555) | 片4数据(1480字节) |
5.6 网络互连技术
六、运输层
6.1 TCP拥塞控制算法
该算法包括三个主要部分:
- 慢启动
- 拥塞避免
- 快速恢复
- 慢启动
- 拥塞窗口的值以1个 MSS 开始,执行慢启动算法,接收方每确认一个报文段,拥塞窗口的值就翻倍,以指数增长 (1,2,4,8,16,…)
- 当首次出现由超时指示的丢包事件时
- 记录下 当前拥塞窗口的值的一半为慢启动阈值
- 将拥塞窗口的值置为1
- 继续重复上述第一步,当拥塞窗口出现到达或超过慢启动阈值时 ,结束慢启动并进入拥塞避免模式
- 当检测到3个冗余ACK时,执行快速重传并进入快速恢复状态
- 拥塞避免
- 此时拥塞窗口每次只增加1个 MSS
- 当出现由超时指示的丢包事件时
- 记录下 当前拥塞窗口的值的一半为慢启动阈值
- 将拥塞窗口的值置为1
- 当检测到3个冗余ACK时,执行快速重传并进入快速恢复状态
如果忽略掉慢启动阶段的话,TCP的拥塞控制算法呈现的是一种 “加性增,乘性减” 的状态