【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

本文主要是介绍【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • C/C++笔试练习
  • 选择部分
    • (1)TCP
    • (2)IP广播
    • (3)ARP协议
    • (4)IP路由器
    • (5)MAC协议
    • (6)三次握手
    • (7)TCP/IP
    • (8)TCP
    • (9)TCP/IP
    • (10)子网划分
  • 编程题 day35
    • 年会抽奖
    • 抄送列表

C/C++笔试练习

选择部分

(1)TCP

  主机甲和乙已建立了TCP连接,甲始终以MSS=1KB大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为10KB的确认段。若甲在t时刻发生超时时拥塞窗口为8KB,则从t时刻起,不再发生超时的情况下,经过10个RTT后,甲的发送窗口是()

  A.10KB
  B. 12KB
  C.14KB
  D.15KB

  答案:A

  1.把慢开始的门限值设为当前窗口的一半,即ssthresh=1/2*8KB=4KB

  2.把拥塞窗口cwnd设置为1个最大报文段MSS大小

  3.再次从慢启动阶段开始。发生拥塞后

  开始慢启动 cwnd=1KB,之后呈指数增长。

  经过1个RTT cwnd=2^1=2KB
  经过2个RTT cwnd=2^2=4KB,此时到达门限值ssthresh,之后 进入拥塞避免 阶段经过3个RTT cwnd=4+1=5KB,由于题目说之后一直都没有发生超时,cwnd会一直线性增长到接收窗口大小
  经过8个RTT cwnd=10KB,因为发送端不能超过接收端10,此后拥塞窗口一直保持cwnd=10KB.

  发送窗口大小=min(接收窗口,拥塞窗口)=10KB。

在这里插入图片描述

  

(2)IP广播

  某主机的IP地址为180.80.77.55,子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是()

  A.180.80.76.0
  B. 180.80.76.255
  C.180.80.77.255
  D.180.80.79.255

  答案:D

  180.80.77.55

  77 :0100 1101

  1.子网掩码255.255.252.0 (即11111111.11111111.11111100.00000000)网络号为连续的1,主机号为连续的0,也就是10位。

  2.然后题目要发送广播分组,所以求的是广播地址,广播地址的主机位也是全为1, 所以主机2180.80.77.55所在的广播地址就是180.80.010011(11.11111111),括号里面的是主机号,主机号全为1就是广播地址,即180.80.79.255。

  

(3)ARP协议

  ARP协议的功能是()

  A.根据IP地址查询MAC地址
  B.根据MAC地址查询IP地址
  C.根据域名查询IP地址
  D.根据IP地址查询域名

  答案:A

  当一台设备知道对方的IP地址,不知道对方的MAC 地址时,启动ARP,发送ARP Request请求广播包到其他主机,收到广播包的主机查看,只有该请求的设备才会单播回答ARP Reply响应包。

  所以ARP协议本质上是用ip地址查询MAC地址的协议。

  

(4)IP路由器

  下列关于IP路由器功能的描述中,正确的是()

  Ⅰ.运行路由协议,设置路由表
  Ⅱ.监测到拥塞时,合理丢弃IP分组
  Ⅲ.对收到的IP分组头进行差错校验,确保传输的IP分组不丢失
  Ⅳ、根据收到的IP分组的目的IP地址,将其转发到合适的输出线路上

  A.仅Ⅲ、 Ⅳ
  B.仅Ⅰ、Ⅱ、 Ⅲ
  C.仅Ⅰ、Ⅱ、Ⅳ
  D.Ⅰ、 Ⅱ、Ⅲ、Ⅳ

  答案:C

  IP层为什么不对数据部分进行差错校验?

  因为网络层是“尽最大努力完整的传输数据包”,差错检测已由数据链路层实现,IP层没必要再进行一次校验。

  优点就是,因为不负责差错检测和纠错,所以可获得较高的传输性能。

  缺点就是,因为IP层不负责差错检测,那么错误检测只能在传输层或应用层被发现,使纠正错误的时间增加了。

  

(5)MAC协议

  以太网的MAC协议提供的是()

  A.无连接不可靠服务
  B.无连接可靠服务
  C.有连接不可靠服务
  D.有连接可靠服务

  答案:A

  1.ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。

  2.ICMP协议的底层协议使用IP协议

  

(6)三次握手

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

  A.(SYN=0,ACK=0,seq=11221,ack=11221)
  B.(SYN=1,ACK=1,seq=11220,ack=11220)
  C.(SYN=1,ACK=1,seq=11221,ack=11221)
  D.(SYN=0,ACK=0,seq=11220,ack=11220)

  答案:C

在这里插入图片描述

  1.主机乙给主机甲应该回复 SYN+ACK数据包,排除A,D。

  2.由于主机甲在SYN数据报当中的序号为(seq=11220),所以主机乙给主机甲回复的确认序号是ack=11221,排除B。

  3.主机乙发送的SYN+ACK数据包的序号seq可以从任意位置开始,所以,C是正确选项。

  

(7)TCP/IP

  TCP/IP参考模型的网络层提供的是()

  A.无连接不可靠的数据报服务
  B.无连接可靠的数据报服务
  C.有连接不可靠的虚电路服务
  D.有连接可靠的虚电路服务

  答案:A

  

(8)TCP

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

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

  答案:A

  网络层提供无连接不可靠的数据报服务,例如协议。

  

(9)TCP/IP

  在TCP/IP体系结构中,直接为ICMP提供服务的协议是()

  A.PPP
  B. IP
  C.UDP
  D.TCP

  答案:B

  1.发送方的发送窗口的上限值取接收方窗口和拥塞窗口中的最小值,即min(4000,2000)=2000B,由于还未收到第二个最大段的确认,所以此时主机甲还可以向主机乙发送的最大字节数为2000-1000=1000B。

  

(10)子网划分

  某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络的最大子网个数、每个子网内的最大可分配地址个数()

  A.32,8
  B. 32,6
  C.8,32
  D.8,30

  答案:B

  一个IP的组成部分为:网络号+子网号+主机号:

  对于这样的IP 192.168.5.0/24 由/24可以知道其子网掩码默认为255.255.255.0

  按照子网掩码255.255.255.248进行划分

  二进制位: (11111111.11111111.11111111)(24表示网络号).11111(子网掩码)000,子网掩码中全1表示的网络号和子网号部分,0部分表示主机号部分。

  (11111)2二进制转换为十进制为2^5 =32 所以可以划分为32个子网,而后面有3个0,所以000-111表示的范围2^3-2(全0和全1不可用)=6。

            

编程题 day35

年会抽奖

年会抽奖

  解题思路:错排的递推公式是:D(n) = (n - 1) [D(n - 2) + D(n - 1)],也就是n - 1倍的前两项和。公式推导可以参考百度百科。通过这个递推公式可以得到在总数为n的时候,错排的可能性一共有多少种。那么要求错排的概率,我们还需要另一个数值,就是当总数为n的时候,所有的排列组合一共有多少种,那么根据排列组合,肯定是使用Ann的公式来求,也就是n的阶乘。所以结果很简单,就是用公式求出第n项的错排种类,和n的阶乘,然后两者一除,就是概率了。

#include <iostream>
#include <vector>
using namespace std;int main() 
{int n;while (cin >> n) {vector<double> arr(n);arr[0] = 0, arr[1] = 1;for (int i = 2; i < n; i++) {arr[i] = i * (arr[i - 1] + arr[i - 2]);}double base = 1;for (int i = 1; i <= n; i++)base *= i;printf("%.2lf%%\n", arr[n - 1] / base * 100);}return 0;
}

  

抄送列表

抄送列表

  解题思路:1. 通过getiine(cin, names)方法获取第一行中的所有名字 2. 解析出第一行中的所有名字保存在unordered_set中 3. 获取第二行中的名字,检测该名字是否存在,并按照题目的要求进行输出。

#include<iostream>
#include<string>
using namespace std;int main()
{string s, res;while (getline(cin, s)){getline(cin, res);bool sta = false;for (int i = 0; i < s.length(); i++){string t;if (s[i] == '"'){i++;while (i<s.length()&&s[i] != '"'){t += s[i];i++;}if (t == res){sta = true;break;}}else if (s[i] != ','){while (i<s.length()&&s[i] != ','){t += s[i];i++;}if (t == res){sta = true;break;}}}if (sta == true)cout << "Ignore" << endl;elsecout << "Important!" << endl;}return 0;
}

            

这篇关于【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996735

相关文章

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee