1. 试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。 各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。
2.网络层提供数据报或虚电路服务对上面的运输层有何影响?
网络层提供数据报或虚电路服务不影响上面的运输层的运行机制。 但提供不同的服务质量。
3.当应用程序使用面向连接的 TCP 和无连接的 IP 时,这种传输是面向连接的还是面向无连接的?
都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。
4.试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接有复用到IP数据报上。
5.试举例说明有些应用程序愿意采用不可靠的 UDP,而不用采用可靠的 TCP。
VOIP:由于语音信息具有一定的冗余度,人耳对 VOIP 数据报损失由一定的承受度,但对传输时延的变化较敏感。有差错的 UDP 数据报在接收端被直接抛弃,TCP 数据报出错则会引起重传,可能带来较大的时延扰动。因此 VOIP 宁可采用不可靠的 UDP,而不愿意采用可靠的 TCP。
原理:有差错的数据报 UDP 直接丢弃,而 TCP 则要求重传,TCP 会带来较大的时延
此外还有 DNS、SNMP 等都采用不可靠的 UDP 协议,而不愿意采用可靠的 TCP。
6.接收方收到有差错的 UDP 用户数据报时应如何处理
简单地丢弃
7.如果应用程序愿意使用 UDP 来完成可靠的传输,这可能吗?请说明理由。
可能,但应用程序中必须额外提供与 TCP 相同的功能
8.为什么说 UDP 是面向报文的,而 TCP 是面向字节流的?
① 发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。发送方 TCP 对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,课分拆/合并),但维持各字节。
② UDP 是面向报文的:发送方的 UDP 对应用程序交下来的报文,在添加了首部之后就向下交付,UDP 对应用层交付下来的报文即不合并也不拆分,而是保留这些报文的边界,应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文,接收方 UDP 对下方交上来的 UDP 用户数据报,在去除首部之后就原封不动的交付给上层的应用程序,一次交付一个完整报文,所以是 UDP 是面向报文的
③ TCP 是面向字节的:发送方 TCP 对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可拆分/合并),但维持各字节流顺序(相对顺序没有变),TCP发送方有一个发送缓冲区,当应用程序传输的数据块太长,TCP 就可以把它划分端一些再传输,如果应用程序一次只传输一个字节,那么 TCP 可以等待积累足够多的字节后再构成报文端发送出去,所以 TCP 的面向字节的
9.端口的作用是什么?为什么端口要划分为三种?
端口的作用是对 TCP/IP 体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
熟知端口号:数值一般为 0~1023,标记常规的服务进程如 FTP 是 21,DNS 是 53,HTTP 是 80 等
登记端口号:数值为 1024~49151,标记没有熟知端口号的非常规的服务进程
短暂端口号:数值为 49152~65535,客户进程运行时动态选择
把端口划分为 3 类是因为:避免端口号重复,无法区分应用进程。二是因特网上的计算机通信都是采用 C/S 方式,在客户发起通信请求时,必须知道服务器的端口,对应一些重要的应用程序,必须让所有用户知道。
10.试说明运输层中伪首部的作用。
用于计算运输层数据报校验和。
伪首部(pseudo header),通常有 TCP 伪首部和 UDP 伪首部。在 UDP 伪首部中,包含 32 位源 IP 地址,32 位目的 IP 地址,8 位协议,16 位 UDP 长度。通过伪首部的校验,UDP 可以确定该数据报是不是发给本机的,通过首部协议字段,UDP 可以确认有没有误传。
11.某个应用进程使用运输层的用户数据报 UDP,然而继续向下交给 IP 层后,又封装成 IP 数据报。既然都是数据报,可否跳过 UDP 而直接交给IP层?哪些功能 UDP 提供了但 IP 没提提供?
IP数据报只能找到目的主机而无法找到目的进程。UDP 提供对应用层的复用和分用功能,并提供对数据部分的差错检验。
12.一个应用程序用 UDP,到 IP 层把数据报在划分为 4 个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传 UDP,而 IP 层仍然划分为 4 个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的 4 个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。
不行。重传时,IP 数据报的标识字段会有另一个标识符。 仅当标识符相同的 IP 数据报片才能组装成一个 IP 数据报。前两个 IP 数据报片的标识符与后两个 IP 数据报片的标识符不同,因此不能组装成一个IP数据报。
13.一个 UDP 用户数据的数据字段为 8192 字节。在数据链路层要使用以太网来传送。试问应当划分为几个 IP 数据报片?说明每一个 IP 数据报字段长度和片偏移字段的值。
UDP 用户数据报的长度 = 8192 + 8 = 8200 B
以太网数据字段最大长度为 1500 B。若 IP 首部为 20 字节,则 IP 数据报的数据部分最多只能有 1480 B。8200=1480∗5+8008200=1480∗5+800,因此划分的数据报片共 6 个。
数据字段的长度:前 5 个是 1480字节,最后一个是 800 字节。
第 1 个数据报片的片偏移字节为 0 B;
第 2 个数据报片的片偏移字节为 1480 B。
第 3 个数据报片的片偏移字节为 2960 B。
第 4 个数据报片的片偏移字节为 4440 B。
第 5 个数据报片的片偏移字节为 5920 B。
第 6 个数据报片的片偏移字节为 7400 B。
把以上得出的片偏移字节数除以 8,就得出片偏移字段中应当填入的数值。因此最后的答案,片偏移字段的值是:0,185,370,555,740 和 925(字段数除以 8)
14.一 UDP 用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17。试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器发送给客户?使用 UDP 的这个服务器程序是什么?
把首部的 8 个字节的数值写成二进制表示的数值,如下所示:
15.使用 TCP 对实时话音数据的传输有没有什么问题?使用 UDP 在传送数据文件时会有什么问题?
如果语音数据不是实时播放(边接收边播放)就可以使用 TCP,因为 TCP 传输可靠。接收端用 TCP 将话音数据接收完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用 UDP。 UDP 不保证可靠交付,但 UDP 比 TCP 的开销要小很多。因此只要应用程序接收这样的服务质量就可以使用 UDP。
16.在停止等待协议中如果不使用编号是否可行?为什么?
分组和确认分组都必须进行编号,才能明确哪个分则得到了确认。
停止等待协议要点:
① 停止等待协议用于通信系统中,两个相连的设备相互发送信息时使用,以确保信息不因丢包或包乱序而丢失,是最简单的自动重传请求方法。
只有收到序号正确的确认帧 ACKn 后,才更新发送状态变量 V(S)一次,并发送新的数据帧。
② 接收端接收到数据帧时,就要将发送序号 N(S) 与本地的接收状态变量 V®相比较。
若二者相等就表明是新的数据帧,就收下,并发送确认。否则为重复帧,就必须丢弃。但这时仍须向发送端发送确认帧 ACKn,而接收状态变量V®和确认序号 n 都不变。
连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧,表明接收端收到了重复帧。
③ 发送端在发送完数据帧时,必须在其发送缓存中暂时保留这个数据帧的副本。这样才能在出差错时进行重传。只有确认对方已经收到这个数据帧时,才可以清除这个副本。
实用的CRC 检验器都是用硬件完成的。
④ CRC 检验器能够自动丢弃检测到的出错帧。因此所谓的“丢弃出错帧”,对上层软件或用户来说都是感觉不到的。
发送端对出错的数据帧进行重传是自动进行的,因而这种差错控制体制常简称为ARQ(Automatic Repeat reQuest),直译是自动重传请求,但意思是自动请求重传。
17.在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。
19.试证明:当用 n 比特进行分组的编号时,若接收到窗口等于 1(即只能按序接收分组),当仅在发送窗口不超过 2n−12 n −1 时,连接 ARQ 协议才能正确运行。窗口单位是分组。
20.
21.使用连续 ARQ 协议中,发送窗口大小事 3,而序列范围 [0, 15],而传输媒体保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是 5。试问:
(1)在发送方的发送窗口中可能有出现的序号组合有哪几种?
(2)接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
(1)在接收方,下一个期望收到的序号是 5。这表明序号到 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 的分组的。
22.主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别为 70 和 100。试问:
(1)第一个报文段携带了多少个字节的数据?
(2)主机 B 收到第一个报文段后发回的确认中的确认号应当是多少ÿ