数据通信
资源共享
分布式处理
提高可靠性
负载均衡
按分布范围
若中央处理器之间的距离非常近(如1m的数量级或更小),则一般称为多处理器而非计算机网络
按传输技术
广播式网络
点对点网络
是否采用分组存储转发与路由选择机制是点对点式网络与广播式网络的重要区别。广域网基本都属于点对点网络
按拓扑结构
按使用者
按交换技术
按传输介质
带宽
时延
排队时延和处理时延一般可忽略不计,除非另有说明;对于高速链路,提高的仅是数据发送速率而非比特在链路上的传播速率。提高数据的发送速率只是为了减少数据的发送时延
时延带宽积
往返时延 (Round-Trip Time,RTT)
吞吐量
速率(数据传输速率、数据率、比特率)
信道利用率
OSI参考模型有7层,自下而上为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,低三层为通信子网,高三层为资源子网
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
TCP/IP模型
数据、信号、码元
信源、信道、信宿
速率、波特、带宽
把数据变换为模拟信号的过程称为调制,把数据变换为数字信号的过程称为编码
数字数据编码为数字信号
归零编码,高电平代表1,低电平代表0,每个时钟周期的中间均跳变到低电平
非归零编码,与归零编码的区别是不用归零,一个周期可以全部用来传输数据,但无法传递时钟信号,双方难以同步
反向非归零编码,与非归零编码的区别是用信号的翻转代表0,信号保持不变代表1。这种方式集成了前两种编码的优点,USB2.0通信的编码方式即为此
曼彻斯特编码,将一个码元分成两个相等的间隔,前后为高电平 + 低电平表示1,0则相反。这种编码在每个码元的中间出现跳变,以太网使用的编码方式就是曼彻斯特编码
差分曼彻斯特编码,常用于局域网传输,在每个码元的中间都有一次电平的跳转,可以实现自同步,且抗干扰性较好
4B/5B编码
归零编码
与差分曼彻斯特编码
会在中间跳变
数字数据调制为模拟信号
模拟数据编码为数字信号
模拟数据调制为模拟信号
由网络层提供,是分组交换的两种方式
数据报
在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(即网络层的PDU)
特点
虚电路
数据报与虚电路服务的比较
数据报 | 虚电路 | |
---|---|---|
连接的建立 | 不需要 | 必须有 |
目的地址 | 每个分组都有完整地址 | 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号 |
路由选择 | 每个分组独立地进行路由选择和转发 | 属于同一条虚电路的分组按照同一路由转发 |
分组顺序 | 不保证分组的有序到达 | 保证分组的有序到达 |
可靠性 | 不保证可靠通信,可靠性由用户主机来保证 | 可靠性由网络保证 |
对网络故障的适应性 | 出故障的结点丢失分组,其它分组路径选择发生变化时可以正常传输 | 所有经过故障结点的虚电路均不能正常工作 |
差错处理和流量控制 | 由用户主机进行流量控制,不保证数据报的可靠性 | 可由分组交换网负责,也可由用户主机负责 |
传输介质可分为导向传输介质(电磁波被导向沿着固体媒介传播)和非导向传输介质(空气、真空、海水)
双绞线
同轴电缆
光纤
无线传输介质
主要任务
任务是将源机器中来自网络层的数据传输到目标机器的网络层
无确认的无连接服务**
有确认的无连接服务**
有确认的面向连接服务**
有连接就一定要有确认,即不存在无确认的面向连接的服务
用以使发送方确定接收方是否正确收到由其发送的数据的方法
位错
帧中某些位出现了差错。通常采用 循环冗余校验(CRC)方式发现位错,通过自动重传请求(Automatic Repeat Request,ARQ)方式来重传出错的帧。
ARQ法:让发送方将要发送的数据帧附加一定的CRC冗余检错码一并发送,接收方则根据检错码对数据帧进行错误检测,若发现错误则丢弃,发送方超时重传该数据帧。
ARQ法只需返回很少的控制信息就可有效地确认所发送数据帧是否被正确接收。
帧错
指帧的丢失、重复、或失序等错误
在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确地交付给目的结点
把比特组合成 帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。 为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧 主要解决 帧定界、帧同步、透明传输 等问题。
组帧时,要同时加首部和尾部,这是因为在网络中信息是以帧为最小单位进行传输的。而分组(即IP数据报)仅是包含在帧中的数据部分,所以不需要加尾部来界定
字符计数法,在 帧头部 使用一个计数字段来 标明帧内字符数。目的结点的数据链路层收到字节计数值时,就知道 后面跟随的字节数,从而可以确定 帧结束的位置。(计数字段提供的字节数包含自身所占用的一个字节)。
最大的问题是,如果计数字段出错,即失去帧边界划分的依据,那么接收方就无法判断帧的结束位和下一帧的开始位,收发双方失去同步
使用特定字符来定界 一帧的开始与结束。如图,控制字符 SOH 放在 帧的最前面,表示 帧的首部开始。控制字符EOT 表示 帧的结束。
为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)来加以区分
允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。使用一个特定的 比特模式,即 01111110 来标志一帧的开始和结束。
为了不使信息位中出现的比特流 01111110 被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的“1”时,将自动在其后面插入一个“0”;而接收方每收到5个连续的“1”时,自动删除后面紧跟的**“0”**,以恢复原信息。
零比特填充法很容易由硬件来实现,性能优于字符填充法
局域网 IEEE 802标准就采用了这种方法
违规编码法不需要采用任何填充技术,便能实现数据传输的 透明性,但它只适用于 采用冗余编码 的特殊编码环境。
由于 字节计数法 中计数字段的脆弱性和字符填充法 实现上的复杂性与不兼容性,目前较常用的组帧方法是 比特填充法 和 违规编码法。
比特差错是传输差错的一种,本节只讨论比特差错
利用编码技术进行差错控制
接收端检测出差错时,设法通知发送端重发,直到接收到正确的码字为止
接收端不但能发现差错,而且能 确定比特串的错误位置,从而 加以纠正。
因此,差错控制又可分为
检错编码
和纠错编码
最基本的检错码,分为奇校验码 和 偶校验码。由 n-1位信息元和1位校验元组成
只能检测奇数位的出错情况,但并不知道哪些位出错,也不能发现偶数位的出错情况。意思是,当有1个,3个,5个等奇数个位置上的码出错,这样能被检测到。这是因为,
奇数+奇数=偶数,偶数+奇数=奇数
,即奇数是扭转奇偶类型的数。
循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能,检测到帧出错则直接丢弃
在数据通信的过程中,解决差错问题的一种方法是 在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么样的比特串。最常见的纠错编码是 海明码,其实现原理是 在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。
海明码的编码原理和过程(举例以数据码1010)
确定海明码的位数
设 n为有效信息的位数,k为校验位的位数,则信息位n和校验位k应满足
n + k ≤ 2 k − 1 n+k \le 2^k-1 n+k≤2k−1
若要检测两位错,则需再增加1位校验位,即** k + 1 k+1 k+1**位。
海明码位数为 n + k = 7 ≤ 2 3 − 1 n+k=7 \le 2^3-1 n+k=7≤23−1成立,则n,k有效。设信息位为 D 4 D 3 D 2 D 1 ( 1010 ) D_4D_3D_2D_1 (1010) D4D3D2D1(1010),共4位,校验位为 P 3 P 2 P 1 P_3P_2P_1 P3P2P1,共3位。对应的海明码为 H 7 H 6 H 5 H 4 H 3 H 2 H 1 H_7H_6H_5H_4H_3H_2H_1 H7H6H5H4H3H2H1。
确定校验位的分布
规定 校验位 P i P_i Pi在海明位号为 2 i − 1 2^{i-1} 2i−1的位置上,其余各位为信息位,因此有
P 1 P_1 P1的海明位号为 2 i − 1 = 2 0 = 1 2^{i-1}=2^0=1 2i−1=20=1,即 H 1 为 P 1 H_1为P_1 H1为P1
P 2 P_2 P2的海明位号为 2 i − 1 = 2 1 = 2 2^{i-1}=2^1=2 2i−1=21=2,即 H 2 为 P 2 H_2为P_2 H2为P2
P 3 P_3 P3的海明位号为 2 i − 1 = 2 2 = 4 2^{i-1}=2^2=4 2i−1=22=4,即 H 4 为 P 3 H_4为P_3 H4为P3
将信息位按原来的顺序插入,则海明码各位的分布如下
H 7 H_7 H7 H 6 H_6 H6 H 5 H_5 H5 H 4 H_4 H4 H 3 H_3 H3 H 2 H_2 H2 H 1 H_1 H1
D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 P 3 P_3 P3 D 1 D_1 D1 P 2 P_2 P2 P 1 P_1 P1
分组以形成校验关系
每个数据位用 多个校验位 进行校验,但要满足条件: 被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和(即 H i H_i Hi)。 另外,校验位不需要再被校验。分组校验形成的校验关系如下:
校验位取值
校验位 P i P_i Pi的值为第i组(由该校验位校验的数据位)所有位求异或。
根据(3)中的分组有
P 1 = D 1 ⊕ D 2 ⊕ D 4 = 0 ⊕ 1 ⊕ 1 = 0 P 2 = D 1 ⊕ D 3 ⊕ D 4 = 0 ⊕ 0 ⊕ 1 = 1 P 3 = D 2 ⊕ D 3 ⊕ D 4 = 1 ⊕ 0 ⊕ 1 = 0 P_1=D_1 \oplus D_2 \oplus D_4=0 \oplus 1 \oplus 1 = 0 \\ P_2=D_1 \oplus D_3 \oplus D_4=0 \oplus 0 \oplus 1 =1 \\ P_3=D_2 \oplus D_3 \oplus D_4 = 1 \oplus 0 \oplus 1 = 0 P1=D1⊕D2⊕D4=0⊕1⊕1=0P2=D1⊕D3⊕D4=0⊕0⊕1=1P3=D2⊕D3⊕D4=1⊕0⊕1=0
所以,1010对应的海明码为 101 0
010
(方框内为校验位,其它为信息位)
海明码的校验原理
每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成 k个校验方程:
S 1 = P 1 ⊕ D 1 ⊕ D 2 ⊕ D 4 S 2 = p 2 ⊕ D 1 ⊕ D 3 ⊕ D 4 S 3 = p 3 ⊕ D 2 ⊕ D 3 ⊕ D 4 S_1=P_1 \oplus D_1 \oplus D_2 \oplus D_4 \\ S_2=p_2 \oplus D_1 \oplus D_3 \oplus D_4 \\ S_3 = p_3 \oplus D_2 \oplus D_3 \oplus D_4 S1=P1⊕D1⊕D2⊕D4S2=p2⊕D1⊕D3⊕D4S3=p3⊕D2⊕D3⊕D4
若 S 3 S 2 S 1 S_3S_2S_1 S3S2S1的值为 000,则说明 无错;否则说明 出错,且这个数就是 错误位的位号,如 S 3 S 2 S 1 S_3S_2S_1 S3S2S1=001,说明第1位出错,即 H 1 H_1 H1出错,直接将该位取反就达到了纠错的目的。
** P i P_i Pi**在发送前就算好了,一并发送过去,所以如果跟接收方收到的 D 3 、 D 2 、 D 1 D_3、D_2、D_1 D3、D2、D1再计算出来的 P i P_i Pi对不上的话,就说明是 数据发生变化。
海明码纠错d位,需要码距为 2 d + 1 2d+1 2d+1的编码方案;检错d位,需要码距 d + 1 d+1 d+1
流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。基本方法是由接收方控制发送方发送数据的速率,常见的方式有两种:停止-等待协议和滑动窗口协议。
停止-等待流量控制基本原理
发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低
滑动窗口流量控制基本原理
在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗口的大小 W T W_T WT代表还未收到对方确认信息的情况下,发送方最多还可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则一律丢弃。
发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧)时,发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧后,才开始继续发送
接收端收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃
滑动窗口有以下重要特性
停止-等待协议
:发送窗口大小=1,接收窗口大小=1后退N帧协议
:发送窗口大小>1,接收窗口大小=1选择重传协议
:发送窗口大小>1,接收窗口大小>1可靠传输机制
数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。
有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。
超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。
**自动重传请求(Auto Repeat Request,ARQ)**通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。
传统自动重传请求分为三种,即
在数据链路层中,流量控制机制和可靠传输机制是交织在一起的
现有的实际有线网络的数据链路层很少采用可靠传输(不同于OSI参考模型的思路)
在停止-等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。从滑动窗口机制的角度看,停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。
在停止-等待协议中,除数据帧丢失外,还可能出现以下两种差错
到达目的站的帧可能已遭破坏,接收站利用差错检测技术检出后,简单地将该帧丢弃。为了对付这种可能发生的情况,源站装备了计时器。在一个帧发送之后,源站等待确认,如果在计时器计满时仍未收到确认,那么再次发送相同的帧。如此重复,直到该数据帧无错误地到达为止。
数据帧正确而确认帧被破坏。此时接收方已经收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧,并重传一个该帧对应的确认帧。发送的帧交替地用0和1来标识,肯定确认分别用ACK0和ACK1来表示,收到的确认有误时,重传已发送的帧。
对于停止-等待协议,由于每发送一个数据帧就停止并等待,因此用1bit来编号就已经足够。在停止-等待协议中,若连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧时,表明接收端收到了重复帧。
为了超时重发和判定重复帧的需要,发送方和接收方都须设置一个帧缓冲区。发送端在发送完数据帧时,必须在其发送缓冲中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本。
由下图可知,停止-等待协议通信信道的利用率很低。为了克服这一缺点,就产生了另外两种协议,即后退N帧协议和选择重传协议。
在后退N帧式ARQ中,发送方无须在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N个帧。换句话说,接收方只允许按顺序接收帧(所以接收窗口大小为1)。
如下图,源站向目的站发送数据帧。当源站发完0号帧后,可以继续发送后续的1号帧,2号帧等。源站每发送完一帧就要为该帧设置超时计时器。由于连续发送了许多帧,所以确认帧必须要指明是对哪一帧进行确认。为了减少开销,GBN协议还规定接收端不一定每收到一个正确的数据帧就必须立即发回一个确认帧,而可以在连续收到好几个正确的数据帧后,才对最后一个数据帧发确认信息,或者可在自己有数据要发送时才将对以前正确收到的帧加以捎带确认。这就是说,对某一数据帧的确认就表明该数据帧和此前所有的数据帧均已正确无误地收到
这就是累计确认,即收到了0、5、6的确认帧,则说明1~5号帧都已经收到了,不需要重传
如下图,ACKn表示对第n号帧的确认,表示接收方已正确收到第n号帧及以前的所有帧,下一次期望收到第n+1号帧(也可能是第0号帧)。接收端值按序接收数据帧。虽然在有差错的2号帧之后接着又收到了正确的6个数据帧,但接收端都必须将这些帧丢弃。接收端虽然丢弃了这些不按序的无差错帧,但应重复发送已发送的最后一个确认帧ACK1(这是为了防止已发送的确认帧ACK1丢失)。
后退N帧协议的接收窗口为1,可以保证按序接收数据帧。若采用n比特对帧编号,则其发送窗口的尺寸 W T W_T WT应满足** 1 ≤ W T ≤ 2 n − 1 1 \le W_T \le 2^n-1 1≤WT≤2n−1。若发送窗口的尺寸大于 2 n − 1 2^n-1 2n−1,则会造成接收方无法分辨新帧和旧帧**。
由上图可看出,后退N帧协议一方面因连续发送数据帧而提高了信道的利用率,另一方面在重传时又必须把原来已传送正确的数据帧进行重传(仅因这些数据帧的前面有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若信道的传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议。
为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。
在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传,如下图
选择重传协议的接收窗口尺寸 W R W_R WR和发送窗口尺寸 W T W_T WT都大于1,一次可以发送或接收多个帧。若采用n比特对帧编号,为了保证接收方向前移动窗口后,新窗口序号与旧窗口序号没有重叠部分,需要满足条件:接收窗口 W R W_R WR+发送窗口 W T ≤ 2 n W_T \le 2^n WT≤2n。假定仍然采用累计确认的方法,并且接收窗口 W R W_R WR显然不应超过发送窗口 W T W_T WT(否则无意义),那么接收窗口尺寸不应超过序号范围的一半,即** W R ≤ 2 n − 1 W_R \le 2^{n-1} WR≤2n−1。接收窗为最大值时, W T m a x = W R m a x = 2 n − 1 \rm W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n−1**。
一般情况下,在SR协议中,接收窗口的大小和发送窗口的大小是相同的。
选择重传协议可以避免重复传送那些本已正确到达接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接收窗口下界以下或窗口上界以上的序号的帧,因此所需缓冲区的数目等于窗口的大小,而不是序号数目。
任务
内容
信道划分介质访问控制
(静态划分信道)随机访问介质访问控制
(动态分配信道)轮询访问介质访问控制
(动态分配信道)将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来,把时域和频域资源合理地分配给网络上的设备。
多路复用技术(实现信道划分介质访问控制)
信道划分的实质,就是通过分时、分频、分码等方法,把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对点信道。
频分多路复用(FDM,Frequency-division multiplexing)
时分多路复用(TDM,Time-division multiplexing)
波分多路复用(WDM,Wavelength-division multiplexing)
码分多路复用(CDM,Code-division multiplexing)
采用不同的编码来区分各路原始信号的一种复用方式。与FDM和TDM不同,它既共享信道的频率,又共享时间
更常用的名词是码分多址(Code Division Multiple Access,CDMA),其原理是每个比特时间再划分成m个短的时间槽,称为码片(Chip),通常m的值是64或128。
设m为8。每个站点被指派一个唯一的m位码片序列。发送1时,站点发送它的码片序列;发送0时,站点发送该码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离出各路信号,要求各个站点的码片序列相互正交。
CDMA的原理
假如站点A的码片序列被指派为00011011,则A站发送00011011就表示发送比特1,发送11100100就表示发送比特0。
为了方便,按惯例将码片中的0写作**-1**,将1写作**+1**
因此,A站的码片序列是**-1-1-1+1+1-1+1+1**
令向量S表示A站的码片向量,令T表示B站的码片向量。两个不同站的码片序列正交,即向量S和T的规格化内积为0
S ⋅ T ≡ 1 m ∑ i = 0 m S i T i = 0 S·T \equiv \frac{1}{m} \sum_{i=0}^{m}S_iT_i=0 S⋅T≡m1i=0∑mSiTi=0
任何一个码片向量和该码片向量自身的规格化内积都是1,任何一个码片向量和该码片反码的向量的规格化内积都是**-1**
S ⋅ S = 1 m ∑ i = 1 m S i S i = 1 m ∑ i = 1 m S i 2 = 1 m ∑ i = 1 m ( ± 1 ) 2 = 1 S·S=\frac{1}{m} \sum_{i=1}^{m}S_iS_i=\frac{1}{m} \sum_{i=1}^mS_i^2=\frac1m\sum_{i=1}^m(\pm1)^2=1 S⋅S=m1i=1∑mSiSi=m1i=1∑mSi2=m1i=1∑m(±1)2=1
令向量T为(-1 -1 +1 -1 +1 +1 +1 -1),当A站向C站发送数据1时,就发送了向量(-1 -1 +1 -1 +1 +1 +1 -1)。当B站向C站发送数据0时,就发送了向量(+1 +1 -1 +1 -1 -1 -1 +1)。两个向量到了公共信道上就进行叠加,实际上就是线性相加,得到
S − T = ( 0 0 − 2 2 0 − 2 0 2 ) S-T=(0 \quad 0 \quad -2 \quad 2 \quad 0 \quad -2 \quad 0 \quad 2) S−T=(00−220−202)
到达C站后,进行数据分离,如果要得到来自A站的数据,C站就必须知道A站的码片序列,让S与S-T进行规格化内积。根据叠加原理,其他站点的信号都在内积的结果中被过滤掉了,内积的相关项都是0,而只剩下A站发送的信号。得到
S ⋅ ( S − T ) = 1 S·(S-T)=1 S⋅(S−T)=1
所以A站发出的数据是1。同理,如果要得到来自B站的数据,那么
T ⋅ ( S − T ) = − 1 T·(S-T)=-1 T⋅(S−T)=−1
因此从B站发送过来的信号向量是一个反码向量,代表0
码分多址复用技术具有频谱利用率高、抗干扰能力强、保密性强、语音质量好等优点,还可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。
随机访问协议
在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机地发送信息,占用信道全部速率。
在总线形网络中,当有两个或多个用户同时发送信息时,就会产生帧的冲突(碰撞,即前面所说的相互干扰),导致所有冲突用户的发送均已失败告终。
为了解决随机接入发生的碰撞,每个用户需要按照一定的规则反复地重复传它的帧,直到该帧无碰撞地通过。
常用的协议有ALOHA协议,CSMA协议,CSMA/CD协议和CSMA/CA协议等,它们的核心思想是:胜利者通过争用获得信道,从而获得信息的发送权。因此,随机访问介质控制协议又称为争用型协议。
如果介质访问控制采用信道划分机制,那么结点之间的通信要么共享空间,要么共享时间,要么两者都共享;而如果采用随机访问控制机制,那么各结点之间的通信就可既不共享时间,也不共享空间。所以随机介质访问控制实质上是一种将广播信道转为点到点信道的行为。
ALOHA协议
(Additive Link On-line HAwaii system)
纯ALOHA协议
当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。
发送站点需要等待一段时间后,再发送数据,直至发送成功。
假设网络负载( T 0 T_0 T0时间内所有站点发送成功的和未成功而重传的帧数)为G,则纯ALOHA网络的吞吐量( T 0 T_0 T0时间内成功发送的平均帧数)为** S = G e − 2 G S=Ge^{-2G} S=Ge−2G。当G=0.5时,S=$0.5e^-1 \approx 0.184 $,这是吞吐量S可能达到的极大值**。可见,纯ALOHA网络的吞吐量很低。为了克服这一缺点,人们在原始的纯ALOHA协议的基础上改进成时隙ALOHA协议。
时隙ALOHA协议
把所有各站在时间上同步起来,并将时间划分为一段段等长的时隙(Slot),规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。
时隙的长度 T 0 T_0 T0使得每个帧正好在一个时隙内发送完毕。每个帧在到达后,一般都要在缓存中等待一段小于 T 0 T_0 T0的时间,然后才能发送出去。在一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生碰撞。碰撞后重传的策略与纯ALOHA的情况是相似的。
时隙ALOHA网络的吞吐量S与网络负载G的关系是** S = G e − G S=Ge^{-G} S=Ge−G。当G=1时, S = e − 1 ≈ 0.368 S=e^{-1} \approx 0.368 S=e−1≈0.368。这是吞吐量S可能达到的极大值。可见,时隙ALOHA的网络比纯ALOHA网络的吞吐量大了1倍**。
时隙ALOHA系统的效率虽然是纯ALOHA系统的两倍,但每个站点都是随心所欲地发送数据的,即使其他站点正在发送也照发不误,因此发送碰撞的概率很大。
CSMA协议
(Carrier Sense Multiple Access)
每个站点在发送前都先侦听一下共用信道,发现信道空闲后再发送,就会大大降低冲突的可能,从而提高信道的利用率。
CSMA协议是在ALOHA协议基础上提出的一种改进协议,它与ALOHA协议的主要区别是多了一个载波侦听装置
根据侦听方式和侦听到信道忙后的处理方式不同,CSMA分为三种
1-坚持CSMA
(1-persistent CSMA)
一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么等待,同时继续侦听直至信道空闲;如果发生冲突,那么随机等待一段时间后,再重新开始侦听信道
1-坚持的含义是:侦听到信道忙后,继续坚持侦听信道;侦听到信道空闲后,发送帧的概率为1,即立刻发送数据。
传播延迟对1-坚持CSMA协议的性能影响较大。结点A开始发送数据时,结点B也正好有数据要发送,但这时结点A发出数据的信号还未到达结点B,结点B侦听到信道空闲,于是立即发送数据,结果必然导致冲突。即使不考虑延迟,1-坚持CSMA协议也可能产生冲突。
非坚持CSMA
(Non-persistent CSMA)
p-坚持CSMA
(P-persistent CSMA)
CSMA/CD协议
(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/碰撞检测)
是CSMA协议的改进方案,适用于总线形网络或半双工网络环境
发送前先侦听,每个站在发送前先要检测一个总线上是否有其他站点正在发送数据,若有则暂时不发送数据,等待信道变为空闲时再发送。“碰撞检测”就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据
CSMA/CD的工作流程可简单概括为先听后发,边听边发,冲突停发,随机重发
电磁波在总线上的传播速率总是有限的,因此,当某个时刻发送站检测到信道空闲时,此时信道不一定是空闲的。如下图,可知CSMA/CD中的站不可能同时进行发送和接收,因此采用CSMA/CD的协议的以太网只能进行半双工通信
由上图可知,站A在发送帧后至多经过时间** 2 τ 2\tau 2τ (端到端传播时延的2倍)就能知道所发送的帧有没有发生碰撞(当 δ → 0 \delta \rightarrow 0 δ→0时)。因此把以太网端到端往返时间 2 τ 2 \tau 2τ称为争用期(又称冲突窗口或碰撞窗口)。每个站在自己发送数据之后的一小段时间内,存在发生碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定**这次发送不会发生碰撞。
为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延,所以CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。
任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。
最小帧长 = 总线传播时延 × 数据传输速率 × 2 最小帧长=总线传播时延 \times 数据传输速率 \times 2 最小帧长=总线传播时延×数据传输速率×2
除检测冲突外, CSMA/CD还能从冲突中恢复, 一旦发生了冲突, 参与冲突的两个站点紧接着再次发送是没有意义的, 如果它们这样做, 那么将会导致无休止的冲突, CSMA/CD采用二进制指数退避算法来解决碰撞问题, 算法精髓如下
使用二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大, (也称动态退避), 因而能降低发生碰撞的概率, 有利于整个系统的稳定
CSMA/CA协议
CSMA/CD协议已成功应用于使用有线连接的局域网, 但在无线局域网环境下, 却不能简单地搬用CSMA/CD协议, 特别是碰撞检测部分, 主要原因有二
为此, 802.11标准定义了广泛应用于无线局域网的CSMA/CA协议, 它对CSMA/CD协议进行修改, 把碰撞检测改为碰撞避免 (Collision Avoidance, CA), 碰撞避免并不是指协议可以完全避免碰撞, 而是指协议的设计要尽量降低碰撞发生的概率. 由于802.11无线局域网不使用碰撞检测, 一旦站点开始发送一个帧, 就会完全地发送该帧, 但碰撞存在时仍然发送整个数据帧(尤其是长数据帧)会严重降低网络的效率, 因此要采用碰撞避免技术降低碰撞的可能性
由于无线信道的通信质量远不如有线信道, 802.11使用链路层**确认/重传 (ARQ)**方案, 即站点每通过无线局域网发送完一帧, 就要在收到对方的确认帧后才能继续发送下一帧
为了尽量避免碰撞, 802.11规定, 所有的站完成发送后, 必须再等待一段很短的时间( 继续监听) 才能发送下一帧. 这段时间称为帧间间隔(InterFrame Space, IFS). 帧间间隔的长短取决于该站要发送的帧的类型, 802.11使用了3种IFS
SIFS (短IFS)
PIFS (点协调IFS)
DIFS (分布式协调IFS)
CSMA/CA的退避算法和CSMA/CD稍有不同, 信道从忙态变为空闲态时, 任何一个站要发送数据帧, 不仅都要等待一个时间间隔, 而且要进入争用窗口, 计算随机退避时间以便再次试图接入信道, 因此降低了碰撞发生的概率. 当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时, 才不使用退避算法, 其他所有情况都必须使用退避算法, 具体为
CSMA/CA算法归纳如下
若发送站在规定时间内没有收到确认帧ACK (由重传计时器控制), 就必须重传该帧, 再次使用CSMA/CA协议争用该信道, 直到收到确认, 或经过若干次重传失败后放弃发送
处理隐蔽站问题, RTS 和 CTS
如下图, 站A和B都在AP的覆盖范围内, 但A和B相距较远, 彼此都听不见对方. 当A和B检测到信道空闲时, 都向AP发送数据, 导致碰撞的发生, 这就是隐蔽站问题
为了避免该问题, 802.11允许发送站对信道进行预约, 源站要发送数据帧之前先广播一个短请求发送RTS控制帧, 它包括源地址, 目的地址, 这次通信(含相应的确认帧) 所持续的时间, 该帧能被其范围内包括AP在内的所有站点听到. 若信道空闲, 则AP广播一个允许发送CTS控制帧, 它包括这次通信所需的持续时间(从RTS帧复制), 该帧也能被其范围内包括A和B在内的所有站点听到. B和其他站听到CTS后, 在CTS帧中指明的时间内将抑制发送
CSMA/CD与CSMA/CA主要有如下区别
CSMA/CD可以检测冲突, 但无法避免
, CSMA/CA发送数据的同时不能检测信道上有无冲突, 本结点处没有冲突并不意味着在接收结点处就没有冲突, 只能尽量避免传输介质不同
CSMA/CD用于总线形以太网, CSMA/CA用于无线局域网802.11a/b/g/n等
检测方式不同
CSMA/CD通过电缆中的电压变化来检测
用户不能随机地发送信息, 而是要通过一个集中控制地监控站, 以循环方式轮询每个结点, 再决定信道的分配. 当某结点使用信道时, 其他结点都不能使用信道. 典型的轮询访问介质访问控制协议是令牌传递协议, 主要用在令牌局域网中
一个令牌在各结点间以某个固定的次序交换. 令牌是由一组特殊的比特组合而成的帧. 当环上的一个站希望传送帧时, 必须等待令牌. 一旦收到令牌, 站点便可启动发送帧.
当计算机都不需要发送数据时, 令牌就在环形网上游荡, 而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧, 因此不会发生冲突 (因为令牌只有一个)
在令牌传递网络中, 传输介质的物理拓扑不必是一个环, 但是为了把对介质访问的许可从一个设备传递到另一个设备, 令牌在设备间的传递通路逻辑上必须是一个环
轮询介质访问控制非常适合负载很高的广播信道(指多个结点在同一时刻发送数据概率很大的信道), 可以想象, 如果这样的广播信道采用随机介质访问控制, 那么发生冲突的概率很大, 而采用轮询介质访问控制则可以很好地满足各结点间的通信需求
轮询介质访问控制既不共享时间, 也不共享空间, 它实际上是在随机介质访问控制的基础上, 限定了有权力发送数据的结点只能有一个
即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道, 所以说数据链路层研究的是点到点之间的通信
主要特点
局域网的特性主要由三个要素决定, 拓扑结构
, 传输介质
, 介质访问控制方式
, 其中最重要的是介质访问控制方式
, 它决定着局域网的技术特性
常见的局域网拓扑结构主要有以下4大类
星形结构
环形结构
总线形结构
星形和总线形结合的复合型结构
局域网可以使用双绞线, 铜缆, 光纤等多种传输介质, 其中双绞线为主流传输介质
局域网的介质访问控制方式主要有CSMA/CD, 令牌总线, 令牌环
三种特殊的局域网拓扑实现如下
以太网
令牌环
(Token Ring, IEEE 802.5)
FDDI
(光纤分布数字接口, IEEE 802.8)
IEEE802标准定义的局域网参考模型只对应于OSI参考模型的数据链路层
和物理层
, 并将数据链路层
拆分为两个子层: 逻辑链路控制(LLC)子层
和媒体接入控制(MAC)子层
, 与接入传输媒体有关的内容都放在MAC子层, 它向上层屏蔽对物理层访问的各种差异, 提供对物理层的统一访问接口, 主要功能包括: 组帧和拆卸帧, 比特传输差错检测, 透明传输. LLC子层与传输媒体无关, 它向网络层提供无确认无连接, 面向连接, 带确认无连接, 高速传送共4种不同的连接服务类型
由于以太网在局域网市场中取得垄断地位, 几乎成为局域网的代名词, 而802委员会制定的LLC子层作用已经不大, 因此现在很多网卡仅装有MAC协议而没有LLC协议
该标准是一种基带总线形的局域网标准, 它描述物理层
和数据链路层
的MAC子层的实现方法
以太网逻辑上采用总线形拓扑结构, 以太网中所有计算机共享同一条总线, 信息以广播方式发送. 为了保证数据通信的方便性和可靠性, 以太网简化了通信流程并使用了CSMA/CD方式对总线进行访问控制
严格来说, 以太网应当是指符合DIX Ethernet V2标准的局域网, 但DIX Ethernet V2标准与IEEE 802.3标准只有很小的差别, 因此通常将802.3局域网简称为以太网
以太网采用两项措施以简化通信
以太网的传输介质与网卡
常用的传输介质有4种, 粗缆, 细缆, 双绞线, 光纤, 各种传输介质的适用情况如下
参数 | 10 BASE 5 | 10 BASE 2 | 10 BASE-T | 10 BASE-FL |
---|---|---|---|---|
传输媒体 | 基带同轴电缆(粗缆) | 基带同轴电缆(细缆) | 非屏蔽双绞线 | 光纤对(850nm) |
编码 | 曼彻斯特编码 | 曼彻斯特编码 | 曼彻斯特编码 | 曼彻斯特编码 |
拓扑结构 | 总线形 | 总线形 | 星形 | 点对点 |
最大段长 | 500m | 185m | 100m | 2000m |
最多结点数目 | 100 | 30 | 2 | 2 |
10 BASE-T 非屏蔽双绞线以太网拓扑结构为星形网, 星形网中心为集线器, 但使用集线器的以太网在逻辑上仍然是一个总线网, 属于一个冲突域
计算机与外界局域网的连接时通过网络接口板(网络适配器 Adapter)或(网络接口卡 Network Interface Card, NIC)实现的. 网卡上装有处理器, 存储器, 是工作在数据链路层
的网络组件. 网卡和局域网的通信是通过电缆或双绞线以串行方式进行的, 而网卡和计算机的通信则是通过计算机主板上的I/O总线以并行方式进行的. 因此, 网卡的重要功能就是进行数据的串并转换. 网卡不仅实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码、数据缓存功能。
全世界的每块网卡在出厂时都有一个唯一的代码,称为介质访问控制地址(MAC),这个地址用于控制主机在网络上的数据通信。数据链路层设备(网桥,交换机等)都使用各个网卡的MAC地址。另外,网卡控制着主机对介质的访问,因此网卡也工作在物理层,因为它只关注比特,而不关注任何地址信息和高层协议信息。
以太网的MAC帧
每块网卡中的MAC地址也称为物理地址;MAC地址长6字节,一般用连字符(或冒号)分隔的12个十六进制数表示,如02-60-8c-e4-b1-21。高24位为厂商代码,低24位为厂商自行分配的网卡序列号,严格来讲,局域网的地址应是每个站的名字或标识符
由于总线上使用的是广播通信,因此网卡从网络上每收到一个MAC帧,首先要用硬件检查MAC帧中的MAC地址。如果是发往本站的帧,那么就收下,否则丢弃
以太网MAC帧格式有两种标准:DIX Ethernet V2标准(即以太网V2标准)和IEEE 802.3标准
以太网V2标准
前导码
MAC帧并不需要帧结束符,因为以太网在传送帧时,各帧之间必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面连续到达的比特流就属于同一个MAC帧,所以上图只有帧开始定界符,但不要误以为以太网MAC帧不需要尾部,在
数据链路层
上,帧即要加首部,也要加尾部
地址
类型
数据
46和1500是怎么来的?首先,由CSMA/CD算法可知以太网帧的最短帧长为64B,而MAC帧的首部和尾部的长度为18字节,所以数据字段最短为64 - 18 = 46字节。其次,最大的1500字节是规定的,没有为什么。
填充
校验码(FCS)
高速以太网
100BASE-T
以太网
吉比特以太网
(千兆以太网)
10吉比特以太网
有固定基础设施无线局域网
IEEE制定了无线局域网的802.11系列协议标准,包括802.11 a/b/g/n 等。802.11使用星形拓扑,其中心称为接入点(Access Point,AP),在MAC层使用CSMA/CA协议,使用802.11系列协议的局域网又称WIFI
802.11标准规定无线局域网的最小构件是基本服务集BSS(Basic Service Set,BSS),一个基本服务集包括一个基站、若干移动站。所有的站在本BSS内都可以直接通信,但在和本BSS外的站通信时,都必须通过本BSS的基站。
AP就是基本服务集中的基站(base station)。安装AP时,必须为该AP分配一个不超过32字节的服务集标识符(Service Set IDentifier,SSID)和一个信道。一个基本服务集覆盖的地理范围称为一个基本服务区(Basic Service Area,BSA),无线局域网的基本服务区的直径一般不超过100m
一个基本服务集可以是孤立的,也可通过AP连接到一个分配系统(Distribution System,DS),然后连接到另一个基本服务集,构成一个扩展的服务集(Extended Service Set,ESS),ESS还可以通过一种Portal(门桥)的设备为无线用户提供到有线连接的以太网的接入。门桥的作用相当于一个网桥。
无固定基础设施移动自组织网络
(自组网络,ad hoc network)
没有基本服务集中的AP,而是由一些平等状态的移动站相互通信组成的临时网络。各结点之间地位平等,中间结点都为转发结点,因此都具有路由器功能
自组网络通常这样组成
令牌环网的每一站通过电缆与**环接口干线耦合器(TCU)**相连。TCU的主要作用是,传递所有经过的帧,为接入站发送和接收数据提供接口。与此对应,TCU的状态也有两个:收听状态、发送状态。数据总是在某个特定的方向上从一个TCU到下一个TCU逐比特地依次传送,每个TCU重新产生并重新传输每一比特。
令牌环网地媒体接入控制机制采用的是分布式控制模式的循环方法。在令牌环网中有一个令牌(Token)沿着环形总线在入网结点计算机间依次传递,令牌实际上是一个特殊格式的MAC控制帧,它本身并不包含信息,仅控制信道的使用,确保在同一时刻只有一个结点能够独占信道
站点只有取得令牌后才能发送数据帧,因此令牌环网不会发生碰撞。由于令牌在环网上是按顺序依次传递的,因此对所有入网计算机而言,访问权是公平的
令牌环网中令牌、数据的传递过程如下
令牌环网在物理上采用星形拓扑结构,但逻辑上仍是环形拓扑结构,其标准由IEEE 802.5定义
指覆盖范围很广(远超一个城市的范围)的长距离网络。是因特网的核心部分,其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路,它可以长达几千千米的光缆线路,也可以是几万千米的点对点卫星链路
不等于互联网,互联网可以连接不同类型的网络(局域网或广域网),通常使用路由器来连接
由一些结点交换机及连接这些交换机的链路组成。结点交换机的功能是将分组存储并转发。结点之间都是点到点连接,但为了提高网络的可靠性,通常一个结点交换机往往与多个结点交换机相连。
从层次上考虑,广域网和局域网的区别很大,因为局域网使用的协议主要在数据链路层
(还有少量在物理层
),而广域网使用的协议主要在网络层
数据链路层
协议的控制信息,那么就称使用了数据链路层
协议,如果这层控制信息是网络层
的控制信息,那么就称使用了网络层
协议广域网和局域网的区别联系
广域网 | 局域网 | |
---|---|---|
覆盖范围 | 很广,通常跨区域 | 较小,通常在一个区域内 |
连接方式 | 结点之间都是点到点连接,但为了提高网络的可靠性,一个节点交换机往往与多个结点交换机相连 | 普通采用多点接入技术 |
OSI参考模型层次 | 三层:物理层,数据链路层,网络层 | 两层:物理层,数据链路层 |
联系与相似点 | 1,广域网和局域网都是互联网的重要组成构件,从互联网角度上看,二者平等(不是包含关系) 2,连接到一个广域网或一个局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址 |
同左 |
着重点 | 强调资源共享 | 强调数据传输 |
广域网中一个重要问题是路由选择和分组转发。路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由,以便构造路由表,然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的
PPP、HDLC协议是目前最常用的两种广域网数据链路层控制协议
使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上.设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。
PPP协议是在SLIP协议的基础上发展而来的,可以在异步线路、同步线路上使用,不仅用于Modem链路,也用于租用的路由器到路由器的线路
PPP协议有三个组成部分
链路控制协议(LCP)
网络控制协议(NCP)
一个将IP数据报封装到串行链路的方法
如下图,PPP帧的前3个字段和最后2个字段与HDLC帧是一样的,标志字段(F)仍为7E(01111110),前后各占1字节,若它出现在信息字段中,就必须做字节填充,使用的控制转义字节是7D(01111101)。但在PPP中,地址字段(A)占1字节,规定为0xFF,控制字段(C)占1字节,规定为0x03,两者的内容始终是固定不变的。PPP是面向字节的,因而所有PPP帧的长度都是整数个字节
第4个字段是协议段,占2字节,在HDLC中没有该字段,它是说明信息段中运载的是什么种类的分组。以比特0开始的是诸如IP、IPX、AppleTalk这样的网络层协议;以比特1开始的被用来协商其他协议,包括LCP及每个支持的网络层协议的一个不同的NCP
第5段信息段的长度是可变的,大于等于0且小于等于1500B。为了实现透明传输,当信息段中出现和标识字段一样的比特组合时,必须采用一些措施来改进
第6个字段是帧校验序列(FCS),占2字节,即循环冗余码校验中的冗余码。校验区包括地址字段、控制字段、协议字段、信息字段
下图为PPP链路建立、使用、撤销所经历的状态图
当线路处于静止状态时,不存在物理层
连接
当线路检测到载波信号时,建立物理连接,线路变为建立状态
LCP开始选项商定,商定成功后就进入身份验证状态
双发身份验证通过后,进入网络状态。这时,采用NCP配置网络层,配置成功后,进入打开状态,然后就可进行数据传输。当数据传输完成后,线路转为终止状态。载波停止后则回到静止状态
- PPP提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行CRC检验)。它是不可靠的传输协议,因此也不使用序号、确认机制
- 它仅支持点对点的链路通信,不支持多点线路
- PPP只支持全双工链路
- PPP的两端可以运行不同的网络层协议,但仍然可以使用同一个PPP进行通信
- PPP是面向字节的,当信息字段出现和标识字段一致的比特组合时,PPP有两种不同的处理方法
- 若PPP用在异步线路(默认),则采用字节填充法
- 若PPP用在SONET/SDH等同步线路,则协议规定采用硬件来完成比特填充(和HDLC的做法一样)
是ISO制定的面向比特(PPP协议面向字节)的数据链路层
协议。该协议不依赖于任何一种字符编码集
数据报文可透明传输,用于实现透明传输的0比特插入法易于硬件实现
全双工通信,有较高的数据链路传输效率
所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高
传输控制功能与处理功能分离,具有较大的灵活性
适用于链路的两种基本配置
非平衡配置
平衡配置
站
主站
从站
复合站
数据操作方式
正常响应方式
异步平衡方式
异步响应方式
HDLC帧
帧格式如下所示,由**标志、地址、控制、信息、帧校验序列(FCS)**等字段构成
信息帧(I)
监督帧(S)
无编号帧(U)
PPP帧和HDLC帧的格式很相似,区别如下
两个或多个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网,而原来的每个以太网就称为一个网段。网桥工作在链路层的MAC子层,可以使以太网各网段成为隔离开的碰撞域。如果把网桥换成工作在物理层的转发器,那么就没有这种过滤通信量的功能。由于各网段相对独立,因此一个网段的故障不会影响到另一个网段的运行
网桥处理数据的对象是帧,所以它是工作在数据链路层的设备,中继器、放大器处理数据的对象是信号,所以它是工作在物理层的设备
如下图,设每个网段的数据率都是10Mb/s,那么三个网段合起来的最大吞吐量就变成30Mb/s。如果把两个网桥换成集线器或转发器,那么整个网络仍然是一个碰撞域(即冲突域),当A和B通信时,所有其他站点都不能通信,整个碰撞域的最大吞吐量仍然是10Mb/s
网桥的优点
网桥的缺点
网桥必须具有路径选择的功能,接收到帧后,要决定正确的路径,将该帧转送到相应的目的局域网站点。根据路径选择算法的不同,可将网桥分为透明网桥和源路由网桥
透明网桥(选择的不是最佳路由)
源路由网桥
(选择的是最佳路由)
两种网桥的比较
使用源路由网桥可以利用最佳路由。若在两个以太网之间使用并联的源路由网桥,则还可使通信量较平均地分配给每个网桥
采用透明网桥时,只能使用生成树,而使用生成树一般并不能保证所用的路由是最佳的,也不能在不同的链路中进行负载均衡
透明网桥和源路由网桥中提到的最佳路由并不是经过路由器最少的路由,而可以是发送帧往返时间最短的路由,这样才能真正地进行负载平衡,因为往返时间长说明中间某个路由器可能超载了,所以不走这条路,换个往返时间短的路走
局域网交换机
原理
特点
两种交换模式
直通式
存储转发式
冗余编码
所用符号数或信号码元数比表示信息所必需的数目多的代码,应用了冗余加密技术,即利用了纠错码的编码原理
信道的效率
也称信道利用率,从时间角度定义:信道效率是对发送方而言的,指发送方在一个发送周期的时间内,有效地发送数据所需要的时间占整个发送周期的比率
发送方从开始发送数据到收到第一个确认帧为止,称为一个发送周期,设为T,发送方在这个周期内共发送L比特的数据,发送方的数据传输速率为C,则发送方用于发送有效数据的时间为L/C,在这种情况下,信道的利用率为**(L/C)/T**。
简单理解,信道利用率,就是实际发送的数据速度,跟信道速度之比。但是实际发送的数据速度,是**发送的数据量(不包括确认帧)对整个发送周期(包括发送和接收确认帧)**的比值。
信道吞吐率 = 信道利用率 * 发送方的发送效率
由其注意题目中说的忽略确认帧的传输时延,传输时延和传播时延有所区别,传输时延也叫发送时延,跟传播时延不同。
连续ARQ(后退N帧 ARQ,选择性重传ARQ)协议中,接收方一般采用累计确认的方式,即接收方对按序到达的最后一个分组发送确认。
规格化内积
指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称为中间系统或中继系统。根据所在的层次,中继系统分为以下4种
物理层中继系统
数据链路层中继系统
网络层中继系统
网络层以上的中继系统
使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择
由于历史原因,许多有关TCP/IP的文献也把网络层的路由器称为网关
TCP/IP体系在网络互联上采用的做法是在**网络层(即IP层)**采用标准化协议,但相互连接的网络可以是异构的。下图a表示用许多计算机网络通过一些路由器进行互联。由于参加互联的计算机网络都使用相同的网际协议(Internet Protocol,IP),因此可以把互联后的计算机网络视为图b的一个虚拟IP网络
虚拟互联网络,即逻辑互联网络,即互联起来的各种物理网络的异构性本来是客观存在的,但是通过IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP的虚拟互联网络简称IP网络
使用虚拟互联网络的好处是,当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互联网的具体的网络异构细节
路由选择
分组转发
在通信子网中,因出现过量的分组而引起网络性能下降的现象,称为拥塞
如下图,当分组到达路由器的速率接近于R时,平均时延急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大
判断网络是否进入拥塞状态的方法是
为避免拥塞现象的出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制。拥塞控制主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组丢失,以及严重拥塞而产生网络死锁的现象
流量控制VS拥塞控制
拥塞控制的方法
开环控制
闭环控制
静态路由算法(非自适应路由算法)
动态路由算法(自适应路由算法)
距离-向量路由算法
链路状态路由算法
所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点,这种路由表包含
每条路径的目的地
另一结点
路径的代价
距离
这里的距离是一个抽象概念,如RIP将距离定义为跳数,跳数指从源端口到达目的端口所经过的路由器个数,每经过一个路由器,跳数加1
这种算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表
距离-向量路由算法的实质是,迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。
最常见的距离-向量路由算法是RIP算法,它采用跳数作为距离的度量
要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行以下两项任务
在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他结点,而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息
每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态视野图,一旦链路状态发生变化,结点就对更新的网络图利用Dijkstra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径
链路状态路由算法主要有三个特征
向本自治系统中的所有路由器发送信息,这里使用的方法是泛洪法,即路由器通过所有端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器
发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓链路状态,是指说明本路由器与哪些路由器相邻及该链路的度量。对于OSPF算法,链路状态的度量主要用来表示费用、距离、时延、带宽等
只有当链路状态发生变化时,路由器才向所有路由器发送此信息
由于一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境
链路状态路由算法的主要优点是
距离-向量路由算法VS链路状态路由算法
IPv4即现在普遍使用的IP(版本4)。IP定义数据传送的基本单元——IP分组及其确切的数据格式。IP也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。
IPv4分组的格式
一个IP分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制
IP数据包的格式如下
IP首部的部分重要字段含义如下
版本
首部长度
总长度
数据链路层
的MTU值标识
标志
片偏移
生存时间
(TTL)
协议
首部校验和
源地址字段
目的地址字段
在IP数据报首部中有三个关于长度的标记
- 首部长度,基本单位为4B
- 总长度,基本单位为1B
- 片偏移,基本单位为8B
IP数据报分片
一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的MTU严格地限制着IP数据报的长度,而且在IP数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议,有不同的MTU
当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为片
片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组
创建一个IP数据报时,源主机为该数据报加上一个标识号
IP首部中的标志位有3比特,但只有后2比特有意义,分别是MF位(More Fragment)和DF位(Don’t Fragment)
目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置
IP分片涉及一定的计算
网络层转发分组的流程
网络层的路由器执行的分组转发算法如下
得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发送变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分
IPv4地址
连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。传统的IP地址是分类的地址,分为A、B、C、D、E五类
无论哪类IP地址,都由网络号和主机号两部分组成。即IP地址::={<网络号>, <主机号>}。其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。
分类的IP地址如下
在各类IP地址中,有些IP地址具有特殊用途,不用做主机的IP地址
常用的三种类别IP地址的使用范围如下
网络类别 | 最大可用网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中的最大主机数 |
---|---|---|---|---|
A | 2^7 - 2 | 1 | 126 | 2^24 - 2 |
B | 2^14 - 2 | 128.1 | 191.255 | 2^16 - 2 |
C | 2^21 - 1 | 192.0.1 | 223.255.255 | 2^8 - 2 |
IP地址有以下重要特点
网络地址转换(NAT)
指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
此外,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被LAN重复使用。这有效地解决了IP地址不足的问题。
私有IP地址网段如下
在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址
使用NAT时,需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着**{本地IP地址:端口}到{全球IP地址:端口}的映射。通过{IP地址:端口}这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址**
普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时,需要查看和转换传输层的端口号
子网划分
两级IP地址的缺点
1985年起,IP地址中增加一个子网号字段,使两级IP地址变成了三级IP地址。这种做法称为子网划分。子网划分已经成为因特网的正式标准协议
子网划分的基本思路如下
- 划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分
- RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能全为1或全为0。但随着CIDR的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全1或全0的子网号
- 不论是分类的IPv4地址还是CIDR,其子网中的主机号为全0或全1的地址都不能被指派。子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址
子网掩码
无分类域间路由选择(CIDR)
IP地址与硬件地址
IP地址是网络层使用的地址,它是分层次等级的。
硬件地址是数据链路层使用的地址,它是平面式的
在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址
由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络的网络层只使用IP地址来完成寻址。
寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址,这样可以提高路由选择的效率。
路由器由于互联多个网络,因此它不仅有多个IP地址,也有多个硬件地址
地址解析协议(ARP)
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议(Address Resolution Protocol, ARP)。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。
ARP工作在网络层,其工作原理如下
主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址
ARP用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP相应分组是普通的单播,即从一个源地址发送到一个目的地址
ARP的4种典型情况如下
从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动将这个IP地址解析为数据链路层所需要的硬件地址
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)
常用于给主机动态地分配IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与
是应用层协议,基于UDP
工作原理如下
使用客户/服务器方式
需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户
本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文
DHCP服务器先在其数据库中查找该计算机的配置信息
DHCP服务器的回答报文称为提供报文
DHCP服务器聚合DHCP客户端的交换过程如下
DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出DHCP请求时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的
DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求
DHCP是应用层协议,因为它是通过客户/服务器方式工作的,DHCP客户端向DHCP服务器请求服务。
应用层协议有两种工作方式
- 客户/服务器方式
- P2P方式
其他层次的协议是没有这两种工作方式的
DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接
网际控制报文协议(Internet Control Message Protocol,ICMP)
为了提高IP数据报交付成功的机会,在网络层使用了ICMP来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
ICMP是IP层协议
ICMP报文的种类有两种
ICMP差错报告报文
用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况,共有5种类型
终点不可达
源点抑制
时间超过
参数问题
改变路由(重定向)
不应发送ICMP差错报告报文的几种情况如下
ICMP询问报文
回送请求和回答报文
时间戳请求和回答报文
掩码地址请求和回答报文
路由器询问和通告报文
ICMP的两个常见应用是分组网间探测PING(用来测试两台主机之间的连通性)和Traceroute(UNIX中的名字,在Windows中是Tracert,可以用来跟踪分组经过的路由)
单播
多播
任播
内部网关协议
(Interior Gateway Protocol,IGP)
外部网关协议
(External Gateway Protocol,EGP)
OSPF协议的基本特点(对比RIP)
OSPF的其他特点
OSPF的基本工作原理
由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(称为链路状态数据库的同步)。
虽然使用了Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储下一跳(只有到了下一跳路由器,才能知道再下一跳应当怎样走)
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。这些情况也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
OSPF的五种分组类型
问候分组
数据库描述分组
链路状态请求分组
链路状态更新分组
链路状态确认分组
通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达
在网络运行中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。其他路由器在更新后,发送链路状态确认分组对更新分组进行确认
为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间(如30分钟)就刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此,当互联网规模很大时,OSPF要比RIP好得多,而且OSPF协议没有坏消息传播得慢的问题
教材上说OSPF协议不使用UDP数据报传送,而是直接使用IP数据报传送
- 用UDP传送是指将该信息作为UDP报文的数据部分,RIP报文是作为UDP数据报的数据部分
- 直接使用IP数据报传送是指将该信息直接作为IP数据报的数据部分
不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够到达的地址及到达每个路由器的路径的跳数
内部网关协议主要设法使数据报在一个AS中尽可能有效地从源站传送到目的站。在一个AS内部不需要考虑其他方面的策略。然而BGP使用的环境却不同,主要原因如下
BGP只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。BGP采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,它是基于TCP的。
BGP的工作原理如下
每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀)表示所要经过的一系列AS
BGP的特点如下
BGP共使用4种报文
打开报文 Open
更新报文 Update
保活报文 Keepalive
通知报文 Notification
RIP、OSPF与BGP的比较如下
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次是整个路由表,非首次则是有变化的部分 |
为了能够支持像视频点播、视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。使用多个单播传送来仿真组播总是可能的,但这会引起主机上大量的处理开销、网络上太多的交通量。人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收
组播一定仅应用于UDP,它对将报文同时送往多个接受者的应用来说非常重要。而TCP是一个面向连接的协议,它意味着分别运行于两台主机(由IP地址来确定)内的两个进程(由端口号来确定)之间存在一条连接,因此会一对一地发送
使用组播的缘由是,有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。网络(如因特网)把这个分组的副本投递给该组中的每台主机。主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组
因特网中的IP组播也使用组播组的概念,每个组都由一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。在IPv4中,这些地址在D类地址空间中分配,而IPv6也有一部分地址空间保留给组播组
主机使用一个称为IGMP(因特网组管理协议)的协议加入组播组。它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上实现因特网组播
需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由称为组播路由器
单播与组播的对比如下图
移动结点
、归属代理
(也称本地代理)和外埠代理
(也称外部代理)。归属代理
和外埠代理
又称移动代理
移动结点
本地代理
外部代理
是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。
当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上
从结构上看,路由器由路由选择和分组转发两部分构成。而从模型的角度上看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层、网络层。如下图
如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在该层次上使用不同协议的网段(网络)。
- 网桥实现了物理层、数据链路层,那么网桥可以互联两个物理层和数据链路层不同的网段
- 中继器实现了物理层后,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备
路由选择部分也称控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表
分组转发部分由三部分组成,交换结构
,一组输入端口
,一组输出端口
路由器主要完成两个功能,分组转发
和路由计算
路由器和网桥的重要区别是
路由表是根据路由选择算法得出的,主要用途是路由选择,标准路由表有4个项目:目的网络IP地址
、 子网掩码
、下一跳IP地址
、接口
。如下图所示
转发表是从路由表得出的,其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。
转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同下一跳的项目,并将默认路由设置得比其他项目的优先级低。如下图
注意转发和路由选择的区别
在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表,而不是直接查找路由表
从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层
位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信。显然,即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务。
从下图可看出,网络的边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层的功能(即在通信子网中没有传输层,传输层只存在于通信子网以外的主机中)
传输层的功能如下
传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的是主机之间的逻辑通信
复用、分用
复用
分用
网络层也有复用分用的功能,但网络层的复用是指发送方不同协议的数据都可以封装成IP数据包发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议
传输层还要对接收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP数据报的首部,不检验数据部分是否出错
提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而不可能在网络层同时存在这两种方式)
传输层向高层用户屏蔽了底层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的好像是两个传输层实体之间有一条端到端的逻辑通信信道,这条逻辑通信信道对上层的表现却因传输层协议不同而有很大差别。
当传输层采用面向连接的TCP时,尽管下面的网络是不可靠的(只提供最大努力的服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当传输层采用无连接的UDP时,这种逻辑通信信道仍然时一条不可靠信道
端口的作用
端口号
应用进程通过端口号进行标识,端口号长度为16bit,能够表示65536( 2 16 2^{16} 216)个不同的端口号。端口号只具有本地意义,即端口号只标识本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。根据端口号范围可将端口分为两类
服务端使用的端口号。它又分为两类,最重要的一类是熟知端口号,数值为0~1023,IANA(互联网地址指派机构)把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。另一类称为登记端口号,数值为1024~49151。它是供没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA登记,以防止重复
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
客户端使用的端口号,数值为49152~65535。由于这类端口号仅在客户进程运行时才动态地选择,因此又称为短暂端口号(临时端口)。通信结束后,刚用过的客户端口号就不复存在,从而这个端口号就可供其他客户进程以后使用
套接字
IP数据报
在网络层要经过路由的存储转发UDP数据报
在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据报的信息对路由是不可见的TCP
报文段在传输层抽象的逻辑信道中传输,对路由器不可见虚电路
所经过的交换结点都必须保存虚电路状态信息。在网络层若采用虚电路方式,则无法提供无连接服务;而传输层采用TCP不影响网络层提供无连接服务UDP概述
UDP的首部格式
UDP数据报包含两部分:UDP首部和用户数据。UDP首部有8B,由4个字段组成,每个字段的长度都是2B,如下图
源端口
目的端口
长度
校验和
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用程序,如下图
计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部。只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报来计算的。伪首部不向下传送、不向上递交,而只是为了计算校验和。如下图
UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,不同的是,IP数据报的校验和只检验IP数据报的首部,但UDP的校验和则检查首部、数据部分
- 校验时,若UDP数据报部分的长度不是偶数个字节,则需填入一个全零字节。但是此字节和伪首部一样,是不发送的
- 如果UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以交付给上层,但是需要附上错误报告,即告诉上层这是错误的数据
- 通过伪首部,不仅可以检查源端口号、目的端口号、UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址
这种简单的差错检验方法的检错能力并不强,但它的好处是简单、处理速度快
发送缓存
暂存的数据
接收缓存
暂存的数据
TCP传送的数据单位称为报文段。TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接、应答。一个TCP报文段分为首部、数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据报中,其首部的前20B是固定的。TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍,如下图
源端口和目的端口
序号
确认号
数据偏移
(首部长度)
保留
紧急位URG
确认位ACK
推送位PSH(PUSH)
复位位RST(Reset)
同步位SYN
终止位FIN(Finish)
窗口
校验和
紧急指针
选项
填充
TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立、数据传送、连接释放。TCP连接的管理就是使运输连接的建立和释放都能正常进行
TCP连接建立的过程中,要解决以下三个问题
TCP把连接作为最基本的抽象,每条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用程序,也不是传输层的协议端口。TCP连接的端口即为**套接字(socket)**或插口,每条TCP连接唯一地被通信的两个端点(即两个套接字)确定
TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程称为客户(client),而被动等待连接建立的应用进程称为服务器(server)
TCP连接的建立
连接建立前,服务器进程处于**LISTEN(收听)**状态,等待客户的连接请求
客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN置1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入**SYN-SEND(同步已发送)**状态
服务器的TCP收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该TCP连接分配缓存和变量。在确认报文段中,把SYN、ACK都置1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。注意,确认报文段不能携带数据,但也要消耗掉一个序号。这时,TCP服务器进程进入**SYN-RCVD(同步收到)**状态
当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量。确认报文段的ACK置1,确认号ack=y+1,序号seq=x+1。该报文段可以携带数据,若不携带数据则不消耗序号。这时,TCP客户进程进入**ESTABLISHED(已建立连接)**状态
服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击
TCP连接的释放
客户机打算关闭连接时,向其TCP发送连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的终止位FIN置1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1,FIN报文段即使不携带数据,也消耗掉一个序号。这时,TCP客户进程进入**FIN-WAIT-1(终止等待1)**状态。
服务器收到连接释放报文段后即发出确认,确认号ack=u+1,序号seq=v,等于它前面已传送过的数据的最后一个字节的序号加1。然后服务器进入CLOSE-WAIT(关闭等待)状态。此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
若服务器已没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段。设该报文段的序号为w(在半关闭状态服务器可能又发送了一些数据),还须重复上次已发送的确认号ack=u+1。这时服务器进入LAST-ACK(最后确认)状态
客户机收到连接释放报文段后,必须发出确认。把确认报文段中的确认位ACK置1,确认号ack=w+1,序号seq=u+1。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL(最长报文段寿命)后,客户机才进入**CLOSED(连接关闭)**状态
TCP连接的建立、释放总结如下
建立
分3步
释放
分4步
TCP的任务是在IP层不可靠的,尽力而为服务的基础上建立一种可靠数据传输服务。TCP提供的可靠数据传输服务保证接收方进程从缓冲区读出的字节流与发送方发出的字节流完全一样。TCP使用了校验、序号、确认、重传等机制来达到这一目的。
序号
确认
重传
超时
冗余ACK
(冗余确认)
防止过多的数据注入网络,保证网络中的路由器或链路不致过载。出现拥塞时,端点并不了解拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。
拥塞控制和流量控制的区别
因特网建议标准定义了进行拥塞控制的4种算法:慢开始
、 拥塞避免
、 快重传
、 快恢复
发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因此,TCP协议要求发送放维护以下两个窗口
接收窗口rwnd
拥塞窗口cwnd
发送窗口的上限值应取接收窗口rwnd和拥塞窗口cwnd中较小的一个,即
接收窗口的大小可根据TCP报文首部的窗口字段通知发送方
慢开始
和拥塞避免
慢开始算法
拥塞避免算法
网络拥塞的处理
无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完
慢开始和拥塞避免算法的实现过程如下图
初始时,拥塞窗口置为1,即cwnd=1,慢开始门限置为16,即ssthresh=16
慢开始阶段,cwnd的初值为1,以后发送方每收到一个确认ACK,cwnd值加1,也即经过每个传输轮次(RTT),cwnd呈指数规律增大。当拥塞窗口cwnd增长到慢开始门限ssthresh时(即当cwnd=16),就改用拥塞避免算法,cwnd按线性规律增大
假定cwnd=24时,网络出现超时,更新ssthresh值为12(即变为超时时cwnd值的一半),cwnd重置为1,并执行慢开始算法,当cwnd=12时,改为执行拥塞避免算法
在慢开始阶段,若2cwnd > ssthresh,则下一个RTT后的cwnd等于ssthresh,而不等于2cwnd,即cwnd不能跃过ssthresh值。
- 如上图,第16个轮次时,cwnd=8,ssthresh=12
- 第17个轮次时,cwdn=12,而不等于16
在慢开始和拥塞避免算法中使用了乘法减小和加法增大方法
拥塞避免并不能完全避免拥塞。利用以上措施要完全避免网络拥塞是不可能的。拥塞避免是指在拥塞避免阶段把拥塞窗口控制为按线性规律增大,使网络比较不容易出现拥塞
快重传
和快恢复
(对慢开始和拥塞避免算法的改进)
快重传
快恢复
在流量控制中,发送方发送数据的量由接收方决定,而在拥塞控制中,则由发送方自己通过检测网络状况来决定。实际上,慢开始、拥塞避免、快重传、快恢复几种算法是同时应用在拥塞控制机制中。四种算法使用的总结
接收方的缓存空间总是有限的。因此,发送方发送窗口的实际大小由流量控制和拥塞控制共同决定。当题目中同时出现接收窗口rwnd和拥塞窗口cwnd时,发送方实际的发送窗口大小是由rwnd和cwnd中较小的那一个确定的
国家顶级域名
(nTLD)
通用顶级域名
(gTLD)
基础结构域名
根域名服务器
顶级域名服务器
授权域名服务器
(权限域名服务器)
本地域名服务器
把域名映射成为IP地址,或把IP地址映射成为域名的过程,前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器
域名解析有两种方式:递归查询和递归与迭代相结合的查询
为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。
控制连接
数据连接
PORT
模式的原理
PASV
模式的原理
用户代理(UA)
邮件服务器
邮件发送协议和读取协议
连接建立
邮件传送
连接释放
统一资源定位符(URL)
超文本传输协议(HTTP)
超文本标记语言(HTML)