【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

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a