【计算机网络自顶向下】简答题习题总结(三)

文章目录

  • 第三章 传输层
    • UDP用户数据报协议
    • 可靠数据传输原理
    • 面向连接传输TCP
      • 流量控制
      • 可靠数据传输机制
    • 题目

第三章 传输层

传输层服务:在两个不同的主机的运行应用程序之间提供逻辑通信

  • 在接收主机多路分解

将接收到的数据段传递给正确的套接字【多路分解】

  • 在发送主机多路复用

从多个套接字收集数据,用首部封装数据,然后将报文段传递到网络层【多路复用】

  • TCP和UDP套接字的不同之处

TCP套接字是由源IP地址,源端口号,目标IP地址,目标端口号唯一标识的

UDP套接字是由目标IP地址和目标端口号标识的

  • 为什么TCP四元组,UDP二元组

UDP二元组
首先,UDP使用二元组(目标IP和目标端口号)即可确定一个套接字,这其中的理由是非常直观的,因为我们至少在IP地址的基础上还需要一个端口号才能实现运输层功能,而更多的内容对于UDP套接字来说也无必要。这也符合UDP的设计理念,即在网络层上附加尽可能少的功能。

为什么TCP不能用二元组
那么,为什么TCP需要使用四元组(目标IP,目标端口号,源IP,源端口号)呢?其中的区别就是TCP是面向连接的。
所谓面向连接,是指数据在发送之前要在两台主机之间先建立好连接,在整个过程中要维护连接,最后要释放连接。

如果TCP协议也使用二元组来标识套接字,那么就无法实现面向连接的特点。

假设A和B两台主机同时请求一台服务器上的80端口,如果只使用目标IP和目标端口号,那么在服务器端只会创建一个套接字。显然TCP协议就无法维护A和B各自的序号、确认号、拥塞窗口等连接参数,这就违背了面向连接的设计。

另外,面向连接使得TCP可以进行全双工通信,服务端只要将想发送的数据放入套接字即可向客户端发送信息。如果仅使用二元组来标识连接套接字,那么服务端就无法主动向客户端发送信息

  • TCP实现的协议

HTTP,FTP,SMTP,POP3,IMAP、Telnet

  • UDP实现的协议

DNS,SNMP、RIP

UDP用户数据报协议

无连接运输,发送数据报文前发送方和接收方的运输层实体没有握手

优点:

  • 应用层能更好的控制要发送的数据和发送时间
  • 无需建立连接
  • 无连接状态
  • 分组首部开销小
  • 没有拥塞控制,能用尽快的速度发送
  • UDP
  • 在IP数据报服务上增加了端口功能和差错检测功能
  • 无连接、最大努力交付、没有拥塞控制
  • 首部开销小
  • 面向报文的。发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文既不合并也不拆分,而是保留报文的边界,一次发送一个报文
  • 接收方UDP对IP交上来的UDP用户数据报,去除首部后就原封不动的交付上层应用程序
  • UDP头部包含
  • 源端口
  • 目标端口
    • 如果接收方UDP发现收到报文的目的端口不正确,就丢弃该报文,并由ICMP发送端口不可达差错报文
  • 长度
  • 校验和
    • 计算校验和的时候临时加上伪首部。伪首部包含了IPv4头部的一些信息,如源IP、目标IP,只是用来计算校验和而已。接收主机收到UDP报文后从IP首部获悉IP的地址构造伪首部进行校验和运算。
    • 伪首部的作用:
      • 第一,通过伪首部的IP地址检验,UDP可以确认该数据报是不是发送给本机IP地址的;
      • 第二,通过伪首部的协议字段检验,UDP可以确认IP有没有把不应该传给UDP而应该传给别的高层的数据报传给了UDP。

【计算机网络自顶向下】简答题习题总结(三)_第1张图片

  • UDP差错检测
  1. 从“伪头部”开始,按每16位当作一个数,逐次求和,最终得出一个32位的数;
  2. 如果这个32位的数的高16位不为0,则进行“回卷”操作。也就是,将其高16位与低16位相加,又得到一个32位的数;
  3. 重复第2步直到高16位为0。
  4. 最终,将低16位取反,得到校验和,填入checksum字段中

可靠数据传输原理

从rdt1.0一直到rdt3.0

  • rdt1.0:接收方无返回确认信息
  • rdt2.0:接收方进行检错,并发送ACK或NAK反馈给发送方
  • rdt2.1:防止重复发送方给每个分组加上序号0、1
  • rdt2.2:接收方不使用NAK,而是在ACK中加上序列号
  • rdt3.0:发送方引入定时器,超时重发

以上都是停等协议:发送方发送一个报文,然后等待接收方的响应

信道利用率很低

  • 流水线技术

解决停等协议低效的问题,允许发送方可以在等待接收方的ACK之前连续发送多个分组

流水线技术对可靠数据传输协议的影响:

  • 更大的序列号范围。连续发送的并且还没有得到ACK的多个分组必须要有唯一的序列号,否则引起混乱
  • 发送方和接收方需要缓冲区。对于发送方来说,需要缓存已经发出去但是还没有得到ACK的分组;为了实现按序递交,接收方一般也需要存储空间
  • 流水线的差错恢复有两种基本办法
  • GBN 回退N步(Go-Back-N)

允许发送方发送N个分组无需确认,流水线中最多有N个正在等待确认消息的分组,允许使用的序列号范围可以看作是一个大小为N的窗口。随着协议进行,这个窗口在序列号空间内向前滑动,也称为滑动窗口协议

累计确认:接收方不一定要对收到的数据分组逐个发送确认,而可以在收到几个数据分组后,对按序到达的最后一个数据分组发送确认。ACKn表示序号为n之前的所有数据分组都已经正确接收

发送方收到重复的确认就知道之前发送的数据分组出现了差错,于是可以不等超时计时器就立刻重传

优点:即使确认分组丢失,发送方也不必重传

如果发送方窗口大小大于编号上限,会导致接收方无法分辨新旧数据分组

  • SR 选择性重传

可靠数据传输机制及用途总结

机制 用途和说明
检验和 用于检测在一个传输分组中的比特错误。
定时器 用于检测超时/重传一个分组,可能因为该分组(或其ACK)在信道中丢失了。由于当一个分组被时延但未丢失(过早超时),或当一个分组已被接收方收到但从接收方到发送方的ACK丢失时,可能产生超时事件,所以接收方可能会收到一个分组的多个冗余拷贝。
序号 用于为从发送方流向接收方的数据分组按顺序编号。所接收分组的序号间的空隙可使该接收方检测出丢失的分组。具有相同序号的分组可使接收方检测出一个分组的冗余拷贝。
确认 接收方用于告诉发送方一个分组或一组分组已被正确地接收到了。确认报文通常携带着被确认的分组或多个分组的序号。确认可以是逐个的或累积的,这取决于协议。
否定确认 接收方用于告诉发送方某个分组未被正确地接收。否定确认报文通常携带着未被正确接收的分组的序号。
窗口、流水线 发送方也许被限制仅发送那些序号落在一个指定范围内的分组。通过允许一次发送多个分组但未被确认,发送方的利用率可在停等操作模式的基础上得到增加。我们很快将会看到,窗口长度可根据接收方接收和缓存报文的能力或网络中的拥塞程度,或两者情况来进行设置。

面向连接传输TCP

  • TCP 传输控制协议

是一种面向连接的协议,即数据传输之前要经过三次握手建立一条全双工连接,然后才能进行真正的数据传输

还提供可靠按序的字节流传输、流量控制、拥塞控制、面向字节流、全双工数据:同一个连接上的双向数据

  • 面向字节流

面向字节流,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。

  • 面向连接
  • 在数据交换前握手
  • 连接状态只在连接的两端中维护,在沿途节点中并不维护状态
  • TCP连接包括:两台主机的缓存、连接状态变量、socket
  • TCP报文段首部格式

序号字段-占4字节,TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段-占4字节,期望收到对方下一个报文段数据的第一个字节的序号

数据偏移(即首部长度)-占4位,指出TCP报文段的数据起始距离TCP报文段的起始处有多远。单位为32位字

紧急URG 为1表示高优先级、紧急数据

确认ACK 只有当ACK=1时确认号字段才有效

同步SYN =1 表示一个连接请求或连接接收报文

终止FIN 用来释放一个连接。FIN-1表示此报文段的发送端的数据已经发送完毕,要求释放运输链接

  • UDP和TCP对比
  • UDP无连接、TCP面向连接
  • UDP支持单播、多播和广播,TCP仅支持单播
  • UDP是面向应用报文的,TCP是面向字节流的
  • UDP向上层提供无连接不可靠传输服务,TCP向上层提供面向连接可靠传输服务
  • UDP用户数据报首部只有8字节,TCP报文段首部最小20字节,最大60字节
  • TCP往返时延估计和超时

如何估计RTT:

样本RTT:测量从报文段发送到收到确认的时间

样本RTT均值:

EstimatedRTT = (1 - α) x EstimatedRTT + α x sampleRTT(指数加权移动平均,α = 0.125)

设置超时

EstimatedRTT + 安全余量

样本偏离均值的估计:DevRTT = (1 - β) x DevRTT + β x |sampleRTT - EstimatedRTT| (β = 0.25)

设置超时时间间隔:

TimeoutInterval = EstimatedRTT + 4 x DevRTT

第一个样本RTT获得后,样本RTT均值 = 样本RTT,DevRTT=样本RTT/2

流量控制

发送方数据发送过快,接收方来不及接收会造成数据的丢失

**流量控制:**就是让发送方的发送速率不要太快,要让接收方来得及接收

利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制

可靠数据传输机制

  • 快速重传

超时重传增加网络时延

三次冗余ACK时,在定时器超时之前重发丢失报文段

题目

1、能为计算机网络通信提供加密防护服务的协议是( B )。

A、ARP B、SSL C、SMTP D、PPP

2、TCP是一个点对点的协议,协议双方连接的端点是应用进程端口号(

3、TCP报头中的确认号是指( A

A、传输数据的第一个字节在缓冲区中的位置编号

B、期待接收的下一个字节的位置编号

C、已连续接收的最后一个字节在缓冲区中的位置编号

D、当前接收数据的序号

4、假定主机A通过TCP连接向主机B发送一个序号为20的20字节报文段后,那么主机A收到的确认号不可能是(B

A、10 B、39 C、40 D、无法确定

5、主机甲和主机乙间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是 ( D

A.500 B.700 C.800 D.1000

6、主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了3个连续的TCP段,分别包含300字节、400字节和500字节的有效载荷,第3个段的序号为900。若主机乙仅正确接收到第1和第3个段,则主机乙发送给主机甲的确认序号是( B

A.300 B.500 C.1200 D.1400

7、TCP什么时候对报文段采用快速重传? C

A、报文段的定时器过期 B、估计往返时延过长

C、收到之前发出的一个报文段的三个重复ACK D、以上都不是

8、网络上所抓到的TCP数据报文段中,有一个字段RcvWindow,其含义和作用为(A

A、接收可用空间大小,用于流量控制 B、发送可用空间大小,用于流量控制

C、发送可用空间大小,用于拥塞控制 D、接收可用空间大小,用于拥塞控制

9、主机甲和主机乙之间已建立一个TCP连接,TCP最大段长度为1000字节,若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连接发送2个最大段后,成功收到主机乙发送的第一段的确认段,确认段中通告的接收窗口大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是( A

A:1000 B:2000 C:3000 D:4000

10、主机甲向主机乙发送一个(SYN=1,seq=3210)的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP段可能是( C

A.(SYN=0,ACK=0,seq=3211,ack=3211)

B.(SYN=1,ACK=1,seq=3210,ack=3210)

C.(SYN=1,ACK=1,seq=3211,ack=3211)

D.(SYN=0,ACK=0,seq=3210,ack=3210)

40:假设TCP Reno是一个经历如上所示行为的协议,回答下列问题。在各种情况中,简要地论证你的回答。

【计算机网络自顶向下】简答题习题总结(三)_第2张图片

(1)指出TCP慢启动运行时的时间间隔。

[1,6] [23,26]

(2)指出TCP拥塞避免运行时的时间间隔。

[6,16] [17,23]

(3)在第16个传输轮回之后,报文段的丢失是根据3个冗余ACK还是根据超时检测岀来的?

冗余ACK,因为此时拥塞窗口大小为42,发生快速重传使得拥塞窗口变为/2+3得到24

(4)在第22个传输轮回之后,报文段的丢失是根据3个冗余ACK还是根据超时检测出来的?

超时,因为拥塞窗口置为1

(5)在第1个传输轮回里,ssthresh的初始值设置为多少?

32

(6)在第18个传输轮回里,ssthresh的值设置为多少?

21

(7)在第24个传输轮回里,ssthresh的值设置为多少?

14

(8)在哪个传输轮回内发送第70个报文段?

7

(9)假定在第26个传输轮回后,通过收到3个冗余ACK检测出有分组丢失,拥塞的窗口长度和 ssthresh的值应当是多少?

7,4

(10)假定使用TCP Tahoe (而不是TCP Reno),并假定在第16个传输轮回收到3个冗余ACK。在第19 个传输轮回,ssthresh和拥塞窗口长度是什么?

TCP Tahoe的冗余后,拥塞窗口大小变为1

17时刻的窗口大小为1,ssthresh为21

19个轮回,ssthresh=21,窗口大小为4

(11)再次假设使用TCP Tahoe,在第22个传输轮回有一个超时事件。从第17个传输轮回到第22个传 输轮回(包括这两个传输轮回),一共发送了多少分组?

ssthresh = 21

1 + 2 + 4 + 8 + 16 + 21 = 52

你可能感兴趣的:(计算机网络,计算机网络,udp,网络,tcp/ip,网络协议,电子科技大学,学习)