第五章 运输层
5—01 试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。
运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。
各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。
5—02 网络层提供数据报或虚电路服务对上面的运输层有何影响?
答:网络层提供数据报或虚电路服务不影响上面的运输层的运行机制。但提供不同的服务质量。
5—03 当应用程序使用面向连接的TCP 和无连接的IP 时,这种传输是面向连接的还是面向无连接的?
答:都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。 5—05试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。
答:VOIP:由于语音信息具有一定的冗余度,人耳对VOIP 数据报损失由一定的承受度,但对传输时延的变化较敏感。
有差错的UDP 数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。
因此VOIP 宁可采用不可靠的UDP,而不愿意采用可靠的TCP。
5—06 接收方收到有差错的UDP 用户数据报时应如何处理?
答:丢弃
5—07 如果应用程序愿意使用UDP 来完成可靠的传输,这可能吗?请说明理由
答:可能,但应用程序中必须额外提供与TCP 相同的功能。
5—08 为什么说UDP 是面向报文的,而TCP 是面向字节流的?
答:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应
用进程,一次交付一个完整的报文。
发送方TCP 对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可分拆/合并),但维持各字节
5—09 端口的作用是什么?为什么端口要划分为三种?
答:端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
熟知端口,数值一般为0~1023.标记常规的服务进程;
登记端口号,数值为1024~49151,标记没有熟知端口号的非常规的服务进程;
短暂端口号,数值为49152~65535,标记客户进程,运行时才动态分配。
5—10 试说明运输层中伪首部的作用。
答:用于计算运输层数据报校验和。
5—11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP 层后,又封装成IP 数据报。既然都是数据报,可否跳过UDP 而直接交给IP 层?哪些功能UDP 提供了但IP 没有提供?
答:不可跳过UDP 而直接交给IP 层
IP 数据报IP 报承担主机寻址,提供报头检错;只能找到目的主机而无法找到目的进程。
UDP 提供对应用进程的复用和分用功能,以及提供对数据部分的差错检验。
5-12一个应用程序用UDP,到IP 层把数据报在划分为4个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP 层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。
答:不行
重传时,IP数据报的标识字段会有另一个标识符。
仅当标识符相同的IP 数据报片才能组装成一个IP 数据报。
前两个IP 数据报片的标识符与后两个IP 数据报片的标识符不同,因此不能组装成一个IP 数据报。
5—13 一个UDP 用户数据的数据字段为8192字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP 数据报片?说明每一个IP 数据报字段长度和片偏移字段的值。
答:6个
数据字段的长度:前5个是1480字节,最后一个是800字节。
片偏移字段的值分别是:0,1480,2960,4440,5920和7400.
5—14 一UDP 用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用UDP 的这个服务器程序是什么?
解:源端口1586,目的端口69,UDP用户数据报总长度28字节,数据部分长度20字节。 此UDP 用户数据报是从客户发给服务器(因为目的端口号
5—15 使用TCP 对实时话音数据的传输有没有什么问题?使用UDP 在传送数据文件时会有什么问题?
答:UDP不保证可靠交付,但UCP 比TCP 的开销要小很多。因此只要应用程序接受这样的服务质量就可以使用UDP。如果语音数据不是实时播放(边接收边播放)就可以使用TCP,因为TCP 传输可靠。接收端用TCP 讲话音数据接受完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用UDP。
5—16 在停止等待协议中如果不使用编号是否可行?为什么?
答:分组和确认分组都必须进行编号,才能明确哪个分组得到了确认。
5—17 在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。
答:收到重复帧不确认相当于确认丢失
5—18 假定在运输层使用停止等待协议。发送方在发送报文段M 0后在设定的时间内未收到确认,于是重传M 0,但M 0又迟迟不能到达接收方。不久,发送方收到了迟到的对M 0的确认,于是发送下一个报文段M 1,不久就收到了对M 1的确认。接着发送方发送新的报文段M 0,但这个新的M 0在传送过程中丢失了。正巧,一开始就滞留在网络中的M 0现在到达接收方。接收方无法分辨M 0是旧的。于是收下M 0,并发送确认。显然,接收方后来收到的M 0是重复的,协议失败了。
试画出双方交换报文段的过程。
答:
5—19试证明:当用n 比特进行分组的编号时,若接收到窗口等于1(即只能按序接收分组),当仅在发送窗口不超过2-1时,连续ARQ 协议才能正确运行。窗口单位是分组。
解:如图所示。设发送窗口记为W T ,接收窗口记为W R 。假定用3比特进行编号。设接收窗口正好在7号分组处(有阴影的分组)。发送窗口W T 的位置不可能比②更靠前,也不可能比③更靠后,也可能不是这种极端位置,如①。
对于①和②的情况,在W T 的范围内无重复序号,即W T ≤2。
对于③的情况,在W T +WR 的范围内无重复序号,即W T +WR ≤2。
现在W R =1,故发送窗口的最大值W T ≤2-1。 n
n n n
5—20 略
5—21 假定使用连续ARQ 协议中,发送窗口大小是3,而序列范围[0,15],而传输媒体保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是5.
试问:
(1)在发送方的发送窗口中可能有出现的序号组合有哪几种?
(2)接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
答:(1)序号到4为止的分组都已收到。若这些确认都已到达发送方,则发送窗口的范围是
[5,7]。假定所有的确认都丢失了,发送方都没有收到这些确认。这时,发送窗口应为[2,4]。因此,发送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一个。
(2)接收方期望收到序号5的分组,说明序号为2,3,4的分组都已收到,并且发送了确认。对序号为1的分组的确认肯定被发送方收到了,否则发送方不可能发送4号分组。可见,对序号为2,3,4的分组的确认有可能仍滞留在网络中。这些确认是用来确认序号为2,3,4的分组。
5—22略
5—23 主机A 向主机B 连续发送了两个TCP 报文段,其序号分别为70和100。试问:
(1)第一个报文段携带了多少个字节的数据?
(2)主机B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机B 收到第二个报文段后发回的确认中的确认号是180,试问A 发送的第二个报文段中的数据有多少字节?
(4)如果A 发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A 发送确认。试问这个确认号应为多少?
解:(1)第一个报文段的数据序号是70到99,共30字节的数据。
(2)确认号应为100.
(3)80字节。
(4)70
5—24略
5—25 为什么在TCP 首部中要把TCP 端口号放入最开始的4个字节?
答:在ICMP 的差错报文中要包含IP 首部后面的8个字节的内容,而这里面有TCP 首部中的源端口和目的端口。当TCP 收到ICMP 差错报文时需要用这两个端口来确定是哪条连接出了差错。
5—26 为什么在TCP 首部中有一个首部长度字段,而UDP 的首部中就没有这个字段? 答:TCP首部除固定长度部分外,还有选项,因此TCP 首部长度是可变的。UDP首部长度是固定的。
5—27 一个TCP 报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP 报文字段中的序号字段可能编出的最大序号,问还能否用TCP 来传送? 答:65495字节,此数据部分加上TCP 首部的20字节,再加上IP 首部的20字节,正好是
IP 数据报的最大长度65535.(当然,若IP 首部包含了选择,则IP 首部长度超过20字节,这时TCP 报文段的数据部分的长度将小于65495字节。)
数据的字节长度超过TCP 报文段中的序号字段可能编出的最大序号,通过循环使用序号,仍能用TCP 来传送。
5—28 主机A 向主机B 发送TCP 报文段,首部中的源端口是m 而目的端口是n。当B 向A 发送回信时,其TCP 报文段的首部中源端口和目的端口分别是什么?
答:分别是n 和m。
5—29 在使用TCP 传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。
答:还未重传就收到了对更高序号的确认。
第五章 运输层
5—01 试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。
运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。
各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。
5—02 网络层提供数据报或虚电路服务对上面的运输层有何影响?
答:网络层提供数据报或虚电路服务不影响上面的运输层的运行机制。但提供不同的服务质量。
5—03 当应用程序使用面向连接的TCP 和无连接的IP 时,这种传输是面向连接的还是面向无连接的?
答:都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。 5—05试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。
答:VOIP:由于语音信息具有一定的冗余度,人耳对VOIP 数据报损失由一定的承受度,但对传输时延的变化较敏感。
有差错的UDP 数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。
因此VOIP 宁可采用不可靠的UDP,而不愿意采用可靠的TCP。
5—06 接收方收到有差错的UDP 用户数据报时应如何处理?
答:丢弃
5—07 如果应用程序愿意使用UDP 来完成可靠的传输,这可能吗?请说明理由
答:可能,但应用程序中必须额外提供与TCP 相同的功能。
5—08 为什么说UDP 是面向报文的,而TCP 是面向字节流的?
答:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应
用进程,一次交付一个完整的报文。
发送方TCP 对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可分拆/合并),但维持各字节
5—09 端口的作用是什么?为什么端口要划分为三种?
答:端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
熟知端口,数值一般为0~1023.标记常规的服务进程;
登记端口号,数值为1024~49151,标记没有熟知端口号的非常规的服务进程;
短暂端口号,数值为49152~65535,标记客户进程,运行时才动态分配。
5—10 试说明运输层中伪首部的作用。
答:用于计算运输层数据报校验和。
5—11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP 层后,又封装成IP 数据报。既然都是数据报,可否跳过UDP 而直接交给IP 层?哪些功能UDP 提供了但IP 没有提供?
答:不可跳过UDP 而直接交给IP 层
IP 数据报IP 报承担主机寻址,提供报头检错;只能找到目的主机而无法找到目的进程。
UDP 提供对应用进程的复用和分用功能,以及提供对数据部分的差错检验。
5-12一个应用程序用UDP,到IP 层把数据报在划分为4个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP 层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。
答:不行
重传时,IP数据报的标识字段会有另一个标识符。
仅当标识符相同的IP 数据报片才能组装成一个IP 数据报。
前两个IP 数据报片的标识符与后两个IP 数据报片的标识符不同,因此不能组装成一个IP 数据报。
5—13 一个UDP 用户数据的数据字段为8192字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP 数据报片?说明每一个IP 数据报字段长度和片偏移字段的值。
答:6个
数据字段的长度:前5个是1480字节,最后一个是800字节。
片偏移字段的值分别是:0,1480,2960,4440,5920和7400.
5—14 一UDP 用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用UDP 的这个服务器程序是什么?
解:源端口1586,目的端口69,UDP用户数据报总长度28字节,数据部分长度20字节。 此UDP 用户数据报是从客户发给服务器(因为目的端口号
5—15 使用TCP 对实时话音数据的传输有没有什么问题?使用UDP 在传送数据文件时会有什么问题?
答:UDP不保证可靠交付,但UCP 比TCP 的开销要小很多。因此只要应用程序接受这样的服务质量就可以使用UDP。如果语音数据不是实时播放(边接收边播放)就可以使用TCP,因为TCP 传输可靠。接收端用TCP 讲话音数据接受完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用UDP。
5—16 在停止等待协议中如果不使用编号是否可行?为什么?
答:分组和确认分组都必须进行编号,才能明确哪个分组得到了确认。
5—17 在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。
答:收到重复帧不确认相当于确认丢失
5—18 假定在运输层使用停止等待协议。发送方在发送报文段M 0后在设定的时间内未收到确认,于是重传M 0,但M 0又迟迟不能到达接收方。不久,发送方收到了迟到的对M 0的确认,于是发送下一个报文段M 1,不久就收到了对M 1的确认。接着发送方发送新的报文段M 0,但这个新的M 0在传送过程中丢失了。正巧,一开始就滞留在网络中的M 0现在到达接收方。接收方无法分辨M 0是旧的。于是收下M 0,并发送确认。显然,接收方后来收到的M 0是重复的,协议失败了。
试画出双方交换报文段的过程。
答:
5—19试证明:当用n 比特进行分组的编号时,若接收到窗口等于1(即只能按序接收分组),当仅在发送窗口不超过2-1时,连续ARQ 协议才能正确运行。窗口单位是分组。
解:如图所示。设发送窗口记为W T ,接收窗口记为W R 。假定用3比特进行编号。设接收窗口正好在7号分组处(有阴影的分组)。发送窗口W T 的位置不可能比②更靠前,也不可能比③更靠后,也可能不是这种极端位置,如①。
对于①和②的情况,在W T 的范围内无重复序号,即W T ≤2。
对于③的情况,在W T +WR 的范围内无重复序号,即W T +WR ≤2。
现在W R =1,故发送窗口的最大值W T ≤2-1。 n
n n n
5—20 略
5—21 假定使用连续ARQ 协议中,发送窗口大小是3,而序列范围[0,15],而传输媒体保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是5.
试问:
(1)在发送方的发送窗口中可能有出现的序号组合有哪几种?
(2)接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
答:(1)序号到4为止的分组都已收到。若这些确认都已到达发送方,则发送窗口的范围是
[5,7]。假定所有的确认都丢失了,发送方都没有收到这些确认。这时,发送窗口应为[2,4]。因此,发送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一个。
(2)接收方期望收到序号5的分组,说明序号为2,3,4的分组都已收到,并且发送了确认。对序号为1的分组的确认肯定被发送方收到了,否则发送方不可能发送4号分组。可见,对序号为2,3,4的分组的确认有可能仍滞留在网络中。这些确认是用来确认序号为2,3,4的分组。
5—22略
5—23 主机A 向主机B 连续发送了两个TCP 报文段,其序号分别为70和100。试问:
(1)第一个报文段携带了多少个字节的数据?
(2)主机B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机B 收到第二个报文段后发回的确认中的确认号是180,试问A 发送的第二个报文段中的数据有多少字节?
(4)如果A 发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A 发送确认。试问这个确认号应为多少?
解:(1)第一个报文段的数据序号是70到99,共30字节的数据。
(2)确认号应为100.
(3)80字节。
(4)70
5—24略
5—25 为什么在TCP 首部中要把TCP 端口号放入最开始的4个字节?
答:在ICMP 的差错报文中要包含IP 首部后面的8个字节的内容,而这里面有TCP 首部中的源端口和目的端口。当TCP 收到ICMP 差错报文时需要用这两个端口来确定是哪条连接出了差错。
5—26 为什么在TCP 首部中有一个首部长度字段,而UDP 的首部中就没有这个字段? 答:TCP首部除固定长度部分外,还有选项,因此TCP 首部长度是可变的。UDP首部长度是固定的。
5—27 一个TCP 报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP 报文字段中的序号字段可能编出的最大序号,问还能否用TCP 来传送? 答:65495字节,此数据部分加上TCP 首部的20字节,再加上IP 首部的20字节,正好是
IP 数据报的最大长度65535.(当然,若IP 首部包含了选择,则IP 首部长度超过20字节,这时TCP 报文段的数据部分的长度将小于65495字节。)
数据的字节长度超过TCP 报文段中的序号字段可能编出的最大序号,通过循环使用序号,仍能用TCP 来传送。
5—28 主机A 向主机B 发送TCP 报文段,首部中的源端口是m 而目的端口是n。当B 向A 发送回信时,其TCP 报文段的首部中源端口和目的端口分别是什么?
答:分别是n 和m。
5—29 在使用TCP 传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。
答:还未重传就收到了对更高序号的确认。