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

news2024/11/9 4:03:46

文章目录

  • 第三章 传输层
    • 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。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程与轻进程(OS)

目录 1、进程的引入 2、线程的概念 3、线程的结构 3、线程控制块 5、线程的实现 (1)用户级别线程 (2)核心级别线程 (3)混合线程 6、线程的应用 1、进程的引入 进程切换 上下文涉及内容多&#xf…

软件测试面试,从简历到面试常问,不学几招怎么跳槽?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试环节…

关于Java多线程不安全的问题简析

在了解多线程不安全的问题之前 让我们先来看如下代码 public class demo18 {public static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(()->{for (int i 0; i < 10000; i) {count;}});Thread t2 new …

软件测试报告需要做哪些测试内容?软件测试外包服务公司靠谱吗?

在软件开发领域中&#xff0c;测试是最为重要的环节之一&#xff0c;它在确保软件质量方面有着至关重要的作用。软件测试是一种检验软件代码是否符合设计和用户期望的过程。软件测试的主要目的是发现缺陷并确保软件在实际使用中的可靠性&#xff0c;安全性&#xff0c;以及稳定…

Linux中centos修改系统时间并写到硬件,Linux中centos设置定时自动同步网络时间

文章目录 前言一、centos修改系统时间并写到硬件1.1查看当前的系统时间1.2修改系统时间1.3查看硬件时间1.4同步系统时间和硬件时间1.5本地时间写入硬件时间 二、centos设置定时自动同步网络时间2.1安装ntpdate工具2.2CentOS安装/操纵crontab2.3启动crontab并查看状态2.4写一个c…

Ubuntu系统安装Mysql服务并设置远程连接-Navicat连接Mysql-物联网系统

目录 一、前言 二、Mysql的安装 三、Mysql服务管理 四、配置Mysql远程连接 五、修改登录限制 六、修改Root密码 七、Navicat连接Mysql 一、前言 在我们购买服务器后&#xff0c;常需要在服务器上部署数据库以存储我们所需要的数据&#xff0c;因此我们本文将在Ubuntu系统…

LeetCode - #81 搜索旋转排序数组 II

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅&#xff08;Netflix 增长黑客&#xff0c;《iOS 面试之道》作者&#xff0c;ACE 职业健身教练。&#xff09;的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…

解决阿里云服务器被植入挖矿脚本过程

文章目录 前言一、服务器为什么会被告警挖矿&#xff1f;二、怎么解决&#xff1a;1.top 命令查看进程cpu 占用情况&#xff1a;2.通过pid进程号&#xff0c;查找改程序所在的目录&#xff1a;3. 强制删除脚本文件&#xff1a;4. 强制杀死进程&#xff1a;5. 检查是否有脚本的定…

three.js物体纹理及其常用属性介绍

一、Three中的纹理和材质介绍 THREE中的纹理和材质是用来渲染3D场景中的物体表面的。纹理贴图定义物体表面的颜色和外观&#xff0c;而材质则定义物体表面如何反射光线。 纹理可以使用多种类型的图像文件&#xff0c;包括JPEG、PNG、GIF等。纹理可以是简单的颜色、图案或者是复…

史上最卷618背后:国产手机厂商突围的“新武器”

智能手机&#xff0c;究竟还是不是个好生意? 这个问题在近些年被市场反复追问&#xff0c;在最近被称为“史上最卷”的618期间&#xff0c;更是被增添了悲观的色彩。IDC中国研究经理郭天翔表示&#xff0c;本次618智能终端市场是低于预期的&#xff0c;同时也低于去年同期。除…

Qt6.2教程——1.Qt安装及编写登录界面

本文旨在帮助读者理解如何使用ChatGPT来辅助安装和学习Qt 6.2。我们将从Qt 6.2的基本概念开始&#xff0c;然后深入了解其安装过程&#xff0c;并探讨如何使用ChatGPT作为一个强大的辅助工具。对于那些寻求在学习和使用Qt 6.2中找到有效支持的人来说&#xff0c;这篇文章将提供…

FBM207C RH917GY将相关调节系统打到手动状态,必要时到现场进行调节

​ FBM207C RH917GY将相关调节系统打到手动状态&#xff0c;必要时到现场进行调节 FBM207C RH917GY将相关调节系统打到手动状态&#xff0c;必要时到现场进行调节 随着自动化水平的提高&#xff0c;dcs控制系统(集散控制系统)逐渐代替了常规仪表&#xff0c;其优越性已被广大操…

Vue 常用属性

数据属性 组件的 data 选项是一个函数&#xff08;data里面是有return的&#xff09;。Vue 会在创建新组件实例的过程中调用此函数&#xff08;将里面定义的变量都放到实例里面去&#xff0c;你就可以使用this点出来&#xff0c;包括HTML里面就能够使用这些变量的&#xff09;。…

LabVIEW开发航空航天器风洞的数据采集系统

LabVIEW开发航空航天器风洞的数据采集系统 空气动力及其系数的评估是航空航天器设计中的一项基本任务&#xff0c;对于考虑制造高效飞行器非常重要。航空航天器的效率是根据其稳定性、最小阻力和更高的机动性来定义的。在风洞中使用航空航天飞行器模型进行测试&#xff0c;而不…

【Leetcode】11.盛最多水的容器

一、题目 1、题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例1: 输…

Nautilus Chain:模块化Layer3的先行者

“模块化特性的 Nautilus Chain 正在成为 Layer3 的早期定义者之一&#xff0c;并有望进一步推动区块链更广泛的应用与实践 ” 自以太坊创始人 Vitalik Buterin 在去年提出 Layer3 的概念后&#xff0c;行业始终对“Layer3”进行讨论&#xff0c;并期望推动该概念&#xff0c;从…

mysql版本5.5.*升级为5.7.*,遇到的问题和解决方法都来看看吧,最终升级成功~

背景&#xff1a;由于项目比较老&#xff0c;用的数据库版本也是相当低&#xff0c;现在业务需求需要做数据同步&#xff0c;使用FlinkCDC的时候报数据库版本低&#xff0c;查询FlinkCDC要求的最低版本后果断升级mysql~ FlinkCDC对mysql最低版要求如下图&#xff1a; &#x…

excel导出百万数据与进度条展示

前言 需求&#xff1a;用户在UI界面上选择想要导出的列&#xff0c;然后点击导出按钮&#xff0c;就能导出用户想要的数据。 效果展示 可能会产生的问题 1.如果同步到数据&#xff0c;接口很容易造成超时。 2.如果把数据一次性装载到内存里&#xff0c;很容易造成OOM与GC。 3…

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

目录 第二章 应用层 HTTP FTP文件传输协议 电子邮件 域名系统DNS 内容分发网络CDN 常考问题 题目 第二章 应用层 HTTP 网页&#xff08;Web页&#xff0c;或称文档&#xff09;由许多对象组成&#xff0c;每个对象被一个URL(Uniform Resource Locator统一资源定位符)寻…

帅呆!接口开发不用写Controller、Service、Dao、Mapper、XML、VO,全自动生成

今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框架&#xff0c;编写接口将通过 magic-api 提供的 UI 界面完成&#xff0c;自动映射为 HTTP 接口&#xff0c;无需定义 Controller、Service、Dao、Mapper、XML、VO 等…