计算机网络-谢希仁-第7版 第5章 运输层
5-01
试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
- 运输层属于面向通信的最高层,同时也是用户功能中的最底层,向上面的应用层提供通信服务。
- 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
运输层的作用:
- 运输层通过复用和分用提供进程之间的逻辑通信
- 运输层向高层用户屏蔽网络核心的细节
运输层向高层用户屏蔽下面网络核心的细节(如网络拓扑、所采用的路由协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。 - 差错检测
网络层中,IP 数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。而在运输层会对首部和数据均进行差错检验。
5-02
网络层提供数据报或虚电路服务对上面的运输层有何影响?
对运输层无影响,但网络层向运输层提供的服务质量不同。
5-03
当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的?
在网络层是无连接的,在运输层是面向连接的。
5-05
试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。
5-06
接收方收到有差错的UDP用户数据报时应如何处理?
丢弃该报文,并由网际控制报文协议 ICMP 发送 “端口不可达” 差错报文给发送方。
5-08
为什么说UDP是面向报文的,而TCP是面向字节流的?
- UDP 是面向报文的
UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,添加首部后就向下交付给 IP 层。 - TCP 是面向字节流的
TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP 并不关系应用程序一次把多长的报文发送到 TCP 的缓存中,而是根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节。
5-09
端口的作用是什么?为什么端口要划分为三种?
-
端口的作用
运输层是用于进程之间通信,网络层的 IP 地址仅确定主机,因此需要端口来确定主机中的具体进程。
端口号只具有本地意义,只是标志本计算机应用层的各个进程在和运输层交互时的层间接口。
互联网的不同计算机中,相同的端口号是没有关联的。 -
端口的三种分类
因为互联网上的计算机通信采用客户-服务器方式,因此运输层的端口号分为下面两大类:
- 服务器端使用的端口号
- 熟知端口号 (well-knownport number)
也叫系统端口号,数值为 0 ~ 1023。 - 登记端口号
数值为 1024 ~ 49151,在没有熟知端口号的应用程序中使用,这类端口号必须在 IANA按照规定的手续登记,防止重复。
- 熟知端口号 (well-knownport number)
- 客户端使用的端口号
数值为 49152 ~ 65535。仅在客户进程运行时才动态选择,因此又叫短暂端口号。通信结束后,使用过的客户端口号就不复存在,这个端口号就能供其他客户进程使用。
5-10
试说明运输层中伪首部的作用。
伪首部用于计算检验时使用,是计算检验和时临时添加在数据报前面从而得到临时数据报,伪首部既不向下传送也不向上递交,仅用于计算检验和。
5-12
一个应用程序用 UDP,到 IP 层把数据报在划分为 4 个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传 UDP,而 IP 层仍然划分为 4 个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。
不能,IP 数据报首部有个标识字段,当数据报需要分段时,这个标识字段的值会复制到所有数据报的标识字段中,相同的标识字段最后才会重装为原来的数据报。
这里两次分段的标识字段不同,因此不能组合。
5-13
一个UDP用户数据的数据字段为 8192 字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。
MTU:
根据下面关系:
.
数据链路层的数据部分最大长度为 1500 字节,该部分为 IP 数据报的总长度,因为 IP 数据报的首部固定长度为 20 字节,因此 IP 数据报的数据部分最大长度为 1480 字节。
因为 UDP 数据报的数据字段为 8192 字节,加上首部 8 字节,因此 IP 数据报大小为 8200 字节,分片个数为:8200 / 1480,即 6 个分片,分片的组成为:1480 * 5 + 800。
片偏移是以 8 字节为单位,6 个分片的片偏移分别为:0,1480/8 = 185,1480 * 2 / 8 = 370,1480 * 3 / 8 = 555,1480 * 4 / 8 = 740,1480 * 5 / 8 = 925。
5-14
UDP 首部格式:
- 源端口
左边的两个字节 06 32 为源端口,转换为十进制为 1586。 - 目的端口
十六进制为 00 45,十进制为69。 - 总长度
UDP 用户数据报长度为 001C,即28字节,数据部分长度为总长度减去首部 8 字节,即 20 字节。 - 数据报发送
目的端口 69 是熟知端口号,因此数据报是从客户发送给服务器。(不明白,源端口 1586 也是服务端使用的端口号,不在客户端使用的端口号数值中?)从表格 5-2 中可查到,端口 69 对应 TFTP 程序。
5-16
在停止等待协议中如果不使用编号是否可行?为什么?
不可行,见 停止等待协议问题
5-23
- 第一个报文的序号范围为 70 ~ 99,共 30 字节。
- 确认号是期望收到对方下一个报文段的第一个数据字节的序号。因此这里确认号为 100。
- 第二个报文段的序号范围为 100 ~ 179,共 80 字节。
- B 只能对按序收到的数据中的最高序号给出确认,因此确认号为 70。
5-25
为什么在TCP首部中要把TCP端口号放入最开始的4个字节?
运输层是进程与进程之间的通信,因此需要写明源端口号和目的端口号。
ICMP 报文的数据部分包含 IP 数据报的数据字段的前 8 个字节,将 TCP 首部的前 4 字节设为源端口和目的端口可以确定出现差错的连接。
5-26
为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段?
UDP 是面向报文的,对应用程序交下来的报文,添加首部后交付给 IP 层,不会拆分或合并,因此长度固定,不需要首部长度字段。
TCP 报文是面向字节流的,长度是不固定的,其首部除了固定的 20 字节外,有长度可变的选项字段,其中选项字段中包括最大报文长度 MSS(Maximum Segment Size),表示 TCP 报文段中数据字段的最大长度,使用该选项的原因如下:
5-27
IP 数据报的总长度字段为 16 位,因此 IP 数据报的最大长度为 2 16 − 1 2^{16}-1 216−1 = 65535 字节,TCP 报文为 IP 数据报的数据部分,IP 数据报的首部最少 20 字节,因此 TCP 数据报的总长度最大 65515 字节,TCP 数据报首部至少 20 字节,因此 TCP 数据报的数据部分最多 65495 字节。
如果传送的字节长度超过序号字段可能编出的最大序号,则循环使用序号,即到达最大序号后,下一个序号为 0,仍可用 TCP 传送。
5-28
源端口为 n,目的端口为 m。
5-29
还未重传就受到对更高序号的确认,则说明目的端口已收到前面的数据,因为接收方只对按序到达的最高序号给出确认。
5-40
- IP数据报传输过程中需要分片,但其中一个分片未能及时到达终点,终点组装 IP 数据报超时,因此丢弃该数据报。
- IP 数据报以达到终点,但终点缓存没有足够空间,因此丢弃该数据报。
- 数据报在转发时经过一个局域网的网桥,但网桥在转发该数据报的帧时没有足够的差错空间从而丢弃。
5-74
-
流量控制
-
拥塞控制
-
拥塞控制与流量控制区别