计算机网络复习——第五章传输层

Today, ready to go home,啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

《计算机网络》(谢希仁)内容总结 (javaguide.cn)

重点知识:

Today, at home,啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

  • 进程(process) :指计算机中正在运行的程序实体。
  • 应用进程互相通信 :一台主机的进程和另一台主机中的一个进程交换数据的过程(另外注意通信真正的端点不是主机而是主机中的进程,也就是说端到端的通信是应用进程之间的通信)
  • 端口(port) :端口的目的是为了确认对方机器的哪个进程在与自己进行交互.端口又称协议端口号。端口号只有本地意义,它只是为了标志计算机应用层中的各个进程在和运输层交互时的层间接口
  • 停止等待协议(stop-and-wait) :指发送方每发送完一个分组就停止发送,等待对方确认,在收到确认之后在发送下一个分组。停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为自动重传请求 ARQ
  • 流量控制 : 就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
  • 拥塞控制 :防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
  • 运输层提供应用进程之间的逻辑通信.运输层之间的通信并不是真正在两个运输层之间直接传输数据。运输层向应用层屏蔽了下面网络的细节,它使应用进程之间看起来好像两个运输层实体之间有一条端到端的逻辑通信信道。
  • 网络层为主机提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
  • UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式。
  • TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。
  • UDP 的主要特点是 ① 无连接 ② 尽最大努力交付 ③ 面向报文 ④ 无拥塞控制 ⑤ 支持一对一,一对多,多对一和多对多的交互通信 ⑥ 首部开销小(只有四个字段:源端口,目的端口,长度和检验和)
  • TCP 的主要特点是 ① 面向连接 ② 每一条 TCP 连接只能是一对一的 ③ 提供可靠交付 ④ 提供全双工通信 ⑤ 面向字节流
  • TCP 用主机的 IP 地址加上主机上的端口号作为 TCP 连接的端点。这样的端点就叫做套接字(socket)或插口。套接字用(IP 地址:端口号)来表示。每一条 TCP 连接唯一地被通信两端的两个端点所确定。
  • TCP 使用滑动窗口机制。发送窗口里面的序号表示允许发送的序号。发送窗口后沿的后面部分表示已发送且已收到确认,而发送窗口前沿的前面部分表示不允许发送。发送窗口后沿的变化情况有两种可能,即不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口的前沿通常是不断向前移动的。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。一般来说,我们总是希望数据传输更快一些。但如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失。
  • 拥塞的概念:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。(拥塞控制是全局性的,流量控制是点到点,端到端的控制)
  • 为了进行拥塞控制,TCP 发送方要维持一个拥塞窗口 cwnd 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。
  • TCP 的拥塞控制采用了四种算法,即慢开始,拥塞避免,快重传和快恢复。在网络层也可以使路由器采用适当的分组丢弃策略(如主动队列管理 AQM),以减少网络拥塞的发生。
  • 运输连接的三个阶段,即:连接建立,数据传送和连接释放。
  • 主动发起 TCP 连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。TCP 连接采用三报文握手机制。服务器要确认用户的连接请求,然后客户要对服务器的确认进行确认。
  • TCP 的连接释放采用四报文挥手机制。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送时,则发送连接释放通知,对方确认后就完全关闭了 TCP 连接。

作业题:1 3 6 7 9   10 15 16 17 21

23 37 39 53 59   68 74 

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

地位和作用:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务

运输层的通信和网络层的通信有很大的区别。网络层提供主机之间的逻辑通信,而运输层则提供应用进程之间的逻辑通信。运输层还有复用、分用的功能,还要对收到的报文进行差错检测。
从网络层来说,通信的两端是两个主机。真正进行通信的实体是主机中的进程,是这个主机中的一个进程和另一个主机中的一个进程在交换数据(即通信)。因此严格地讲,两个主机进行通信就是两个主机中的应用进程互相通信。IP 协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信(见图 T-5-01)。因此,运输层是不可缺少的。

(运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。

必不可少:各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。

2.当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的?

这要从不同层次来看,运输层是面向连接的,而在网络层是无连接的。

3.接收方收到有差错的UDP用户数据报时应该如何处理?

简单地丢弃

4.如果应用程序愿意使用UDP完成可靠传输,这可能吗?说明理由。

可能,但这要由应用层自己来完成可靠传输,例如在应用程使用可靠传输协议。

5.端口的作用是什么?为什么端口号要划分为三种?

  • 端口是应用层中的应用进程与运输层实体进行层间交互的接口,只具有本地意义。
  • 服务器端使用两类端口号,熟知端口号和登记端口号,熟知端口号是给重要的应用程序使用的。
  • 登记端口号给没有熟知端口号的应用程序使用。
  • 客户端使用短暂端口号,这种端口号仅在客户端运行时才动态随机选择,留给客户临时使用。

6.试说明运输层中伪首部的作用。

所谓“伪首部”是指这种首部并不是 UDP 用户数据报或TCP 报文段真正的首部。只是在计算检验和时,临时添加在 UDP 用户数据报或 TCP 报文段的前面,得到一个临时的UDP 用户数据报或TCP 报文段。检验和就是按照这个临时的UDP 用户数据报或TCP 报文段来计算的。伪首部既不向下传送也不向上递交,而仅仅用于计算运输层的检验和

7.使用TCP对实时话音数据的传输会有什么问题?使用UDP在传送数据文件时会有什么问题?

TCP虽然保证可靠传输,但它的延迟大,因为一旦有分组丢失就要重传,增加时延,代价大。
UDP是不可靠的传输协议,UDP传输数据文件如果出现差错,UDP就会丢弃这个数据报,不会重传,所以数据文件有可能是错误的。

8.在停止等待协议中如果不使用编号是否可行?为什么?

不可以,分组和确认分组都必须进行编号,才能分得清哪个分组得到了确认。

9.在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。

不可行,应当返回确认帧,停止等待协议对于重复报文要重传确认。发送方没有收到确认报文就会重传,接收方就会收到重复报文,因此要发送确认让发送方知道自己接收到了报文,让其继续发送下一个。如果不予理睬,发送方就以为对方没有收到报文,就会继续发送,进而陷入死循环。

10.使用连续 ARQ 协议中,发送窗口大小是 3,而序列范围 [0, 15],而传输媒体保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是 5。试问:
(1)在发送方的发送窗口中可能有出现的序号组合有哪几种?
(2)接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。

1)全都确认5 6 7 全部丢失 2 3 4  所有可能2-7 -》 (234)(245)(456)(567)

2)2,3,4的确认分组可能还在网络中,用来确认序号为 2,3,4 的分组的。

11.主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别为 70 和 100。试问:
(1)第一个报文段携带了多少个字节的数据?
(2)主机 B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机 B 收到第二个报文段后发回的确认中的确认号是 180,试问 A 发送的第二个报文段中的数据有多少字节?
(4)如果 A 发送的第一个报文段丢失了,但第二个报文段到达了 B。B 在第二个报文段到达后向 A 发送确认。试问这个确认号应为多少?

1)100-70 = 30 70~99,共30个字节的数据

2)100(下一个报文段的序号)

3)180-100 = 80 100~179,共80字节数据

4)70, 对按序到达的最后一个分组确认,第一个报文段没到,继续第一个。

12.在 TCP 的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用? “乘法减小”和“加法增大”各用在什么情况下?

  • 慢开始:主机发送数据时,拥塞窗口设置为一个最大报文段MSS的数值。每收到一个报文段的确认,就把拥塞窗口增加一个MSS,所以每经过一个RTT,拥塞窗口cwnd就加倍。
  • 拥塞避免:当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延 RTT 就增加一个 MSS 的大小。
  • 快重传:发送端只要一连收到三个重复的 ACK 即可断定有分组丢失了,就应该立即重传丢手的报文段而不必继续等待为该报文段设置的重传计时器的超时。
  • 快恢复:发送方知道是丢失报文段,网络未拥塞,所以就将门限值调整为cwnd/2,将拥塞窗口也减半。
  • 乘法减小:不论在慢开始阶段还是拥塞避免阶段,只要超时,就将慢开始门限值 ssthresh =cwnd/2,令门限值快速下降。
  • 加法增大:执行拥塞避免算法后,经过一个RTT,cwnd+=MSS,令拥塞窗口缓慢增大,以防止网络过早出现拥塞。

13.TCP 的拥塞窗口 cwnd 大小与传输轮次 n 的关系如表所示:

在这里插入图片描述

(1)试画出如教材中图 5-25 所示的拥塞窗口与传输轮次的关系曲线。

​​​​​​​
(2)指明 TCP 工作在慢开始阶段的时间间隔。[1~6] [23~26]
(3)指明 TCP 工作在拥塞避免阶段的时间间隔。[6~16] [17~22]
(4)在第 16 轮次和第 22 轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?

  • 16的时候,下一轮次cwnd减半,应当是收到了三个ack,22的时候,下一轮次从cwnd1开始,应当是超时检测到了丢失了报文段。

(5)在第 1 轮次,第 18 轮次和第 24 轮次发送时,门限 ssthresh 分别被设置为多大?

  • 第一轮次ssthresh=32,因为超过门限值进入拥塞避免阶段;18轮次ssthresh=21,因为乘法减小,门限值等于cwnd/2=21;第24次,拥塞窗口=26的一半 13.

(6)在第几轮次发送出第 70 个报文段?

1轮:cwnd = 1  total = 1

2轮:cwnd = 2 total = 3

3轮:cwnd = 4 total = 7

4轮:cwnd = 8 total = 15

5轮: cwnd = 16 total = 31

6轮:cwnd = 32 total 63

7轮:cwnd = 33 total 96 > 70 第七十个报文段在第七轮发出。
(7)假定在第 26 轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口 cwnd 和门限 ssthresh 应设置为多大?

cwnd = 8,因为报文段丢失,则cwnd/2 = 4, ssthresh = 8/2 = 4

14.UDP 用户数据报的最小长度是多少?用最小长度的 UDP 用户数据报构成的最短 IP 数据报的长度是多少?

  •  UDP 用户数据报的最小长度是 8 字节,此时仅有首部而没有数据。
  • 用最小长度的 UDP 源用户数据报构成的最短 IP 数据报的长度为 28 字节。 IP 数据报具有 20 字节的固定首部,首部中没有可选字段。

15.TCP 连接使用 1000 字节的窗口值,而上一次的确认号是 22001。它收到了一个报文段,确认号是 22401.。试用图来说明在这之前与之后的窗口情况。

16.在 TCP 的连接建立的三报文握手过程中,为什么第三个报文段不需要对方的确认?这会不会出现问题?

在发送第三个报文段时,可以有两种选择:
(1)仅仅是确认而不携带数据,数据接着在后面发送。A 在下一个报文段发送自己的数据。但下一个报文的首部中仍然包括了对 B 的 SYN + ACK 报文段的确认。此时没影响。
(2)不仅是确认,而且携带上自己的数据。B 由于没有收到三报文握手中的最后一个报文段(A 发送的确认报文段),因此 B 就不能进入 TCP 的 ESTABLISHED 状态(“连接已建立” 状态)。B 在 “半开连接” 状态下,B 虽然已经初始化了连接变量和缓存,但是不能接收数据。通常,B 在经过一段时间后还没有收到来自 A 的确认报文段,就终止这个半开连接状态,A 就必须重新建立 TCP 连接。因此,在这种情况下,第三个报文段(A 发送的第二个报文段)的丢失,就导致了 TCP 连接无法建立。会产生影响。

17.流量控制和拥塞控制的最主要的区别是什么?发送窗口的大小取决于流量控制还是拥塞控制?

流量控制是在一条 TCP 连接中的接收端才用的措施,用来限制对方(发送端)发送报文的速率。流量控制只控制一个发送端。控制端到端的报文发送速率。

拥塞控制是用来控制 TCP 连接中发送端发送报文段的速率,以免使互联网中的某处产生过载。拥塞控制可能会同时控制许多个发送端,限制它们的发送速率。限制整个网络中的发送端报文发送速率。

发送窗口的上限值是 min [rwnd, cwnd]。接收窗口的大小体现了接收端对发送端施加的流量控制,而拥塞窗口的大小则是整个互联网的负载情况对发送端施加的拥塞控制。因此,当接收窗口小于拥塞窗口时,发送窗口的大小取决于流量控制,即取决于接收端的接收能力。但当拥塞窗口小于接收窗口时,则发送窗口的大小取决于拥塞控制,即取决于整个网络的拥塞状况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值