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

第三章 传输层

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

  • 在接收主机多路分解

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

  • 在发送主机多路复用

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

  • 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。

img

  • 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是一个经历如上所示行为的协议,回答下列问题。在各种情况中,简要地论证你的回答。

(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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值