重点考察内容:(以第五版内容和相关RFC为准)
1. 面向连接与非连接,电路交换与包交换的原理,理解传播延迟和传输延迟
面向连接的服务是通信双方在通信前要先建立一个完整的可以彼此沟通的通道,在通信过程中整个连接的情况一直可以被实时地监控和管理;而非连接的服务则在通信前不需预先建立连接,需要通信时发送节点可以直接往“网络”上送出信息,让信息自主地在网络上传输,一般在传输的过程中不再加以监控。
电路交换就是通信双方在通信之前先通过通信双方之间的交换设备和链路逐段连接建立一条被双方独占的物理通路,数据可以在这条物理通路上可靠、迅速、顺序传输。包交换是将用户传送的数据划分成一定长度的分组,并在每个分组的前面加上一个分组头,用以指明该分组发往何地址,然后由交换机根据每个分组的地址标志,将他们转发至目的地。电路交换和包交换的区别就像电话系统和邮政系统。
传输延迟是指信息传输过程中,由于传输经过的距离远或者一些故障,或者网络繁忙,导致传输并没有准时达到目的的情况。传播延迟是指信息通过一段传输媒介所需的时间,由两路由器之间的距离除以信息传播的速度求得。
2. 无线局域网MAC层原理及实际协议
无线局域网MAC层使用CSMA/CA(载波监听/冲突检测)协议
3. 以太网MAC层原理及实际协议
4. 帧分界,纠错码、检错码,单工有噪信道协议的可靠传输
控制字符SOH放在一帧的最前面,表示帧的首部开始;另一控制字符EOT放在帧尾,表示帧的结束。由于帧的开始和结束标记是使用专门指明的控制字符,因此,所传输的数据中的额任何8比特组合一定不允许和用作帧定界的控制字符比特编码一样,否则就会出现帧定界错误。
为保证透明传输,必须设法使数据中可能出现的控制字符在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符ESC,而在接收端的数据链路层在将数据送往网络层之前删除这插入的转移字符。这种方法称为字节填充或字符填充。如果转义字符也出现数据当中,那么解决方法仍然是在转义字符前再插入一个转义字符。因此,当接收端收到连续的两个转义字符时就删除其中前面的一个。
纠错码是一种能自动进行检错和纠正部分或全部差错的代码。纠错码在信息传输过程中对原码字增加多余的码元使每个码字的码之间有一定的关系,以致信息在传输中发生错误后能在收端自行按一定规则确定错误所在位置并予以纠正。汉明码是当前常用的纠错码,是一种能检测所有一位和双位差错并纠正所有一位差错的二进制代码。
汉明码编码的关键是使用多余的奇偶校验位来识别一位错误。码字按如下方法构建:
1、把所有2的幂次方的数据位标记为奇偶校验位(编号为1, 2, 4, 8, 16, 32, 64等的位置)
2、其他数据位用于待编码数据(编号为3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17等的位置)
3、每个奇偶校验位的值代表了代码字中部分数据位的奇偶性,其所在位置决定了要校验和跳过的比特位顺序:
位置1:校验1位,跳过1位,校验1位,跳过1位(1,3,5,7,9,11,13,15,…)
位置2:校验2位,跳过2位,校验2位,跳过2位 (2,3,6,7,10,11,14,15,…)
位置4:校验4位,跳过4位,校验4位,跳过4位(4,5,6,7,12,13,14,15,…)
位置8:校验8位,跳过8位,校验8位,跳过8位(8-15,24-31…)…
如果全部校验的位置中有奇数个1,把该奇偶校验位置为1;如果全部校验的位置中有偶数个1,把该奇偶校验位置为0.
举例说明:一个字节的数据:10011010,构造数据字,对应的校验位留空_ _ 1 _ 0 0 1 _ 1 0 1 0;计算每个校验位的奇偶性 ( ?代表要设置的比特位):位置1检查1,3,5,7,9,11:? _ 1 _ 0 0 1 _ 1 0 1 0. 偶数个1,因此位置1设为0,即: 0 _ 1 _ 0 0 1 _ 1 0 1 0;位置2检查2,3,6,7,10,11: 0 ? 1 _ 0 0 1 _ 1 0 1 0. 奇数个1,因此位置2设为1,即: 0 1 1 _ 0 0 1 _ 1 0 1 0;位置4检查4,5,6,7,12: 0 1 1 ? 0 0 1 _ 1 0 1 0. 奇数个1,因此位置4设为1,即: 0 1 1 1 0 0 1 _ 1 0 1 0;位置8检查8,9,10,11,12:0 1 1 1 0 0 1 ? 1 0 1 0. 偶数个1,因此位置8设为0,即: 0 1 1 1 0 0 1 0 1 0 1 0;因此码字为: 011100101010.
检错码是为自动识别所出现的差错而安排的冗余码。奇偶校验码是当前常用的检错码,进行奇偶校验的方法是先计算数据中1的个数,通过增加一个0或1(称为校验位),使1的个数变为奇数(奇校验)或偶数(偶校验)。常用的检错码还有循环冗余检验码,通过传输的数据加上数据除以检验码所得的余数。
单工有噪信道通过检错码和自动重传请求ARQ协议保证可靠传输。传统自动重传请求分成为三种,即停等式ARQ、回退n帧ARQ、以及选择性重传ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ协议。
在停等式ARQ中,数据报文发送完成之后,发送方等待接收方的状态报告,如果状态报告报文发送成功,发送后续的数据报文,否则重传该报文。发送窗口和接收窗口大小均为1,发送方每发送一帧之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。该方法所需要的缓冲存储空间最小,缺点是信道效率很低。
在回退n帧的ARQ中,允许发送方可以连续发送信息帧,但是,一旦某帧发生错误,必须重新发送该帧及其后的n帧。这种方式提高了信道的利用率,但允许已发送有待于确认的帧越多,可能要退回来重发的帧也越多。
在选择性重传ARQ中,当发送方接收到接收方的状态报告指示报文出错,发送方仅重新传输发生错误的帧,并缓存错误帧之后发送的帧。与回退N相比,减少了出错帧之后正确的帧都要重传的开销。
在混合ARQ中,数据报文传送到接收方之后,即使出错也不会被丢弃。接收方指示发送方重传出错报文的部分或者全部信息,将再次收到的报文信息与上次收到的报文信息进行合并,以恢复报文信息。
5. IP操作规范以及使用ARP协议后IP传输数据包的详细流程
ARP地址解析协议是通过第三层IP地址获取第二层物理地址(MAC地址)的一个协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址的应答,这样的数据包才能被传送出去。
A给B发送IP包,在报头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时候,还需要进行一次以太包的封装成帧,在这个以太包中,目标地址就是B的MAC地址。
在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP地址,以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并通过单播方式回复给A。A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。
6. IP地址分配,路由聚合,最长前缀匹配转发
通常情况下根据网络的结构、规模及管理模式,IP地址的分配方式分为以下两种:按照地址规划进行手工设置的静态分配和基于DHCP的动态分配。
静态分配方式是为每一部网络设备赋予一个固定的IP地址,这种方式不需要额外的设备,可以保证每一台设备都拥有一个属于自己的固定IP地址,适用于网络规模较小、管理模式较为简单的网络;但是,静态的分配方式会给网络管理员带来较大的工作量,也比较容易出现IP地址重复的问题。因此,出于对网络管理的简便和安全方面的考虑,对于网络规模较大、管理模式较为复杂的网络,通常选择基于DHCP的动态地址分配方式。DHCP服务器可以自动地为工作站指定IP地址、子网掩码、默认网关、DNS及WINS服务器地址等信息,在工作站端不需要进行任何设置,大大减轻网络管理员的工作量,且一般情况下不会出现IP地址冲突等问题,但需额外增加一个DHCP服务器或由路由器等网络设备兼任提供该项服务。
路由聚合是将多条路由合并成一条路由、以分级方式组织网络层IP地址的一项技术,用于缩小网络上的路由表的尺寸,解决路由表中项目数过多而引发路由查找慢、路由表缓存不足等问题。
最长前缀匹配是指在IP协议中被路由器用于在路由表中进行选择的一个算法。因为路由表中的每个表项都指定了一个网络,所以一个目的地址可能与多个表项匹配。最明确的一个表项,即子网掩码最长的一个,就叫做最长前缀匹配。例如,对于路由表192.168.20.16/28、192.168.0.0/16,在要查找地址192.168.20.19的时候,这两个表项都“匹配”。也就是说,两个表项都包含着要查找的地址。这种情况下,前缀最长的路由就是192.168.20.16/28,因为它的子网掩码(/28)比其他表项的掩码(/16)要长,使得它更加明确。
7. RIP协议,包括计数到无穷,水平分割,毒性逆转,触发更新
路由信息协议RIP是一种分布式的基于距离向量的路由选择协议,主要应用于自治系统AS内部,其最大的优点是简单。RIP协议要求网络中每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,即“距离向量”。
RIP协议将“距离”定义为:从一路由器到直接连接的网络的距离定义为1。从一路由器到非直接连接的网络的距离定义为每经过一个路由器则距离加1。“距离”也称为“跳数”。RIP允许一条路径最多只能包含15个路由器,距离等于16时即为不可达,因此,RIP支持站点的数量有限,可见RIP协议只适用于小型互联网。
记数到无穷:定义最大跳数为15,当计数距离为16时,目标为不可达。
水平分割法的规则和原理是:路由器从某个接口接收到的更新信息不允许再从这个接口发回去,是一种避免路由环的出现和加快路由汇聚的技术。由于路由器可能收到它自己发送的路由信息,而这种信息是无用的,水平分割技术不反向通告任何从终端收到的路由更新信息,而只通告那些不会由于计数到无穷而清除的路由。其优点是能够阻止路由环路的产生和减少路由器更新信息占用的链路带宽资源。
毒性逆转:当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去,这叫做毒性逆转。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。从效果上来说,这就相当于在传播那些路径无法到达的信息。
触发更新:RIP协议规定,路由表每隔30 秒定期向网络中发送,但通常情况下,广域网链路带宽相对比较低速,而且带宽宝贵,为了能够更好的利用和节省广域网上的带宽,RIP 可以调整为在广域网链路上抑制路由更新的发送,而只仅仅在路由有变化时,将有变化的路由发出去,这就是RIP 的 触发更新机制。一旦检测到路由崩溃,立即广播路由刷新报文,而不等到下一刷新周期。
8. OSPF协议,图抽象过程,树建立,形成转发表。
开放式最短路径优先OSPF协议是一种链路状态路由协议,一般用于同一个路由域AS内。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的链路状态数据库,这个数据库实际上就是全网的拓扑结构图,并在全网范围内一致。OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
OSPF通过每隔10秒向相邻路由器发送HELLO包来发现和维持临站的可达性,以及将数据发往相邻路由器所需的“代价”。同时各路由器间通过交换链路状态信息,从而最终建立一个链路状态数据库即全网的拓扑结构图,使每一个路由器都知道全网共有多少个路由器,以及那些路由器是相连的,其代价是多少等等。
在OSPF中每一台路由器都以自己为根节点来使用最短路径优先算法SPF建立树。
9. BGP协议原理,路径属性的作用。
边界网关协议BGP是一种应用在大型网络上的协议,主要用来控制AS间通信,具有灵活的可控性,同时也是一种复杂的协议。类似距离矢量特性,BGP是一种路径矢量协议,每个AS作为一跳。它通过TCP协议运行,可靠性由TCP进行控制。
路由器发送关于目的地网络的BGP更新消息,这些更新消息中包括有关BGP度量值的信息,被称为路径属性。BGP使用路径属性来确定前往网络的最佳路径。
路径属性分为公认属性和任选属性,其中公认属性是一种所有BGP实施都必须能识别的属性,这些属性被传输给BGP邻居,包括公认必决和公认自决;任选属性不要求所有BGP的实施都必须支持,包括任选可传递和任选非传递。
公认必决属性包括AS路径、下一跳、起源3种属性类别。其中,AS路径属性被BGP用来确保无环路;下一跳属性指出了用于前往目的地的下一跳IP地址;起源属性指出路径信息的源头,用于指明这条路由是以什么方式被BGP学到的。
公认自决属性包括本地优先级和原子聚合。其中,本地优先级属性告诉自治系统中的路由器哪条路径是离开自治系统AS的首选路径,本地优先级越高,路径被选中的可能性越大。
可选传递属性包括聚合站和共同体。BGP共同体是一种用于过滤入站/出站路由的方法,被用于一组具有相同特性(因此具有相同策略的)的目的地(路由);这样,路由器将根据共同体而不是路由采取策略。
可选非传递属性是多出口鉴别器MED。MED属性也被称为度量值,用于向外部邻居指出进入自治系统的首选路径。当入口有多个时,自治系统可以使用MED动态地影响其他自治系统如何选择进入路径。MED度量值越小,路径被选中的可能性越大。
MED和本地优先级之间的差别在于:MED影响进入自治系统的数据流,且在AS之间交换,而本地优先级影响离开自治系统的数据流,在AS内部交换。
10. TCP三次握手建立连接,拆除连接过程。
TCP通过三次握手建立连接。
第一次握手:客户端发送连接请求报文段到服务器,这时报文段首部中的同步位SYN=1,同时选择一个初始序号seq=x,客户进程进入SYN-SENT(同步收已发送)状态,等待服务器确认;
第二次握手:服务器收到连接请求报文段后,如同意连接,则向客户端发送确认。在确认报文段中把SYN位和ACK位都置1,确认号ack=x+1,同时也为自己选择一个初始序号seq=y,服务器进程进入SYN-RCVD(同步收到)状态。
第三次握手:客户端收到服务器的确认报文段后,还要向服务器给出确认。客户端发送的确认报文段中ACK=1,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接就已建立,客户端进入ESTABLISHED(已建立连接)状态。当服务器收到客户端的确认后,也进入ESTABLISHED(已建立连接)状态。
数据传输结束后,TCP通过四个报文段拆除连接。
客户端先向服务器发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。客户端把连接释放报文段首部的FIN=1,其序号seq=u(u等于前面已传送过的数据的最后一个字节的序号加1)。这时客户端进入FIN-WAIT-1(终止等待1)状态,等待服务器确认。
服务器收到连接释放报文段后即发出确认,ACK=1,确认号ack=u+1,而这个报文段自己的序号seq=v(v等于服务器前面已传送过的数据的最后一个字节的序号加1)。然后服务器进入CLOSE-WAIT(关闭等待)状态。这时TCP连接处于半关闭状态,即客户端已经没有数据要发送了,但服务器若发送数据,客户端仍要接受,即从服务器到客户端这个方向的连接并未关闭。
客户端收到服务器的确认后,进入FIN-WAIT-2(终止等待2)状态,等待服务器发出的连接释放报文段。
若服务器已经没有要向客户端发送的数据,其应用进程就通知TCP释放连接。这时服务器发出的连接释放报文段中FIN=1,ACK=1,并重复上次已发送过的确认号ack=u+1,而这个报文段自己的序号seq=w(在半关闭状态下服务器可能又发送了一些数据)。这时服务器就进入LAST-ACK(最后确认)状态,等待客户端的确认。
客户端在收到服务器的连接释放报文段后必须对此发出确认。在确认报文段中ACK=1,确认号ack=w+1,而自己的序号是seq=u+1。然后客户端进入到TIME-WAIT(时间等待)状态。此时TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,客户端才能进入到CLOSED状态并撤销相应的传输控制块TCB,结束本次的TCP连接。服务器只要收到客户端发出的确认,就进入CLOSED状态并撤销相应的传输控制块TCB,结束本次的TCP连接。
11. TCP头部各个字段的含义及其在数据传输过程中的变化。
TCP报文段头部前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N是整数)。因此TCP首部最小长度是20字节。
源端口:2个字节,写入TCP源端口号,在数据传输过程中不变。
目的端口:2个字节,写入TCP目的端口号,在数据传输过程中不变。
序号:4个字节,也叫报文段序号,标记本报文段所发送的数据的第一个字节的序号,在数据传输中发送不同报文段的序号也将不同。
确认号:4字节,期望收到对方下一个报文段的第一个数据字节的序号,同时也是对前正确接收了的数据的确认。在数据传输中不同报文段其确认号也将不同。
数据偏移:占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,实际上是指出TCP报文段的首部长度,在同一次数据传输过程中该字段不变。
保留:占6位,保留为今后使用,但目前均置0,且在数据传输过程中不变。
控制位URG(紧急):当URG=1时,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据应尽快传送(相当于高优先级的数据)而不要按原来的排队顺序来传送,这时要与紧急指针字段配合使用。通常情况下普通数据的URG位置0,在数据传输过程中当出现紧急数据需优先处理时该报文段的URG字段将被置1。
控制位ACK(确认):仅当ACK=1时确认号字段才有效,当ACK=0时确认号无效,在连接建立后所有传送的报文段都必须把ACK置1。在数据传输过程中,仅当TCP建立连接的第一次握手时报文段的ACK=0,之后的报文段ACK位均为1。
控制位PSH(推送):接收方收到PSH=1的报文段就尽快地交付给接受应用进程而不再等到整个缓存都填满后才向上交付。通常情况下普通数据的PSH位置0,在数据传输过程中当发送方希望某个报文段发送后能得到接收方立即响应时该报文段的PSH字段将被置1。
控制位RST(复位):RST=1时表明TCP连接中出现严重差错必须释放连接,然后再重新建立传输连接,有时也可以用来拒绝一个非法的报文段或拒绝打开一个连接。在数据传输过程中通常RST=0,仅当发生错误需要释放连接时才发送一个RST=1的报文段。
控制位SYN(同步):在连接建立时用来同步序号,当SYN置1时表示这是一个连接请求或连接接受报文。在数据传输过程中,仅当TCP建立连接的前两次握手报文段中的SYN置1,连接建立之后的数据传输中SYN字段均为0。
控制位FIN(终止):用来释放一个连接,当FIN=1时表明此报文段发送方的数据已发送完毕并要求释放传输连接。在数据传输过程中通常情况报文段的FIN=0,仅当报文段发送方数据发送完毕要求释放连接时才发送一个FIN=1的报文段。
窗口:2字节,窗口值告诉通信对方我方的接收窗口大小,亦即告诉对方现在允许发送的数据量,作为对方设置其发送窗口的依据。在数据传输过程中根据接收方数据处理能力,窗口值将随之动态变化。
检验和:2字节,对TCP首部和数据进行检验。在数据传输过程中不同的报文段其检验和也将不同。
紧急指针:紧急指针仅在URG=1时才有意义,它指出本报文段中紧急数据的字节数。在数据传输过程中仅当出现紧急数据需要发送时才紧急指针才有意义,其值也将不同。
选项:长度可变,最长可达40字节。选项字段可选,并非必须使用。包括以下选项:
最大报文段长度MSS:定义TCP报文段中数据字段的最大长度,在一次数据传输过程中不变。
窗口扩大:3字节,用于扩大窗口值以告诉通信对方允许发送更多的数据量。跟窗口字段类似,在数据传输过程中根据接收方数据处理能力,窗口扩大值也将随之动态变化。
时间戳:10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)。该选项主要用来计算数据传输的往返时间RTT(发送方在发送报文段时把当前时钟放入时间戳字段,接收方在确认该报文段时把时间戳字段复制到时间戳回送回答字段)和处理TCP序号超过232时防止序号绕回。在数据传输过程中不同时间发出的报文段其时间戳也将不同。
12. TCP拥塞控制原理,慢启动及冲突避免算法。
拥塞控制就是根据网络能够承受现有的网络负荷,防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个动态的问题, TCP通过发送方维持一个拥塞窗口的状态变量来控制拥塞,其原理是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去;但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络的分组数。RFC 2581定义了进行拥塞控制的四种算法,即慢启动、冲突避免、快重传、快恢复。
慢启动算法的思路是:当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况;因而较好的方法是先探测一下,由小到大逐渐增大发送窗口(即拥塞窗口)。通常在刚开始发送报文段时,先把拥塞窗口设置为一个最大报文段MSS的数值,而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。由此可见,每经过一个传输轮次,拥塞窗口就加倍。
冲突避免算法的思想是让拥塞窗口缓慢增大,即每经过一个往返时间就把发送方的拥塞窗口加一个MSS而不是加倍。这样,拥塞窗口按线性规律缓慢增长,比慢启动算法的拥塞窗口增长效率缓慢得多,使网络比较不容易出现拥塞。
为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量,它的值设置为出现拥塞时发送方窗口值的一半(但不能小于2)。当cwnd<ssthresh时使用慢启动算法,当cwnd>ssthresh时停止使用慢启动算法而改用冲突避免算法,当cwnd=ssthresh时既可使用慢启动算法也可使用冲突避免算法。而只要发送方判断网络出现拥塞,就把拥塞窗口重新设置为1,并执行慢启动算法,以便使发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。