二、解析
第七讲 高阶应用
7.1 流量控制
一、习题
1.两台计算机的数据链路层采用滑动窗口机制,用64kb/s的卫星信道传输长度为1024比特的数据帧,信道的单向传播延迟为256ms。应答帧和数据帧帧头的开销忽略不计。回答下列问题:
(1)计算使用停止-等待协议时信道利用率。
(2)计算使用发送窗口为7时Go-Back-N协议的信道利用率。
(3)为使信道利用率达到最大,使用Go-Back-N协议时帧头中序号字段至少为多少比特?
(4)为避免无谓的重传,滑动窗口协议的超时重发计时器至少为多少?
2.甲乙双方均采用后退N帧协议(GBN)进行持续的双向数据传输,且双方始终采用捎带确认,帧长均为1000B。Sx,y和Rx,y分别表示甲方和乙方发送的数据帧,其中,x是发送序号;y是确认序号(表示希望接收对方的下一帧序号);数据帧的发送序号和确认序号字段均为3比特。信道传输速率为100Mb/s,RTT=0.96ms。图7-1给出了甲方发送数据帧和接收数据帧的两种场景。图中t0为初始时刻,此时甲方的发送和确认序号均为0,t1时刻甲方有足够多的数据待发送。
图7-1 习题2图
请回答下列问题:
(1)对于图7-1(a),t0时刻到t1时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少?正确接收的是哪几个帧(请用Sx,y形式给出)?
(2)对于图7-1(a),从t1时刻起,甲方在不出现超时且未收到乙方新的数据帧之前,最多还可以发送多少个数据帧?其中,第一个帧和最后一个帧分别是哪个(请用Sx,y形式给出)?
(3)对于图7-1(b),从t1时刻起,甲方在不出现新的超时且未收到乙方新的数据帧之前,需要重发多少个数据帧?重发的第一个帧是哪个(请用Sx,y形式给出)?
(4)甲方可以达到的最大信道利用率是多少?
3.假设图7-2中的H3访问Web服务器S时,S为新建的TCP连接分配了20KB(K=1024)的接收缓存,最大段长度MSS=1KB,平均往返时间RTT=200ms。H3建立连接时的初始序号为100,且持续以MSS大小的段向S发送数据,拥塞窗口初始阈值为32KB;S对收到的每个段进行确认,并通告新的接收窗口。假定TCP连接建立完成后,服务器S的TCP接收缓存仅有数据存入而无数据取出。
图7-2 习题3图
请回答下列问题:
(1)在TCP连接建立过程中,H3收到的服务器S发送过来的“第二次握手”TCP段的SYN和ACK标志位的值分别是多少?确认序号是多少?
(2)H3收到的第8个确认段所通告的接收窗口是多少? 此时H3的拥塞窗口变为多少? H3的发送窗口变为多少?
(3)当H3的发送窗口等于0时,下一个待发送的数据段序号是多少?H3从发送第一个数据段到发送窗口等于0时刻为止,平均数据传输速率是多少(忽略段的传输延时)?
(4)若H3与S之间通信已经结束,在t时刻H3请求断开该连接,则从t时刻起,S释放该连接的最短时间是多少?
二、解析
1.解析 (1)发送延迟T=1024÷64kb/s(根据谢希仁书,1kb/s=1000b/s,而不是1024b/s),所以信道利用率为T/(0.256×2+T)×100%=3.0%。
(2)信道利用率为7×T/(0.256×2+T)×100%=21.2%。
(3)信道利用率为n×T/(0.256×2+T)×100%=m。
当m最大时,n=33,所以需要6位。
(4)0.512+0.016=0.528(s)。
2.解析 (1)t0时刻到t1时刻期间,甲方可以断定乙方已正确接收了3个数据帧,分别为S0,0、S1,0、S2,0。R3,3说明乙方发送的数据帧确认号是3,即希望甲方发送序号3的数据帧,说明乙方已经接收序号为0~2的数据帧。
(2)从t1时刻起,甲方最多还可以发送5个数据帧,其中第一个帧是S5,2,最后一个数据帧是S1,2。发送序号3位,有8个序号。在GBN协议中,序号个数≥发送窗口+1,所以这里发送窗口最大为7。此时已发送了S3,0和S4,1,所以最多还可以发送5个帧。
(3)甲方需要重发3个数据帧,重发的第一个帧是S2,3。在GBN协议中,接收方发送了N帧后,若检测出错,则需要发送出错帧及其之后的帧。因为S2,0超时,所以重发的第一帧是S2已收到乙方的R2帧,确认号应为3。
(4)甲方可以达到的最大信道利用率为
3.解析 (1)TCP连接的建立分为以下3个阶段。首先,H3向Web服务器S发出连接请求报文段,这时首部中的同步位SYN=1,ACK=0,同时选择一个初始序号seq=100。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但是要消耗一个序号。其次,S收到连接请求报文段,为自己选择一个初始序号seq=y,向A发送确认。这个报文段SYN=1,ACK=1,seq=y,确认号ack是100+1=101。它不能携带数据,但是要消耗一个序号。最后,H3收到S的确认报文段后,还要向S给出确认。因此,“第二次握手”TCP确认序号是101。
(2)根据题目条件,规定S对收到的每个段(MSS大小的段)进行确认,并通告新的接收窗口,而且TCP接收缓存仅有数据存入而无数据取出。TCP接收缓存仅有数据存入而无数据取出。H3收到的第8个确认段所通告的接收窗口是20-8=12KB。在慢开始算法里,发送方H先设置拥塞窗口(cwnd)1KB。接下来每收到一个对新报文段的确认就使发送方的拥塞窗口加1KB。H3共收到8个确认段,所以此时H3的拥塞窗口变为1+8=9(KB);发送窗口是min(拥塞窗口,接收窗口),所以H3的发送窗口变为min(9,12)=9(KB)。
(3)TCP是用字节作为窗口和序号的单位。当H3的发送窗口等于0KB时,也就是接收窗口等于0KB时,下一个待发送段的序号是20KB+101=20×1024+101=20581。H3从发送第一个报文段到发送窗口等于0KB时刻为止,经过5个传输轮次,每个传输轮次的时间就是往返RTT,因此平均数据传输速率是20KB/(5×200ms)=163.84kb/s。
(4)通信结束后,H3向S发送连接释放报文段。S收到H3的连接释放报文段后,马上发出确认报文段。此时S已经没有数据需要传输了,于是它马上发出连接释放报文段。H3在收到S的连接释放报文段后,发出确认报文段。S在收到这份确认后就释放TCP连接。因此,从t时刻起,S释放该连接的最短时间是:H的连接释放报文段传送到S的时间+S的连接释放报文段传送到H3的时间+H3的确认报文段传送到S的时间=1.5×200=300(ms)。
7.2 子网划分专题
一、习题
1.已知地址块中的一个地址是140.120.84.24/20。请计算这个地址块中的最小地址和最大地址,并给出其地址掩码。计算地址块中共有多少个地址,同时计算相当于多少个C类地址。
2.某单位分配到一个B类IP地址,其net-id为129.250.0.0。该单位有4000台机器,平均分布在16个不同的地点。如果选用子网掩码为255.255.255.0,试给每个地点分配一个子网掩码号,并算出每个地点主机号码的最小值和最大值(子网号不能为全0或全1)。
3.某单位分配到一个地址块192.168.25.0。现在需要进一步划分4个一样大的子网。试问:(假设不支持全0和全1的子网划分)
(1)每个子网的前缀有多长?
(2)每个子网中有多少个地址?
(3)每个子网的地址块是什么?
(4)每个子网可分配给主机使用的最小地址和最大地址是什么?
4.计算并回答下列问题:
(1)子网掩码为255.255.255.0代表什么意思?
(2)某网络的子网掩码为255.255.255.248,则该网络能够连接多少个主机?
(3)某A类网络和某B类网络的子网号subnet-id分别为16个1和8个1,这两个网络的子网掩码有什么不同?
(4)某B类地址的子网掩码是255.255.240.0。试问:在其中每个子网上的主机数最多是多少?
(5)某A类网络的子网掩码为255.255.0.255,它是否为一个有效的子网掩码?
5.请根据图7-3所示的网络结构回答下列问题:
(1)填写路由器R1的路由表项①~⑥,如表7-1所示。
表7-1 路由器R1的路由表
(2)如果将59.67.149.128/25划分为3个子网,其中前两个子网分别能容纳25台主机,第三个子网能容纳55台主机,请写出子网掩码及可用的IP地址段(表7-2)。
表7-2 子网掩码及可用的IP地址段
图7-3 习题5图
6.某一网络地址块192.168.75.0中有5台主机A、B、C、D、E,它们的IP地址及子网掩码如表7-3所示。
表7-3 5台主机的IP地址及子网掩码
(1)5台主机分属于几个网段?哪些主机位于同一网段?
(2)主机D的网络地址是什么?
(3)若要加入第六台主机F,使它能与主机A属于同一网段,其IP地址范围是什么?
(4)若在网络中另加入一台主机,其IP地址设为192.168.75.164,它的广播地址是什么?哪些主机能收到?
7.某公司拥有一个/22的地址块,以变长子网掩码(Variable Length Subnet Mask,VLSM)来划分子网。其中部门A拥有主机数500个、部门B拥有主机数250个、部门C拥有主机数120个、部门D拥有主机数60个、部门E拥有主机数25个、部门F拥有主机数12个。
(1)如果为这6个部门划分6个子网,请写出它们的子网掩码(尽量不要浪费IP地址)。
(2)还有多少个IP地址未分配子网?
(3)为什么非空子网的子网掩码不可以是255.255.255.254?
8.某公司需要创建内部的网络(图7-4),该公司包括工程技术部、市场部、财务部和办公室四大部门,每个部门约有50台计算机。如果分配该公司使用的地址为一个C类地址,网络地址为202.138.1.0,如何划分网络,将几个部门分开?
图7-4 习题8图
二、解析
1.解析 (1)将给定地址的后2字节用二进制表示,即为140.120.01010100.00011000。而地址块中网络地址占20位,则地址块的最小地址为140.120.01010000.00000000,即 140.120.80.0;最大地址为140.120.01011111.11111111,即140.120.95.255。子网掩码为255.255.11110000.0,即255.255.240.0。
(2)32位的IP地址,网络号占20位,主机号占12位,则主机地址有212-2=4094个地址。一个C类地址的最大主机数为28-2=254,因此,大约相当于16个C类地址。
2.解析 因为单位分配到的是一个B类地址,对于4000台主机,粗略估计,主机号用12位即可表示,所以该IP地址范围够用。4000台主机分布在不同的地点,设为平均分布,那么每个地点的主机数为4000/16=250台。若选255.255.255.0为掩码,则每个网络所连主机数=28-2=254>250,共有子网数=28-2=254>16,能满足实际需求。因此,我们可以给每个子网分配如表7-4所示的IP地址。
表7-4 IP地址
续表
3.解析 本题考查划分子网。
C类网络的IP地址前3个字节代表网络号,即192.168.25.0。现需要将该网络划分为4个子网,因为全为1或者0不能用作子网号,所以需要最后一个字节的前3位用作子网号。将最后一个字节0转换成二进制为0000 0000,再将该字节前3位作为子网号,可有6个子网号(001、010、011、100、101、110)。我们选择001、010、011和100作为需要划分成的4个子网(对应的子网号)。那么
(1)001的网络地址为192.168.25.32,最小地址为192.168.25.33,最大地址为192.168.25.62,子网掩码为255.255.255.224。
(2)010的网络地址为192.168.25.64,最小地址为192.168.25.65,最大地址为192.168.25.94,子网掩码为255.255.255.224。
(3)011的网络地址为192.168.25.96,最小地址为192.168.25.97,最大地址为192.168.25.126,子网掩码为255.255.255.224。
(4)100的网络地址为192.168.25.128,最小地址为192.168.25.129,最大地址为192.168.25.158,子网掩码为255.255.255.224。
需要说明的是,子网号全0及全1不能用不是绝对的,由于CIDR的广泛应用,有的路由器软件支持子网号全0及全1,有的不支持,因此为保险起见取了前3位作为子网号。
4.解析 (1)有3种含义,分别为:①代表这是一个C类地址的子网掩码;②代表一个A类网的子网掩码,其中前8位代表网络号,后16位代表的是子网号;③代表一个B类网的子网掩码,其中前16位代表网络号,后8位代表的是子网号。
(2)将子网掩码的最后一个字节用二进制表示为255.255.255.11111 000。主机位占3位,总共能连接23=8台主机,又因为主机位全0和全1不能用,所以能连接6台主机。
(3)A类网的网络号占8位,子网号占16位,则主机位占8位,子网掩码表示为11111 111.11111111.11111111.00000000,子网个数为216-2=65534个。
B类网的网络号占16位,子网号占8位,则主机位占8位,子网掩码表示为11111111.1 111111.1111111.00000000,子网个数为28-2=254个。
A类网和B类网的子网掩码相同,都是255.255.255.0,但是它们所能表示的子网的个数不一样。
(4)将B类网的IP地址子网掩码第三个字节用二进制表示为255.255.11110000.0。其中主机位占12位,又因为全0和全1的地址不能作为主机地址使用,所以主机数为212-2=4094个。
(5)是。子网掩码由一连串的1和0组成,1代表网络号和子网号,0代表主机号。虽然RFC文档中对子网掩码的连续性没有要求,但不建议这样使用。
5.解析 (1)得到路由器R1的路由表步骤如下:
①从S0端口输出且直连,SO端口连接一个网段,该网段的两个IP地址分别为59.67.147.130和59.67.147.129。将IP地址的最后一个字节用二进制表示如下。
59.67.147.100000 10
59.67.147.100000 01
将这两个地址采用地址聚合,网络号为59.67.147.100000 00,即59.67.147.128/30,所以路由表中①应该为59.67.147.128/30。
②从S1端口输出且直连,S1端口连接一个网段,该网段的两个IP地址分别为59.67.147.133和59.67.147.134。将IP地址的最后一个字节用二进制表示如下:
59.67.147.100001 01
59.67.147.100001 10
将这两个地址采用地址聚合,网络号为59.67.147.100001 00,即59.67.147.132/30,所以路由表中②应该为59.67.147.132/30。
③从S0端口输出且非直连的网段,其中一个有3个IP地址,分别为59.67.147.56、59.67.147.57、59.67.147.58。将IP地址的最后一个字节用二进制表示如下:
59.67.147.0011 1000
59.67.147.0011 1001
59.67.147.0011 1010
将这3个地址进行地址聚合,这里将最后4位作为主机位,是因为如果用3位作为主机位,就会出现一个主机位为全0的地址59.67.147.00111 000,代表网络本身,不能作为主机地址,所以采用4位的主机位。则这3个地址的网络号为59.67.147.0011 0000,即59.67.147.48/28,路由表中③应该为59.67.147.48/28。
④从S1端口输出且非直连的网段,其中一个有3个IP地址,分别为59.67.147.73、59.67.147.74、59.67.147.75。将IP地址的最后一个字节用二进制表示如下:
59.67.147.01001 001
59.67.147.01001 010
59.67.147.01001 011
将这3个地址进行地址聚合,这里将最后的3位作为主机位,是因为如果用两位作为主机位,就会出现一个主机位为全1的地址59.67.147.010010 11,代表广播地址,不能作为主机地址,所以采用3位的主机位,这3个地址的网络号为59.67.147.01001 000,即59.67.147.72/29。路由表中④应该为59.67.147.72/29。
⑤从SO端口输出且非直连的网段,其中一个网段中有4个IP地址,分别为59.67.148.1、59.67.149.1、59.67.150.1、59.67.151.1。将IP地址的第三个字节用二进制表示如下:
59.67.100101 00.1
59.67.100101 01.1
59.67.100101 10.1
59.67.100101 11.1
将这4个IP地址采用地址聚合,网络号为59.67.100101 00.0,即59.67.148.0/22。所以在路由表中⑤应该填入59.67.148.0/22。
⑥从S1端口输出且非直连的网段,其中一个网段中有4个IP地址,分别为59.67.156.1、59.67.157.1、59.67.158.1、59.67.159.1。将IP地址的第三个字节用二进制表示如下:
59.67.100111 00.1
59.67.100111 01.1
59.67.100111 10.1
59.67.100111 11.1
将这4个IP地址采用地址聚合,网络号为59.67.1001 1100.0,即59.67.156.0/22。所以在路由表中⑥应该填入59.67.156.0/22。
(2)①将IP地址59.67.149.128的最后一个字节用二进制表示,即为59.67.149.1 000 0000。占用一个主机号可以表示两个子网,这两个子网分别为59.67.149.1000 0000/26和59.67.149.1100 0000/26,每个子网的主机号占6位,每个子网可以有26-2=62台主机。所以选择其中一个作为能容纳55台主机的网络,这里选择59.67.149.1100 0000/26作为第三个子网,网络地址范围为59.67.149.1100 0001~59.67.149.1111 1110。
②将59.67.149.1000 0000/26再划分为两个子网,则每个子网的主机号占5位,每个网段可以有25-2=30台主机,每个网段分别为59.67.149.1000 0000/27和59.67.149.101 0 0000/27。
③第一个子网的子网掩码为255.255.255.224,第二个子网的子网掩码为255.255.255.224,第三个子网的子网掩码为255.255.255.192。
第一个子网的IP地址范围为59.67.149.1000 0001~59.67.149.1001 1110。第二个子网的IP地址范围为59.67.149.1010 0001~59.67.149.1011 1110。第三个子网的IP地址范围为59.67.149.1100 0001~59.67.149.1111 1110,则3个子网的子网掩码及可用的IP地址段如表7-5所示。
表7-5 3个子网的子网掩码及可用的IP地址段
6.解析 (1)从表7-3中可以看到,5台主机的子网掩码都是255.255.255.240。故而IP 地址前28位表示网络号,后4位表示主机号。
对于主机A,IP地址的最后一个字节是0001 0010;对于主机B,IP地址的最后一个字节是1001 0010;对于主机C,IP地址的最后一个字节是1001 1110;对于主机D,IP地址的最后一个字节是1010 0001;对于主机E,IP地址的最后一个字节是1010 1101。可见,主机A~E位于3个网段,其中A单独位于一个网段,B、C位于同一个网段,D、E位于同一个网段。
(2)由(1)的分析可知,主机D的IP地址最后一个字节的高4位表示子网号,为 160,故主机D的网络地址为192.168.75.160。
(3)由(1)可知,主机A所在的网络的IP地址范围为192.168.75.16~192.168.75.31,但是全0和全1不能作为主机号,故主机F的IP地址范围为192.168.75.17~192.168.75.30。除192.168.75.18之外,其他都可以设置成主机F的IP地址。
(4)IP地址为192.168.75.164,我们拿出IP地址的最后一个字节164来分析,该字节的二进制表示为1010 0100B,高4位表示子网号。广播地址的主机号全为1,即最后一个字段为1010 1111B,表示成十进制即175。故广播地址是192.168.75.175。
广播帧会使得主机所在的局域网内的其他主机都能收到。IP地址为192.168.75.164的主机,其所在网络的IP地址范围是192.168.75.160~192.168.75.175。因为主机号不能全0和全1,所以IP地址为192.168.75.161~192.168.75.174 的主机都能收到这个广播。
7.解析 (1)部门A拥有500台主机,需要分配大于等于500个IP地址,这里分配512个IP给部门A。那么,部门A的子网掩码为255.255.254.0。
部门B有250台主机,需要分配大于等于250个IP地址,这里分配256个IP给部门B。那么,部门B的子网掩码为255.255.255.0。
部门C有120台主机,需要分配大于等于120个IP地址,这里分配128个IP给部门C。那么,部门C的子网掩码为255.255.255.128。
部门D有60台主机,需要分配大于等于60个IP地址,这里分配64个IP给部门D。那么,部门D的子网掩码为255.255.255.192。
部门E有25台主机,需要分配大于等于25个IP地址,这里分配32个IP给部门E。那么,部门E的子网掩码为255.255.255.224。
部门F有12台主机,需要分配大于等于12个IP地址,这里分配16个IP给部门F。那么,部门F的子网掩码为255.255.255.240。
综上分析,6个部门对应的子网掩码如表7-6所示。
表7-6 6个部门对应的子网掩码
(2)因为公司拥有的地址块为/22,所以网络号是22位,主机号是10位,可拥有IP地址共210-2=1022个,而总共分配出去了512+256+128+64+32+16=1008个IP地址,还有14个IP地址没分配。
(3)非空子网必须有独立主机。而子网掩码255.255.255.254对应的子网主机位只有 1位。其中,0为网络号,1为广播号,对应的子网为空子网。所以,非空子网的子网掩码不可以是255.255.255.254。事实上,最小非空子网的子网掩码应为255.255.255.252。
8.解析 本题考查子网划分。该公司分配到了一个C类地址,故网络号是24位,主机号是8位。应该设置子网掩码来将网络划分成不同的子网。因为2N-2大于等于50,所 以N最 小 为6,有M=8-N=2,分 为4个 子 网 掩 码255.255.255.0、255.255.255.64、255.255.255.128、255.255.255.192,每个子网分给一个部门就可以达到把部门分开的目的。
根据划分办法,每个网络都是/26,故网络号占26位,主机号占6位,4个部门的子网掩码都是255.255.255.192。分配好之后,每个部门的子网号分别为202.138.1.0、202.138.1.64、202.138.1.128、202.138.1.192。
对于202.138.1.0/26而言,主机IP地址范围为202.138.1.1~202.12.1.62(假设全0全1的IP地址不用,下同)。
对于202.138.1.64/26而言,主机IP地址范围为202.138.1.65~202.138.1.126。
对于202.138.1.128/26而言,主机IP地址范围为202.138.1.129~202.138.1.190。
对于202.138.1.192/26而言,主机IP地址范围为202.138.1.192~202.138.1.254。
7.3 路由转发专题
一、习题
1.设某路由器的路由表如表7-7所示。
表7-7 某路由器的路由表
现收到5个IP报文段,其目的地址分别如下:
(1)128.96.39.10。
(2)128.96.40.12。
(3)128.96.40.151。
(4)192.4.153.17。
(5)192.4.153.90。
试分别计算它们的下一跳。
2.在图7-5所示的网络结构中,根据地址分配情况(子网掩码长度均为24位),给出路由器R1、R2、R3的完整路由表。
图7-5 网络结构
3.某个单位的网络由4个子网组成,网络如图7-6所示,其中主机1、主机2、主机3和主机4的IP地址和子网掩码如表7-8所示。请写出路由器R1的路由表。
图7-6 习题3图
表7-8 主机的IP地址和子网掩码
二、解析
1.解析 本题考查IPv4分组的路由转发。注意,在路由转发中,使用的是最长匹配原则。
(1)IP分组的目的IP地址为128.96.39.10,与子网掩码255.255.255.128相与,得128.96.39.0,可见该分组经接口0转发。
(2)分 组 的 目 的IP地 址 为128.96.40.12,与 子 网 掩 码255.255.255.128相 与 得128.96.40.0,查路由表可知该分组经R2转发。
(3)分组的目的IP地址为128.96.40.151,与子网掩码255.255.255.128相与后得128.96.40.128,与子网掩码255.255.255.192相与后得128.96.40.128。查路由表可知,该分组选择默认路由器R4转发。
(4)分组的目的IP地址为192.4.153.17,与子网掩码255.255.255.128相与后得192.4.153.0,与子网掩码255.255.255.192相与后得192.4.153.0。查路由表知,按照最长匹配原则,该分组经R3转发。
(5)分组的目的IP地址为192.4.153.90,与子网掩码255.255.255.128相与后得192.4.153.0,与子网掩码255.255.255.192相与后得192.4.153.64。查路由表,该分组选择默认路由器R4转发。
也可以这样分析:R3的子网掩码最后1个字节是1100 0000,故目的地址192.4.153.0的最后一个字节0000 0000B的前两位是网络号。把90写成二进制的0101 1010B,显然该IP报文的目的网络地址不是192.4.153.0,也不是路由表前3项的目的网络地址,故选择默认路由转发出去。
2.解析 根据图7-5可知,R1的路由表如表7-9所示。
表7-9 R1的路由表
R2的路由表如表7-10所示。
表7-10 R2的路由表
R3的路由表如表7-11所示。
表7-11 R3的路由表
3.解析 将主机1、主机2、主机3、主机4的IP地址和子网掩码相与,将IP地址的最后一个字节用二进制表示,子网掩码的第四个字节用二进制表示,计算如下:
主机1的网络地址为202.99.98.16。
主机2的网络地址为202.99.98.32。
主机3的网络地址为202.99.98.48。
主机4的网络地址为202.99.98.48。
路由器R1和各网络连接的路由表信息如表7-12所示。
表7-12 路由器R1和各网络连接的路由表信息
7.4 数据格式和封装专题
一、习题
1.如图7-7所示,主机H1与H2使用TCP/IP协议进行通信,H1与H2间的通信路径中有R1、R2和R3三个路由器,四段通信链路的MTU分别为1500字节、1024字节、512字节和1500字节。
图7-7 习题1图(1)
回答下列问题:
(1)主机H1发送一个长度为1400字节的UDP数据包到主机H2。封装UDP数据包的IP数据报头需要分片,分片和重装分别发生在图7-7中的哪些设备上?
(2)在图7-8所示IP报头字段中,哪些字段与分片和重装相关?
(3)主机H2使用HTTP协议从H1下载一个800MB的文件,现代因特网的TCP如何探知H1至H2的“路径MTU”以避免IP层的分片?
图7-8 习题1图(2)
(4)计算机网络采用分层协议的组织方式,每层协议为高层提供相应的服务。简述UDP、TCP、IP和ARP协议提供的服务。
2.本地主机C通过TCP协议向远端服务器S发送数据,下面以十六进制格式列出了主机C发给服务器S的某个IP包的前40字节内容。
45 00 02 28 14 08 40 00 40 06 48 9e c0 a8 00 67 d3 44 47 d6
52 b0 00 50 16 dc aa 14 81 87 c3 04 50 18 01 02 66 2c 00 00
(1)以点分十进制格式写出C和S的IP地址,以十进制写出TCP连接两端的端口号。
(2)这个IP包中的TTL字段值是多少?在IP包头中设置TTL字段的目的是什么?
(3)不计IP和TCP包头(图7-9和图7-10),这个数据包运载了多少字节的应用层数据?以十六进制写出应用层首字节对应的SEQ序号。假设C不再继续发送数据,那么S正确收到这个IP包后回复包TCP包头中的ACK序号应该怎么填写?
图7-9 IP包头格式
图7-10 TCP包头格式
3.某计算机通过TCP协议与远程服务器通信,收到服务器发来的IP包的前40字节为
45 40 03 ed 93 a1 40 00 34 06 98 43 77 4b de 7a c0 a8 00 78
01 bb 53 5c e9 2f 6e 2b d2 09 e3 f6 50 18 02 80 8e 15 00 00
图7-11和图7-12分别给出了IP首部和TCP首部格式。回答下列问题:
图7-11 IP首部格式
图7-12 TCP首部格式
(1)给出服务器IP地址和端口号,TCP携带了多少字节的应用层数据。
(2)因特网在什么情况下会出现IP包分片操作?
(3)该IP包是否被分片过?为什么?
(4)该IP包所含TCP首部中的“窗口”字段的值为多少?TCP协议设置“窗口”字段的目的是什么?
4.某网络拓扑如图7-13所示,其中路由器内网接口、DHCP服务器、WWW服务器与主机1均采用静态IP地址配置,相关地址信息见图中标注;主机2~N通过DHCP服务器动态获取IP地址等配置信息。
图7-13 习题4图
请回答下列问题:
(1)DHCP服务器可为主机2~N动态分配IP地址的最大范围是什么?主机2使用DHCP协议获取IP地址的过程中,发送的封装DHCPDISCOVER报文的IP分组的源IP地址与目的IP地址分别是什么?
(2)若主机2的ARP表为空,则该主机访问Internet时,发出的第一个以太网帧的目的MAC地址是什么?封装主机2发往Internet的IP分组的以太网帧的目的MAC地址是什么?
(3)若主机1的子网掩码和默认网关分别配置为255.255.255.0和111.123.15.2,则该主机是否能访问WWW服务器?是否能访问Internet?请说明理由。
二、解析
1.解析 (1)分片:R1、R2,重组H2,分片是每个路由都可以的,但是重组只在目的端重组。
(2)与分片有关:DF,MF,片内偏移量与标识。
(3)将DF设置为1,这样IP报文就不能分片了,同时从最小报文长度开始发送,直到收到错误信息,这时上次成功发送的报文长度就是能够发送的最大值。将该值设置为报文长度就能避免分片。
(4)UDP:为应用层提供面向报文、无连接、不可靠的端到端的服务。
TCP:为应用层提供面向字节、有连接、可靠的全双工的端到端的服务。
IP:为传输层提供无连接、不可靠的尽最大努力交付的服务。
ARP:实现IP地址到MAC地址的映射。
2.解析 只要给出这种题,第一行是IP首部,第二行是TCP首部。
(1)C向S发送数据,C是源IP地址,S是目的IP地址。
观察第一行数据:
c0 a8 00 67是S的IP地址,二进制形式是1100 0000,1010 1000,0000 0000,0110 0111,化成点分十进制是192.168.0.103。
d3 44 47 d6是C的IP地址,二进制形式是1101 0011,0100 0100,0100 0111,1101 0110,化成点分十进制是211.68.71.214。
观察第二行数据:
52 b0是源端口,二进制形式是0101 0010 1011 0000,化成十进制是21168。
00 50是目的端口,二进制形式是0000 0000 0101 0000,化成十进制是80。
(2)TTL的值,直接看TTL字段。看第一行,对应的值是40H,因此是64。
为了防止数据分组在网络中兜圈子,每经过一个路由器,TTL的值减1,当TTL的值减到1时,直接丢弃该分组。
(3)查看IP首部的总长度,查看IP的首部长度和TCP的首部长度,用IP的总长度-IP首部长度-TCP首部长度就得到对应的应用数据的长度。
IP的总长度对应的字段值是0228H,IP首部长度字段值是5H,TCP首部长度字段值是5H,因此应用数据的长度是512B。
应用层对应数据首字节的编号,首先找到TCP数据段的SEQ是16 dc aa 14,加上20B的TCP数据段的长度就是应用层对应数据首字节的编号,也就是16 dc aa 28H。
假设C不再继续发送数据,那么S正确收到这个IP包后回复包TCP包头中的ACK序号是对应的SEQ序号加上本次TCP数据段的大小。查看第二行数据SEQ是16 dc aa 14,化成二进制是0001 0110 1101 1100 1010 1010 0001 0100,本次传输的TCP数据段大小是512B+20B=532B,换成二进制是0010 0001 0100,加起来是0001 0110,1101 1100 ,1010 1100,0010 1000,对应的十六进制是16 dc ac 28H。同时对应ACK=1,表示确认信号有效。
3.解析 (1)收到服务器发来的IP包的前40字节,根据IP固定首部20B,TCP固定首部20B的性质,前20B是IP首部,后20B是TCP首部。
根据给定的首部格式,源IP地址是c0 a8 00 78,目的IP地址是77 4b de 7a。
TCP携带的应用数据=IP数据包长度-40=0x03ed-40=965B。
(2)因特网规定了MTU的大小,当数据段的长度超过了MTU时,就会出现分片的情况。
(3)数据是否分片可以通过DF和MF来进行判断,当DF=1时表示没有分片,当DF=0,且MF=1时,表示进行了分片。
(4)通过比较TCP的格式,可以得知窗口字段的值是0x0280=640,窗口字段可以进行流量控制和拥塞控制。
4.解析 (1)DHCP服务器可为主机2~N动态分配IP地址的最大范围为111.123.15.5~ 111.123.15.254;主机2发送的封装DHCPDISCOVER报文的IP分组的源IP地址和目的IP地址分别为0.0.0.0和255.255.255.255。
(2)主机2发出的第一个以太网帧的目的MAC地址是ff-ff-ff-ff-ff-ff;封装主机2 发往Internet的IP分组的以太网帧的目的MAC地址是00-a1-a1-a1-a1-a1。
(3)主机1能访问WWW服务器,但不能访问Internet。由于主机1的子网掩码配置正确而默认网关IP地址被错误地配置为111.123.15.2(正确的IP地址是111.123.15.1),因此主机1可以访问在同一个子网内的WWW服务器,但当主机1访问Internet时,主机1发出的IP分组会被路由到错误的默认网关(111.123.15.2),从而无法到达目的主机。