【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++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、