试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
运输层的作用:

网络层提供数据报或虚电路服务对上面的运输层有何影响?
对运输层无影响,但网络层向运输层提供的服务质量不同。
当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的?
在网络层是无连接的,在运输层是面向连接的。
试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。

接收方收到有差错的UDP用户数据报时应如何处理?
丢弃该报文,并由网际控制报文协议 ICMP 发送 “端口不可达” 差错报文给发送方。
为什么说UDP是面向报文的,而TCP是面向字节流的?
端口的作用是什么?为什么端口要划分为三种?
端口的作用
运输层是用于进程之间通信,网络层的 IP 地址仅确定主机,因此需要端口来确定主机中的具体进程。
端口号只具有本地意义,只是标志本计算机应用层的各个进程在和运输层交互时的层间接口。
互联网的不同计算机中,相同的端口号是没有关联的。
端口的三种分类
因为互联网上的计算机通信采用客户-服务器方式,因此运输层的端口号分为下面两大类:
试说明运输层中伪首部的作用。
伪首部用于计算检验时使用,是计算检验和时临时添加在数据报前面从而得到临时数据报,伪首部既不向下传送也不向上递交,仅用于计算检验和。


一个应用程序用 UDP,到 IP 层把数据报在划分为 4 个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传 UDP,而 IP 层仍然划分为 4 个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。
不能,IP 数据报首部有个标识字段,当数据报需要分段时,这个标识字段的值会复制到所有数据报的标识字段中,相同的标识字段最后才会重装为原来的数据报。
这里两次分段的标识字段不同,因此不能组合。
一个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。

UDP 首部格式:

在停止等待协议中如果不使用编号是否可行?为什么?
不可行,见 停止等待协议问题


为什么在TCP首部中要把TCP端口号放入最开始的4个字节?
运输层是进程与进程之间的通信,因此需要写明源端口号和目的端口号。
ICMP 报文的数据部分包含 IP 数据报的数据字段的前 8 个字节,将 TCP 首部的前 4 字节设为源端口和目的端口可以确定出现差错的连接。
为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段?
UDP 是面向报文的,对应用程序交下来的报文,添加首部后交付给 IP 层,不会拆分或合并,因此长度固定,不需要首部长度字段。
TCP 报文是面向字节流的,长度是不固定的,其首部除了固定的 20 字节外,有长度可变的选项字段,其中选项字段中包括最大报文长度 MSS(Maximum Segment Size),表示 TCP 报文段中数据字段的最大长度,使用该选项的原因如下:


IP 数据报的总长度字段为 16 位,因此 IP 数据报的最大长度为 2 16 − 1 2^{16}-1 216−1 = 65535 字节,TCP 报文为 IP 数据报的数据部分,IP 数据报的首部最少 20 字节,因此 TCP 数据报的总长度最大 65515 字节,TCP 数据报首部至少 20 字节,因此 TCP 数据报的数据部分最多 65495 字节。
如果传送的字节长度超过序号字段可能编出的最大序号,则循环使用序号,即到达最大序号后,下一个序号为 0,仍可用 TCP 传送。

源端口为 n,目的端口为 m。

还未重传就受到对更高序号的确认,则说明目的端口已收到前面的数据,因为接收方只对按序到达的最高序号给出确认。


流量控制


拥塞控制

拥塞控制与流量控制区别
