首页 > 《C++面试宝典》V1.0 冲刺大厂~持续更新(11)
头像
许嵩不爱吃土豆鸭
编辑于 2021-04-21 18:21
+ 关注

《C++面试宝典》V1.0 冲刺大厂~持续更新(11)

分享面试总结,涉及C++、算法、数据结构、操作系统、计算机网络、Linux、数据库、设计模式等后面持续更新~

内容多为一问一答式,多数来自收集。整理总结,视频、书籍学习所得,如有错误请指出,万分感谢!!!
学习建议:针对八股文,不太了解的可以网上扩展,自己总结,拿来主义最好能消化成自己的。
※代表高频问题(参考)

# 网络篇---  √2

参考书籍:建议谢希仁《计算机网络》

1. 常用的网络协议,如DHCP、ARP、ICMP等?

1) DHCP
动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址给用户给内部网络管理员作为对所有计算机作中央管理的手段
2) ARP
将32位的IP地址转换为48位的物理地址。当路由器或主机选择了某条路由时,首先会查找ARP缓存,若缓存中有对应IP地址的物理地址,则以此封装以太帧,否则会广播(为二层广播)ARP报文,每个主机接收到ARP请求报文后,会缓存发送源的IP——MAC对到ARP缓存中,目的主机会发送ARP回应(此时为单播),当发送源接收到回应时,会将目的方的IP——MAC对存放在ARP缓存中。在点到点的物理连接中,是不会用到ARP报文的,在启动时双方都会通告对方自己的IP地址,此时物理层的封装不需要MAC地址。windows上可以使用arp -a查看本机的ARP缓存。ARP缓存中的每个条目的最大存活时间为20分钟
3) ICMP
ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。
请网上自行扩展!

2. 网络协议各个层的网络设备了解吗 ?


一、集线器
集线器也称HUB,工作在OSI七层结构的第一层物理层,属于共享型设备,接收数据广播发出,在局域网内一般都是星型连接拓扑结构,每台工作站都连接到集线器上。由于集线器的带宽共享特性导致网络利用效率极低,一般在大中型的网络中不会使用到集线器。现在的集线器基本都是全双工模式,市面上常见的集线器传输速率普遍都为100Mbps。

二、中继器
中继器(Repeater)工作于OSI的第一层(物理层),中继器是最简单的网络互联设备,连接同一个网络的两个或多个网段,主要完成物理层的功能,负责在两个网络节点的物理层上按位传递信息,完成信号的复制、调整和放大功能,以此从而增加信号传输的距离,延长网络的长度和覆盖区域,支持远距离的通信。
一般来说,中继器两端的网络部分是网段,而不是子网。中继器只将任何电缆段上的数据发送到另一段电缆上,并不管数据中是否有错误数据或不适于网段的数据。大家最常接触的是网络中继器,在通讯上还有微波中继器、激光中继器、红外中继器等等,机理类似,触类旁通。

三、交换机
交换机顾名思义以交换为主要功能,工作在OSI第二层(数据链路层),根据MAC地址进行数据转发。交换机的每一个端口都属于一个冲突域,而集线器所有端口属于一个冲突域。交换机通过分析Ethernet包的包头信息(其中包含了源MAC地址、目标MAC地址、信息长度等),取得目标MAC地址后,查找交换机中存储的地址对照表(MAC地址对应的端口),确认具有此MAC地址的网卡连接在哪个端口上,然后将信包送到对应端口,有效的抑制IP广播风暴。并且信息包处于并行状态,效率较高。
交换机的转发延迟非常小,主要的得益于其硬件设计机理非常高效,为了支持各端口的最大数据传输速率,交换机内部转发信包的背板带宽都必须远大于端口带宽,具有强大的整体吞吐率,才能为每台工作站提供更高的带宽和更高的网络利用率,可以满足大型网络环境大量数据并行处理的要求。

四、网桥
网桥和交换机一样都是工作在OSI模型的第二层(数据链路层),可以看成是一个二层路由器(真正的路由器是工作在网络层,根据IP地址进行信包转发)。网桥可有效的将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。

五、路由器
路由器跟集线器和交换机不同,是工作在OSI的第三层(网络层),根据IP进行寻址转发数据包。路由器是一种可以连接多个网络或网段的网络设备,能将不同网络或网段之间(比如局域网——大网)的数据信息进行转换,并为信包传输分配最合适的路径,使它们之间能够进行数据传输,从而构成一个更大的网络。
路由器具有最主要的两个功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。

六、网关
网关(Gateway)又叫协议转换器,网关的概念实际上跟上面的设备型不是一类问题,但是为了方便参考还是放到这里一并介绍。
网关是一种复杂的网络连接设备,可以支持不同协议之间的转换,实现不同协议网络之间的互连。网关具有对不兼容的高层协议进行转换的能力,为了实现异构设备之间的通信,网关需要对不同的链路层、专用会话层、表示层和应用层协议进行翻译和转换。所以网关兼有路由器、网桥、中继器的特性。
若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址。
所以,网关的作用就是将两个使用不同协议的网络段连接在一起的设备,对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。在互连设备中,由于协议转换的复杂性,一般只能进行一对一的转换,或是少数几种特定应用协议的转换。

3. 讲讲浏览器输入地址(百度)后发生的全过程,以及对应的各个层次的过程?

1.域名解析:浏览器获得URL地址,向操作系统请求该URL对应的IP地址,操作系统查询DNS(首先查询本地HOST文件,没有则查询网络)获得对应的IP地址。
解释:URL分割成几个部分:协议、网络地址、资源路径
协议:指从该计算机获取资源的方式,常见的是HTTP、FTP、HTTPS。
网络地址:可以是域名或是IP地址,也可以包括端口号,如果不注明端口号,默认是80端口。
如果地址不是一个IP地址,则需要通过DNS(域名系统)将该地址解析成IP地址,IP地址对应着网络上的一台计算机,DNS服务器本身也有IP,你的网络设置包含DNS服务器的IP,例如,www.abc.com不是一个IP,则需要向DNS询问请求www.abc.com对应的IP,获得IP,在这个过程中,你的电脑直接询问DNS服务器可能没有发现www.abc.com对应的IP,就会向它的上级服务器询问,这样依次一层层向上级找,最高可达根节点,直到找到或者全部找不到为止。

2.确认好了IP和端口号,则可以向该IP地址对应的服务器的该端口号发起TCP连接请求。
3.服务器接收到TCP连接请求后,回复可以连接请求。
4.浏览器收到回传的数据后,还会向服务器发送数据包,表示三次握手结束。
5.三次握手成功后,开始通讯,根据HTTP协议的要求,组织一个请求的数据包,里面包含请求的资源路径、你的身份信息等,例如,www.abc.com/images/1/表示的资源路径是images/1/,发送后,服务器响应请求,将数据返回给浏览器,数据可以是根据HTML协议组织的网页,里面包含页面的布局、文字等等,也可以是图片或者脚本程序等,如果资源路径指定的资源不存在,服务器就会返回404错误,如果返回的是一个页面,则根据页面里的一些外链URL地址,重复上述步骤,再次获取。
6.渲染页面,并开始响应用户的操作。
7.窗口关闭时,浏览器终止与服务器的连接。

4. http和https的区别?

参考:HTTP协议-万字好文!建议收藏 https://blog.csdn.net/bigzql/article/details/108692485
Http协议详解(深入理解) https://blog.csdn.net/weixin_38087538/article/details/82838762
1) HTTP和HTTPS的基本概念:
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
2) HTTPS和HTTP的区别
a) https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
b) http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
c) http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d) http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
e) 在OSI模型中,HTTP工作于应用层,而HTTPS工作于传输层。

扩展:了解SSL连接,对称加密和非对称加密。


5. http状态码?

1XX    信息码,服务器收到请求,需要请求者继续执行操作;
2XX    成功码,操作被成功接收并处理;
3XX    重定向,需要进一步的操作以完成请求;
4XX    客户端错误,请求包含语法错误或无法完成请求;
5XX    服务器错误,服务器在处理请求的过程中发生了错误。
具体的需要记忆

6.      HTTP1.0与HTTP1.1的区别?

1) HTTP1.0需要使用keep-alive参数来告知服务器要建立一个长连接,而HTTP1.1默认支持长连接;
2) HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401;
3) HTTP1.0是没有host域的,HTTP1.1才支持这个参数;
4) HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级;
5) HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快;
6) 对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源

7. http中,get和post区别?

1) 后退按钮或刷新,Get无害,post数据会被重新提交;
2) Get所使用的URL可以被设置为书签,而post不可以;
3) Get能够被缓存,而post不可以;
4) Get参数保留在浏览器历史中,而post参数不会保留在浏览器历史中;
5) 当发生数据时,get方法向URL添加数据,URL的数据长度是受限的,而post没有数据长度限制;
6) Get只允许ASCII编码,而post没有限制;
7) Get安全性没有post安全性好;
8) Get数据在URL中对所有人是可见的,而在post中数据不会显示在URL中。
9) Get产生一个TCP数据包,post产生两个TCP数据包;对于get方式的请求,浏览器会把header和data一并发送出去;对于post,浏览器先发送header再发送data;
10) GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

8. OSI的7层网络模型中各层的名称及其作用?

参考:CSDN 计算机网络(一)图解:计算机网络五层体系结构


9. TCP/IP的4层网络模型名称及其作用?



10. DNS协议?

1) 主机解析域名的顺序
找缓存、找本机的hosts文件、找DNS服务器
2) DNS协议运行在UDP协议之上,使用端口号53
3) 根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)

过程:
浏览器先检查自身缓存中有没有被解析过这个域名对应的ip地址;
如果浏览器缓存没有命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。在windows中可通过c盘里hosts文件来设置;
还没命中,请求本地域名服务器来解析这个域名,一般都会在本地域名服务器找到;
本地域名服务器没有命中,则去根域名服务器请求解析;
根域名服务器返回给本地域名服务器一个所查询域的主域名服务器;
本地域名服务器向主域名服务器发送请求;
接受请求的主域名服务器查找并返回这个域名对应的域名服务器的地址;
域名服务器根据映射关系找到ip地址,返回给本地域名服务器;
本地域名服务器缓存这个结果;
本地域名服务器将该结果返回给用户。

网络重在理解,如有理解不透彻的问题,建议网上查阅,以点扩面,吸收成自己的东西。

未完待续~

需资料分享,可私聊哈



全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐