C++网络基础知识面试题2

news2024/11/18 13:45:18

目录

1、使用TCP的常见协议有哪些?使用UDP的常见协议有哪些?简单说几个

2、如何判断访问目标地址的网络是通的?如何简单地查看到目标地址的网络是否有丢包和抖动?

3、如果知道目标服务器的服务端口有没有开启?

4、如何查看网卡上的地址配置信息?如何刷新系统DNS缓存?

5、使用哪个命令查看本机的网络连接及端口信息?

6、在Windows系统中如何查看系统路由表?Windows系统中有两张网卡,如何解决访问内网和外网的问题?

7、ARP地址解析协议是用来干什么的?简述一下ARP地址解析的流程

8、DNS域名服务器用来做什么的?简述一下域名解析的大体流程

9、一个完整的http请求是什么样的?简述从输入网址到获得页面的过程

10、http和https的区别

11、网络抓包分析工具wireshark了解吗?说说使用时常用的过滤条件有哪些


       无论是软件开发人员,还是测试人员,亦或是运维人员、技术支持人员,都需要掌握一些常用的基础网络知识,以用于日常网络方面问题的排查。这些基本的网络知识与概念,不仅日常工作中会用到,找工作时的笔试面试也会涉及到。大部分IT岗位在面试或笔试时都会问到这些常见的网络问题,今天就在这里详细地总结一下,以供参考。本文的内容适用于应届生、有工作经验的人。

之前系统地总结过基础网络知识,以及网络问题实例集锦,感兴趣可以去看看:

【网络入门】详解常用的基础网络知识(面试笔试常考内容)icon-default.png?t=N3I4https://blog.csdn.net/chenlycly/article/details/124433936【网络进阶】网络问题排查实例集锦(实战经验分享)icon-default.png?t=N3I4https://blog.csdn.net/chenlycly/article/details/124643918

1、使用TCP的常见协议有哪些?使用UDP的常见协议有哪些?简单说几个

       使用TCP的常见协议有:HTTP超文本传输协议、HTTPS安全超文本传输协议、SMTP简单邮件传输协议(收发邮件)、FTP文件传输协议、SSH安全外壳协议(用于加密安全登陆,替代安全性差的Telent协议)

       使用UDP的常见协议有:DHCP动态主机配置协议、TFTP简单文件传输协议、SNMP简单网络管理协议。

2、如何判断访问目标地址的网络是通的?如何简单地查看到目标地址的网络是否有丢包和抖动?

       使用ping命令即可,可以ping域名,也可以ping IP地址。

       如果软件系统在交互的过程中数据出现延时或抖动,可以在ping指令后面加上一个-t的参数,比如ping 192.168.0.1 -t,查看连续的ping包,看网络是否存在明显的延迟或抖动,如下:

3、如果知道目标服务器的服务端口有没有开启?

       使用telnet命令可以检查服务器上的端口有没有开启监听,比如telnet 192.168.100.196 7800,如果7800端口没有开启监听,则会提示连接失败。

telnet命令其实对应的是telnet客户端程序(telnet.exe),该程序使用的是telnet协议。telnet协议是TCP/IP协议族中的一员,是远程登陆服务的标准协议和主要方式,它为用户提供了从本地计算机远程登录远程主机的能力。

       如果在Windows的cmd窗口中提示找不到Telnet,需要到控制面板->程序与功能->启用和关闭Windows功能中开启Telnet客户端,如下所示:

        有时即使程序开启了端口,可能也连接不上,可能是路由器或者防火墙禁用了该端口,导致发给该端口的数据(包括连接请求)都被拦截了,此时需要在网络环境中放行该端口,即不再拦截与该端口相关的数据。

4、如何查看网卡上的地址配置信息?如何刷新系统DNS缓存?

       在Windows系统中,主要使用ipconfig命令。ipconfig命令主要用来查看网卡的配置信息,比如IP地址,子网掩码和默认网关等,一般使用ipconfig /all,如下所示:

还有比较常用的是ipconfig /flushdns命令,用来清除系统中的DNS缓存:

5、使用哪个命令查看本机的网络连接及端口信息?

        netstat命令用来查看本机的网络连接与端口占用情况,如下:

netstat命令支持多个参数,具体使用netstat /?去查看详细说明:

6、在Windows系统中如何查看系统路由表?Windows系统中有两张网卡,如何解决访问内网和外网的问题?

        route相关命令主要用来查看路由表、添加/删除路由等。首先来看看route print命令,该命令是将Windows系统中的路由表打印出来,如下图所示:

        route add命令可以往路由表中添加一条路由,route delete命令可以删除一条路由。命令具体怎么使用可以使用route /?命令查看一下参数的说明以及范例:

        一般在处理Windows系统中的多网卡问题时,会用到这些路由相关的命令。比如以前我们遇到的一个场景,Windows系统中有两张网卡,一张是连接局域网的内网网卡,一张是连接外网的外网网卡:

Windows系统中只能设置一个默认网关,外网网卡的IP和默认网关是从路由器自动获取的,肯定是有默认网关的,所以内网的网卡不能设置默认网关。如果要通过内网的网卡访问局域网中的地址,则需要使用route add命令添加策略路由来控制ip的访问走向,即通过策略路由让访问内网地址的都走内网的网关。给内网的网卡添加策略路由的命令为:

route add 172.16.0.0 mask 255.255.0.0  172.16.30.186(172.16.30.186为内网中的网关)

该命令的含义是,所以访问172.16开头的地址时,都通过内网的网关172.16.30.186走出去。

        服务器上一般都会配置多个网卡,有时也会通过添加策略路由去处理服务器之间无法访问的问题,这样的场景我们都遇到过。

7、ARP地址解析协议是用来干什么的?简述一下ARP地址解析的流程

       该arp命令主要用来显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表:

系统中会保存IP和MAC地址的映射表。其中ARP协议(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

        可以使用arp -a的命令查看系统缓存的映射表,使用arp -s保存一个IP和MAC地址的映射对,使用arp -d删除符合条件的映射对,条件中支持使用通配符,比如:arp -d 192.168.*.*。

        ARP协议,它是根据 IP 地址获取 MAC 地址的一种协议,核心原理就是广播发送ARP请求,单播发送ARP响应。关于ARP相关流程的说明如下:

(1)每个主机都在自己的ARP缓冲区中建立一个ARP列表,以表示 IP 地址和 MAC 地址之间的对应关系。
(2)当源主机要发送数据时,先检查ARP列表中是否有该 IP 地址对应的 MAC 地址,如果有,则直接发送数据;如果没有,就向本网段的所有主机发送ARP数据包,用于查询目的主机的MAC地址,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP。
(3)当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
(4)源主机收到 ARP 响应包后,将目的主机的 IP 和 MAC 地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

8、DNS域名服务器用来做什么的?简述一下域名解析的大体流程

        DNS域名服务器主要是用来请求域名对用的IP地址的,进行网络通信时,如果使用的目标地址是域名,则需要将域名转换成IP地址,然后将IP地址设置到socket套接字中(代码级的网络编程)发起通信请求。

       使用DNS系统查询IP的完整流程,这里详细说一下。DNS服务器大致分为三种类型:根DNS服务器、顶级域DNS服务器和权威DNS服务器,其中顶级域DNS服务器主要负责诸如com、org、net、edu、gov 等顶级域名。

根DNS服务器存储了所有顶级域DNS服务器的 IP 地址,可以通过根服务器找到顶级域服务器,比如百度的域名www.baidu.com,根服务器会返回所有维护 com 这个顶级域服务器的 IP 地址。然后你任选其中一个顶级域服务器发送请求,该顶级域服务器拿到域名后能够给出负责当前域的权威服务器地址。以 百度的域名为例,顶级域服务器将返回所有负责百度这个域的权威服务器地址。接着任选其中一个权威服务器地址查询“www.baidu.com”的具体 IP 地址,最终权威服务器会返回给你具体的 IP 地址。此外,本地 DNS 服务器是具有缓存功能的,通常两天内的记录都会被缓存。

        所以,通过DNS系统查询域名对应的 IP 的具体步骤可以总结为:

(1)操作系统先查本地 hosts文件 中是否有记录,如果有,则直接返回相对应映射的IP地址。
(2)如果本地hosts文件中没有配置,则主机向自己的本地DNS服务器发送查询报文,如果本地DNS服务器缓存中有,将直接返回结果。
(3)如果本地服务器缓存中没有,则从内置在内部的根DNS服务器列表(全球13台,固定的IP地址)中选一个发送查询报文。
(4)根服务器解析域名中的后缀名,告诉本地服务器负责该后缀名的所有顶级服务器列表。
(5)本地服务器选择其中一个顶级域服务器发送查询请求,顶级域服务器拿到域名后继续解析,返回对应域的所有权威服务器列表。
(6)本地服务器再向返回的权威服务器发送查询报文,最终会从某一个权威服务器上得到具体的 IP 地址。
(7)主机返回结果IP。

9、一个完整的http请求是什么样的?简述从输入网址到获得页面的过程

        从输入网址到获得页面的大概过程如下:

(1)解析url,获取 url 中包含的域名;
(2)通过DNS系统查询域名对应的IP;
(3)浏览器得到域名对应的IP地址之后,向服务器发起三次握手请求建立TCP链接;
(4)TCP链接链接建立起来后,浏览器向服务器发送http请求,如果 html文件在缓存里,浏览器则直接返回, 如果没有,则去后台拿。

10、http和https的区别

(1)http 和 https 都是基于 TCP 协议,但是 http 是使用明文传输,通讯内容可能被窃听和篡改,客户端也无法验证通讯方的身份,无法保证数据发送到正确的机器上;https 是在 http 的基础上加入了 SSL/TLS,可看成是添加了加密和认证机制的http,使用对称加密、非对称加密、证书等技术进行进行客户端与服务端的数据加密传输,最终达到保证整个通信的安全性。
(2)默认端口不同。http默认使用的是80端口,https默认使用的是443端口。
(3)资源消耗也不同。和http通信相比,https通信会由于加解密处理消耗更多的CPU和内存资源。

11、网络抓包分析工具wireshark了解吗?说说使用时常用的过滤条件有哪些

        现代的软件系统都是基于网络的,客户端软件需要通过网络和远端的服务器进行数据通信。远端的服务器可能是部署在局域网中的,也可能是部署在公网上。通过网络进行通信,就会出这样那样的与网络有关的一些问题客户端软件与服务器之间的交互数据都是通过网卡发送到网络上,进而送达到对端的。wireshark可以抓取目标网卡上收到和发出去的网络数据包,在开启抓包时选择要在哪个网卡上抓包(可能机器上有多张网卡)。

        通过抓包可以分析网络故障问题,查看收发的数据内容是否正确等。可以使用目标ip和源ip地址进行过滤,也可也使用端口过滤,也可以使用协议过滤(比如TCP、UDP、http、websocket、xmpp等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NodeJs】使用Express框架快速搭建一个web网站

如果电脑有安装使用Nodejs,用得次数少的话,忘了怎么弄,可以看看这个文章,按照步骤,能快速搭建一个web网站服务器, 首先,你需要保证电脑系统有安装了Node.js,然后可以用VsCode开发工…

Java多线程基础概述

简述多线程: 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 正式着手代码前,需要先理清4个概念:并发,并行,进程&#…

ChatGPT带你领略自动驾驶技术

一、自动驾驶技术现概述 自动驾驶技术是指利用计算机、传感器和其他设备,使车辆能够在不需要人类干预的情况下自主行驶的技术。目前,自动驾驶技术已经在一些汽车厂商和科技公司中得到广泛应用,但仍然存在一些技术和法律上的挑战,需…

c++类友元函数理解(图、文、代码)

序: 1、初学c,理解阶段,一下为个人理解和案例,陆续更新 一、友元函数和普通函数区别 类的友元函数是函数,但是他可以调用类的私有变量,以下代码,Fun2是报错的,因为这个函数跟A没任…

基于SSM框架流浪动物救助及领养管理系统(spring+springmvc+mybatis+jsp+jquery+layui)

一、项目简介 本项目是一套基于SSM框架流浪动物救助及领养管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&…

java错题总结(28-30页)

------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- 不考虑类加载, --------------------------------------------…

实验三 磁盘调度算法设计

实验三 磁盘调度算法设计 实验目的: 通过对磁盘调度算法的设计,深入理解提高磁盘访问速度的原理。 实验内容: 模拟实现磁盘调度算法:最短寻道时间优先(SSTF)和扫描(SCAN)算法。 …

数字化转型导师坚鹏:企业数字化转型培训如何高效推进评价与改进

企业数字化转型培训如何高效推进、评价与改进 ——以推动企业数字化转型战略落地为核心,实现知行果合一 课程背景: 很多企业都在开展企业数字化转型培训工作,目前存在以下问题急需解决: 不清楚如何有效推进企业数字化转型培训…

JavaScript 箭头函数

(许多人所谓的成熟,不过是被习俗磨去了棱角,变得世故而实际了。那不是成熟,而是精神的早衰和个性的消亡。真正的成熟,应当是独特个性的形成,真实自我的发现,精神上的结果和丰收。——周国平&…

Vue|内置指令

Vue的内置指令是带有v-前缀的特殊属性,它的作用是当表达式的值改变时将其一系列连带影响,响应地作用于DOM元素。 推荐专栏:微信小程序实战开发专栏 内置指令v-text指令v-html指令v-cloak指令v-once指令v-pre指令 内置指令 开始前的准备&#…

虹科方案 | CEMEX 使用HK-Edgility 智能边缘计算平台简化其企业 WAN 管理和运营

一、应对价值 130 亿美元的跨国企业的网络挑战 “我们选择 Edgility 是因为其卓越的管理和协调功能,它为我们提供了一个端到端的工具集,可以经济高效地部署和管理我们边缘设备的生命周期。” —— Fernando Garcia -Villaraco Casero, CEMEX 全球IT 战略…

玩家必看!这三款简单好玩的免费小游戏平台!

在这个飞速发展和高度竞争的时代,人们的日程表已经被各种事情排满。时间的紧迫使得我们不可能一刻都停歇下来,正因为如此,我们才需要适当地放慢自己的步伐,寻找些许休闲娱乐的机会来放松自己。 现如今,越来越多的小游…

VSAN 6.7虚拟机精简置备盘空间不回收

原创作者:运维工程师 谢晋 VSAN 6.7虚拟机精简置备盘空间不回收 前提 前提 客户VSAN6.7环境,做了Horzion7.4,近期发现虚拟机存储空间越来越大,远远超过了已分配的磁盘空间大小,发现是数据写入系统内即使删除了数据…

25个著名的WordPress网站案例

想创建免费网站吗?从易服客建站平台开始 500M免费空间,可升级为20GB电子商务网站 创建免费网站 WordPress 内容管理系统为全球35%的网站提供支持。鉴于目前有 17 亿个站点,并且还在增加,您可以算出每秒向网站访问者提供内容的W…

【C++】map和set的介绍+使用

前言: 我们前面一起学习了二叉搜索树,这便是为了引入本章我们所学的map和set容器。map和set的底层实现就和二叉搜索树有关... 目录 (一)键值对的引入 (1)关联式容器 (2)键值对 …

NVIDIA GPU Driver, CUDA 和 PyTorch的版本关系

我们在进行深度学习环境配置的时候,会遇到各种各样的问题。有各种各样的驱动、包需要安装。不同驱动和包之间的还存在版本适配问题,刚入手的同学会一脸懵逼。配置环境成了入门的第一道门槛。我现在总结了NVIDIA 显卡 Anaconda资源库 PyTorch深度学习框…

Packet Tracer - 配置扩展 ACL - 场景 2

Packet Tracer - 配置扩展 ACL - 场景 2 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 RTA G0/0 10.101.117.49 255.255.255.248 不适用 G0/1 10.101.117.33 255.255.255.240 不适用 G0/2 10.101.117.1 255.255.255.224 不适用 PCA NIC 10.101…

No primary or single public constructor found for interface java.util.List

我的爆错原因是途中ids忘记标注注解PathVariable了,因为要传入一系列的整数的列表对象到路径/emps/deleteEmps/{ids}中,所以我这里就是加上注解PathVariable就OK了。

TAPD使用规范

目录 https://www.bilibili.com/?spm_id_from333.788.0.0我该如何理解这段网址? ?spm_id_from333.788.0.0:表示查询字符串,用于向服务器传递额外的参数信息。在这个例子中,该查询字符串可能用于追踪网站访问来源或统计数据分析…

windows权限维持之计划任务

schtasks常用参数: /Create 创建新计划任务。 /Delete 删除计划任务。 /Query 显示所有计划任务。 /Change 更改计划任务属性。 /Run 按需运行计划任务。 /End 中止当前正在运行的计划任务。 …