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

文章目录

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

收件人列表

收件人列表

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

cpp 复制代码
#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 << '"';
            else
                cout << str;
            (i + 1 != n) ? cout << ", " : cout << endl; 
            //最后一个不用输出逗号空格按要求输出换行
        }
    }
    return 0;
}

养兔子

养兔子

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

cpp 复制代码
#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]);
    }
}

相关推荐
SEEONTIME14 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
Zfox_14 分钟前
【Linux】进程信号全攻略(二)
linux·运维·c语言·c++
起名字真南33 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
少年负剑去33 分钟前
第十五届蓝桥杯C/C++B组题解——数字接龙
c语言·c++·蓝桥杯
cleveryuoyuo33 分钟前
AVL树的旋转
c++
神仙别闹1 小时前
基于MFC实现的赛车游戏
c++·游戏·mfc
小c君tt1 小时前
MFC中 error C2440错误分析及解决方法
c++·mfc
木向2 小时前
leetcode92:反转链表||
数据结构·c++·算法·leetcode·链表
阿阿越2 小时前
算法每日练 -- 双指针篇(持续更新中)
数据结构·c++·算法
yfs10242 小时前
压缩Minio桶中的文件为ZIP,并通过 HTTP 响应输出
网络·网络协议·http