【C/C++笔试练习】DNS劫持、三次握手、TCP协议、HTTPS、四次挥手、HTTP报文、拥塞窗口、POP3协议、UDP协议、收件人列表、养兔子

本文主要是介绍【C/C++笔试练习】DNS劫持、三次握手、TCP协议、HTTPS、四次挥手、HTTP报文、拥塞窗口、POP3协议、UDP协议、收件人列表、养兔子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • C/C++笔试练习
  • 选择部分
    • (1)DNS劫持
    • (2)三次握手
    • (3)TCP协议
    • (4)HTTPS
    • (5)四次挥手
    • (6)HTTP报文
    • (7)拥塞窗口
    • (8)POP3协议
    • (9)UDP协议
    • (10)TCP协议
  • 编程题 day34
    • 收件人列表
    • 养兔子

C/C++笔试练习

选择部分

(1)DNS劫持

  上网的时候,访问某个网页却突然出现了某个运营商的网页(如联通、电信)。出现此问题可能的原因是?( )

  A.DNS劫持
  B.DDoS攻击
  C.MAC地址欺骗
  D.伪造DHCP服务器

  答案:A

  1.DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。

  2.DDoS攻击:分布式拒绝服务(DDoS:Distributed Denialof Service),攻击指借助于客户/服务器技术将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

  3.MAC地址欺骗:利用mac欺骗,阻止局域网内任意电脑使用网络。

  4.伪造DHCP服务器:本质上是DHCP欺骗攻击,将真的DHCP服务器的资源ip资源耗尽然后部署假的DHCP服务器,让主机向假的DHCP服务器请求。

  

(2)三次握手

  TCP建立连接的三次握手中,第二次握手发送的包会包含的标记,最正确的描述是()

  A.ACK
  B. SYN,ACK
  C.SYN,PSH
  D.SYN

  答案:B

在这里插入图片描述

  

(3)TCP协议

  当使用TCP协议编程时,下列问题哪个是必须由程序员考虑和处理的()

  A.乱序数据包的重传
  B.数据传输过程中的纠错
  C.网络拥塞处理
  D.发送数据的格式和应用层协议

  答案:D

  1.TCP本身是可靠传输的协议,支持重传,纠错,网络拥塞处理等等。

  2.TCP本身是面向字节流的协议,对于发送的有效载荷的格式并不是很关心,由应用层协议来处理发送数据的格式,应用层协议由程序猿来考虑和处理(tcp粘包的问题也是如此)。

  

(4)HTTPS

  现在有很多网站都开始选择HTTPS作为默认的协议,HTTPS的用途是()

  A.可以加速页面的加载,提高响应速度
  B.可以让服务器端主动推送消息到客户端
  C.可以确保传输数据的安全性和防篡改
  D.为了提高浏览器兼容性

  答案:C

  1.HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

  2.对使用HTTP传输的数据使用SSL进行加密传输,第三者即使从网络当中获取数据包内容,也会由于没有加密的密钥而导致无法解析传输的内容,从而达到加密的效果。

  

(5)四次挥手

  TCP断开连接的四次挥手中,第四次挥手发送的包会包含的标记,最正确的描述是()

  A.FIN
  B. FIN,PSH
  C.ACK
  D.FIN,ACK

  答案:C

在这里插入图片描述

  

(6)HTTP报文

  某浏览器发出的HTTP请求报文如下:
在这里插入图片描述

  下列叙述中,错误的是()

  A.该浏览器请求浏览index.html
  B. Index.html存放在www.test.edu.cn上
  C.该浏览器请求使用持续连接
  D.该浏览器曾经浏览过www.test.edu.cn

  答案:C

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  

(7)拥塞窗口

  主机甲和主机乙新建一个TCP连接,甲的拥塞控制初始阈值为32KB,甲向乙始终以MSS=1KB大小的段发送数据,并一直有数据发送;乙为该连接分配16KB接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未发送超时的情况下,经过4个RTT后,甲的发送窗口是()

  A.1KB
  B. 8KB
  C.16KB
  D.32KB

  答案:A

  甲方的发送窗口值=min[接收窗口,拥塞窗口]
在这里插入图片描述

  1.当前甲的4次发送数据、我们需要站在慢开始的角度来考虑,拥塞窗口的大小成指数增长,后一次是前一次的2倍。

  2.甲方发送的数据大小取决于 接受窗口和拥塞窗口的较小值。

  3.1MSS是1KB。

  当经过4个RTT(报文往返时间)之后,接收窗口的值变为16-1-2-4-8 =1所以此时,发送窗口的值为1。

  

(8)POP3协议

  通过POP3协议接收邮件时,使用的传输层服务类型是()

  A.无连接不可靠的数据传输服务
  B.无连接可靠的数据传输服务
  C.有连接不可靠的数据传输服务
  D.有链接可靠的数据传输服务

  答案:D

  1.POP3即邮件协议版本3,是TCP/IP 协议族中的一员)。

  2.该协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。

  3.属于应用层协议,传输层协议使用TCP协议。

  

(9)UDP协议

  下列关于UDP协议的叙述中,正确的是()

  Ⅰ提供无连接服务
  Ⅱ提供复用/分用服务
  Ⅲ通过差错校验,保障可靠数据传输

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

  答案:B

  UDP是不可靠,无连接,面向数据报的协议,在协议头部当中有16字节的校验和,可以校验数据在传输过程当中是否失真,但是并不保证可靠。

  传输层分用和复用就是把网络层提供的host-to-host传输服务扩展到运行于计算机上的应用进程间的传输服务也就是点对点的传输,这里的点可以理解为端口。

  分用是把运输层segment中的信息发送给正确的socket的服务。

  复用是把所有socket中的数据集中并加头信息封装,然后发送到网络层的服务。

  

(10)TCP协议

  主机甲与主机乙之间已建立一个TCP连接,双方持续有数据传输,且数据无差错与丢失。若甲收到1个来自乙的TCP段,该段的序号为1913、确认序号为2046、有效载荷为100字节,则甲立即发送给乙的TCP段的序号和确认序号分别是()

  A.2046、2012
  B. 2046、2013
  C.2047、2012
  D.2047、2013

  答案:B

在这里插入图片描述

            

编程题 day34

收件人列表

收件人列表

  解题思路:先接收到一个数字,代表接下来是多少组数据,逐个接收每个名字,如果名字中没有’,‘或者’ '则直接输出,否则在改名字前后拼接""“再输出,除过最后一个名字外,每个名字之后都有一个”, ",该组用例处理完成后换行。

#include<iostream>
#include<string>
using namespace std;int main() 
{int n = 0;while (cin >> n) {string str;getchar();//数字后面有个换行符不要忘了for (int i = 0; i < n; i++) {getline(cin, str);if (str.find(' ') != str.npos || str.find(',') != str.npos)cout << '"' << str << '"';elsecout << str;(i + 1 != n) ? cout << ", " : cout << endl; //最后一个不用输出逗号空格按要求输出换行}}return 0;
}

  

养兔子

养兔子

  解题思路:本题的兔子第二天就开始下小兔了,所以这个是从第二项开始的斐波那契数列。前90组的数据恰好还在long long的范围内,所以不需要高精度,直接long long求解。

#include <iostream>
using namespace std;/*int main() 
{int n;while (cin >> n) {long long f0 = 1, f1 = 1;long long ret = 1;for (int i = 2; i <= n; ++i) {ret = f0 + f1;f0 = f1;f1 = ret;}cout << ret << endl;}return 0;
}*/
/
// 优化:题目已经说明了,n的最大取值为90,则直接算出前90项的斐波那契额数即可
#include <iostream>
#include <cstdio>int main() 
{long long n[91] = { 1, 2 };for (int i = 2; i <= 90; i++) {n[i] = n[i - 1] + n[i - 2];}int d;while (std::cin >> d) {printf("%lld\n", n[d - 1]);}
}

            

这篇关于【C/C++笔试练习】DNS劫持、三次握手、TCP协议、HTTPS、四次挥手、HTTP报文、拥塞窗口、POP3协议、UDP协议、收件人列表、养兔子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

【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)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【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)、