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

目录

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等)。

猜你喜欢

转载自blog.csdn.net/chenlycly/article/details/130534264