牛客面试宝典网络问题总结:

  • 1、你知道TCP协议、IP协议、HTTP协议分别在哪一层吗?
  • 2、OSI七层协议模型、TCP/IP四层模型和五层协议体系之间的关系
  • 3、简单描述一下,TCP的连接(三次握手)和释放过程(四次挥手)。
  • 4、为什么要三次握手?
  • 5、谈一下,为什么tcp为什么要建立连接?
  • 6、请你解释一下TCP为什么可靠一些
  • 7、请说明一下哪种应用场景会使用TCP协议,使用它的意义
  • 8、解释一下,http请求中的304状态码的含义
  • 9、请你说明一下,SSL(Secure Sockets Layer 安全套接字协议)四次握手的过程
  • 10、请你讲讲http1.1和1.0的区别
  • 11、请谈一下,你知道的http请求,并说明应答码502和504的区别
  • 12、请说明一下http和https的区别
  • 13、请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程。
  • 14、请简单解释一下,arp协议和arp攻击
  • 15、什么是icmp协议,它的作用是什么?
  • 16、请你讲一下路由器和交换机的区别?
  • 17、请你谈谈DNS的寻址过程
  • 18、请你简单讲解一下,负载均衡 反向代理模式的优点、缺点

1、你知道TCP协议、IP协议、HTTP协议分别在哪一层吗?

答:传输层、网络层、应用层。

注:其实TCP/IP模型就是4层结构,下面的硬件层和网络接口层不再具体细分分,就是网络接口层。

2、OSI七层协议模型、TCP/IP四层模型和五层协议体系之间的关系

名称 内容
OSI七层协议模型 OSI的七层协议主要包括:物理层(physical layer)、数据链路层(data link layer)、网络层(network layer)、运输层(transport layer)、会话层(session layer)、表示层(presentation layer)、应用层(application layer)。
TCP/IP四层协议模型 TCP/IP是一个四层的体系结构,他包括(从下到上顺序):网络接口层、网际层(用网际层这个名字是强调这一层是为了解决不同的网络的互联问题)、运输层、应用层。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有具体内容。
五层协议体系结构 五层体系的协议结构是综合了OSI和TCP/IP的优点的一种协议,包括(从下到上):物理层、数据链路层、网络层、运输层、应用层。(最底下两层可以称为网络接口层) 注:五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是TCP/IP四层体系结构。

OSI由于体系比较复杂,而且设计先于实现,有许多设计过于思想,不太方便计算机软件实现,因而完全实现OSI参考模型的系统不多,应用的范围有限。而TCP/IP协议最早在计算机系统中实现,在Linux、Windows平台中都有稳定的实现,并且提供了简单方便的编程接口(API),可以在其上开发出丰富的应用程序,因此得到了广泛的应用。TCP/IP协议已成为目前互联网事实上的国际标准和工业标准。

每一层的协议如下:

  1. 物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器)
  2. 数据链路层:PPP、FR、HDLC、VLAN、MAC(网桥、交换机)
  3. 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(交换机)
  4. 传输层:TCP、UDP、SPX
  5. 会话层:NFS、SQL、NETBIOS、RPC
  6. 表示层:JPEG、MPEG、ASII
  7. 应用层:HTTP、DNS、Telnet、SMTP、WWW、NFS

每一层的作用如下:

  1. 物理层:主要定义物理设备标准,例如网线的接口类型、光线的接口类型、各种传输介质的传输速率等。它的主要作用是传入比特流(1、0信号转化为电流强弱来进行传输,到达目的地后再转换为1、0,也就是常说的数模转换与模数转换)。这一层的数据也叫做比特流。
  2. 数据链路层:定义了如何让数据格式化传输,以及如何控制对物理介质的访问。这一层通常还提供了错误的检测和纠正,以保证数据的可靠传输。
  3. 网络层:主要管理在不同地理位置的网络中的两个主机之间提供连接和路径选择。
  4. 传输层:定义了一些传输数据的协议和端口号(WWW端80等),如:TCP(传输控制协议TCP,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)和UDP(用户数据报协议UDP,与TCP特性恰恰相反,用于传输可靠性要求不高、数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要将从下层接收的数据进行分段和传输,到达目的地后再进行传输。常常把这一层数据叫做段。
  5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的道路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要相互认识可以是IP地址也可以是MAC地址或者主机名)。
  6. 表示层:可以确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台程序计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通用格式来实现多种数据格式之间的转换。
  7. 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(如:电子邮件、文件传输和仿真终端)提供网络服务。

3、简单描述一下,TCP的连接(三次握手)和释放过程(四次挥手)。

TCP报文头部内容:

六个标志位:
控制位URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
控制位ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
控制位PSH:push标志,为1指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
控制位RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
控制位SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
控制位FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

TCP运输连接有三个阶段:连接建立、数据传送、连接释放
TCP连接过程通常叫做握手,握手需要客户端和服务器端交换三个报文,如下图所示。之所以需要三次握手是因为TCP是可靠传输,三次能够刚好可靠又不多余。
TCP三次握手与Socket的连接过程是相关联对应的,Socket就是对于TCP/IP的封装。
客户端有CLOSED、SYN-SEND、ESTABLISHED三种状态,
服务器有CLOSED、LISTEN、SYN-RCVD、ESTABLISHED四种状态

服务器会首先创建连接,并且进入监听等待阶段,等待客户端的请求
当需要发送请求时,浏览器客户端主动打开连接,然后服务器被动打开连接

连接过程

  1. 客户端在需要时,向服务器发起请求连接报文,发出后状态从CLOSED转换为SYN-SEND(同步-已发送状态)。
  2. 服务器一直处于LISTEN状态,接收到请求后,对客户端的请求进行回应,转换为SYN-RCVD(同步-已收到状态)。
  3. 客户端收到服务器的回应后,状态转换为ESTABLISHED(建立连接状态),并且再次向服务器发送确认。
  4. 服务器收到客户端的确认之后,服务器也转换为ESTABLISHED状态,完成了连接。

发出消息或者收到消息后状态才会进行切换,客户端与服务器的握手是一个往复确认的过程。
三次握手过程:

第一次握手:
发出确认请求,SYN=1,seq=x,你听得到么,我想建立连接(SYN=1),我的序号是x(seq=x)然后,客户端进入SYN_SEND状态,等待服务器的确认;
第二次握手:对请求进行确认,也就是回应,我听到了(ACK=1,ack=x+1),你听得到么(SYN=1),我的序号是y(seq=y),此时服务器进入SYN_RECV状态;
第三次握手:对服务器的回应进行确认,我听到了(ACK=1,ack=y+1),我的序号是x+1,客户端和服务器端都进入ESTABLISHED状态。

IP数据报经过运输层需要分段发送,所以在TCP的处理过程中,有序号的概念。
比如客户端说我要从666号开始,发送100个数据,服务器说,我是从888号开始回应的
上面的seq=x 和 seq=y seq=x+1(上一个seq=x,下一个自然就是seq=x+1了)都是各自的序号。
握手的过程就是SYN seq ACK ack的来回确认
SYN ACK是头部的字段,可以理解为标志位,协议中有对他们的值有具体的规定;
ack就是确认号,确认号是期望收到的对方的下一个报文段的第一个数据字节的序号,也就是收到的序号+1,否则随便一个,怎么对得上号。
TCP的四次挥手:
连接建立以后就可以进行数据通信传输了
通信结束后,需要断开连接,断开连接需要四次交互,常被称为四次挥手
最初状态均为ESTABLISHED,客户端与服务器相互进行数据传送
下图假设客户端无数据发送,请求断开连接

断开过程:

第一次挥手:客户端无数据发送时,请求关闭连接,我好了,我想断开连接了(FIN=1)我的序号是u(u就是之前传送过的所有数据的最后一个字节的序号+1);此时客户端转变为FIN-WAIT-1状态。
第二次挥手:服务器收到客户端的消息后,告诉客户端“好的,我知道了”(ACK=1,ack=u+1),这条消息的序号是v(seq=v,这是服务器发送消息的序号);此时服务器的状态就转换为了CLOSE-WAIT状态(此时,客户端通往服务器的路就断开了,客户端不能向服务器发送数据,但是服务器仍旧可以向客户端发送数据,现在是“半关闭”的状态)当客户端收到来自服务器的确认之后,进入FIN-WAIT-2状态,等待服务器那边说断开连接,等待中。。。。。
第三次挥手:当服务器所有的数据也都完全发送完成了之后,服务器才开始主动告知客户端断开连接(FIN=1,seq=w)这中间服务器可能又继续发送了一些数据,可能是v+1 也可能发送了更多,所以设置为w,并且再次发送确认信息(ACK=1,ack=u+1,因为客户端已经不能发送数据了,服务器期望收到的序号永远都是最后一个序号+1,也就是u+1);这时,服务器就进入了LAST-ACK状态,最后确认状态
第四次挥手:客户端收到了服务器的断开连接请求后,也需要给出确认响应(ACK=1,ack=w+1,seq=u+1),然后进入TIME-WAIT状态,等待两个MSL(MSL 是Maximum Segment Lifetime英文的缩写“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃)后,进入关闭状态。服务器最终收到来自客户端的确认信息后,关闭,进入CLOSED状态。

(1)主机1(可以使客户端,也可以是服务器端)发送一个FIN报文段(包含终止标志位FIN=1,序列号u),用来关闭主机1到主机2的数据传送。
(2)主机2收到FIN,返回一个ACK,确认序号为收到的序号加1。
(3)主机2发送一个FIN给主机1,请求关闭连接。
(4)主机1收到FIN后,发回ACK报文确认,并将确认序号设置为收到序号加1。主机2收到ACK后就关闭连接;此时,主机1等待2MSL后依然没收到回复,就关闭连接。

四次挥手也是一个互相确认的过程,你说不玩了,别人答应了,还要等别人都搞好了再告诉你可以走了,你才能走
客户端:我不想玩了
服务器:好的我知道了
服务器:你可以走了
客户端:好的我走了
这个过程很好理解,客户端发出请求后,并不意味着服务器都已经完成响应,所以当客户端请求断开时,并不能立即断开,还需要等待服务器那边处理妥当,再来通知你的确是可以断开了

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。

服务器出现大量COLSE_WAIT状态的原因?
这时候很可能是因为程序中在收到FIN=1的TCP报文后,由于忙于读或者写,没有去及时发送FIN回来,也就是无法及时关闭连接。这时候需要着重检查释放资源的代码和处理请求的线程配置,有可能是代码中有资源没有被释放掉,也有可能是线程池中的线程数不合理等等

4、为什么要三次握手?

已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。

5、谈一下,为什么tcp为什么要建立连接?

建立连接本质就是为了提高传输的可靠性。引入了许多得办法,如 序号,确认号,3次握手,4次释放连接,滑动窗口协议,超时重传机制,慢启动与拥塞避免等。虽然我们在应用程序里也能实现可靠的传输,但那是应用程序的事情,而不是协议的事情。最为重要的是,如果协力实现了可靠性,那么应用程序的任务就简单了,因为应用程序毕竟是在协议之上开发的。这样给程序员也带来得好处,可以专心的开发应用程序了。

6、请你解释一下TCP为什么可靠一些

三次握手
重传机制: TCP 实现可靠传输的方式之一,是通过序列号与确认应答,针对数据包丢失的情况,会用重传机制解决。超时重传:例子在三次握手里,时间设置要权衡往返时间。
滑动窗口机制: 最初始的信息传递就是一问一答,一个seq回应一个ack,然后再发seq,这样效率不高。为了提高效率,几个seq一起发,这就是滑动窗口。滑动窗口是在缓冲区的基础上建立的,一方发一方接,为什么要发?是为了让对方接。所以窗口大小是根据接收方缓冲区大小来确定的。
**拥塞控制:**在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但是一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断地放大。这就是拥塞。为了避免这样的悲剧发生,要及时控制数据包的发送量。这就是拥塞控制。有这么几个概念:慢启动、拥塞避免、拥塞发生、快速恢复

7、请说明一下哪种应用场景会使用TCP协议,使用它的意义

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
意义: 如果网络中的传输只是数据量小的信息的话,那么其实我们使用udp即可,但日常生活中,我们经常需要在网络中传输大的字节流,比如大的文件。如果在传输过程中文件的某部分内容丢失,将导致文件内容不完整;所以,tcp的存在必不可少。

8、解释一下,http请求中的304状态码的含义

答:304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。
扩展:

  1. http请求常见的状态码
  2. Googlebot: Google的机器人,或蜘蛛。一般Google会让不同的Googlebot来对你的网页内容进行处理

9、请你说明一下,SSL(Secure Sockets Layer 安全套接字协议)四次握手的过程

背景:超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

答:
1、客户端(通常是浏览器)请求建立SSL链接,请求包括:协议版本,客户端随机数,加密方法,压缩方式;
2、服务器确认支持协议版本,如果不支持则关闭加密通道;确认加密方式(从算法列表中选取响应的算法),生成随机数;返回服务器证书
3、客户端收到服务端的回复,确认证书是否合法,如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。
4、服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后,向客户端最后发送下面信息。
(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
此后,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。

10、请你讲讲http1.1和1.0的区别

1、缓存处理。在HTTP1.0中主要使用header里的IMS(If-Modified-Since),Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
2、带宽优化及网络连接的使用。 HTTP1.0中,存在浪费带宽的现象,例如客户端只是需要某个对象的一部分,但服务器却把整个对象送过来了,并且不支持断点续传的功能;HTTP1.1则在请求头中引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便开发者自由的选择以便于充分利用带宽和连接。
3、错误通知的管理。 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源当前的状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
4、Host头处理。 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以请求存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址;HTTP1.1的请求消息和相应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
5、长连接。 HTTP1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和相应,减少了建立和关闭的消耗和延迟,在HTTP1.1中默认开启Connection:keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

11、请谈一下,你知道的http请求,并说明应答码502和504的区别

1、GET方法:用于使用给定的URL从给定服务器中检索信息,即向特定的资源发出请求

GET请求的URL中发送查询字符串(名称/值对),需要这样写:/test/demo_form.php?name1=value1&name2=value2

2、HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

3、POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。

4、PUT:向指定资源位置上传其最新内容。

5、DELETE:用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容。

6、CONNECT:用来建立到给定URI标识的服务器的隧道;它通过简单的TCP/IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。

7、OPTIONAL:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。

8、TRACE:回显服务器收到的请求,主要用于测试或诊断。

虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。

502: 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

504: 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应

12、请说明一下http和https的区别

  1. http是明文传输,https是加密的安全传输;
  2. http连接很简单,没有状态;https是ssl加密的传输,身份认证的网络协议,相对http传输比较安全;
  3. 连接的端口不一样,http是80,https是443;
  4. https协议需要到ca申请证书,需要一定经济成本。

13、请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程。

1、DNS(Domain Name Server)域名解析: 浏览器查询 DNS,获取域名对应的 IP 地址;

2、TCP连接: 浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手;

3、发送HTTP请求: TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求;

4、服务器处理请求并返回HTTP报文: 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器。

5、浏览器解析渲染页面: 浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

6、TCP断开连接: 为什么现在结束?浏览器在解析过程中,如果遇到请求外部资源时,如图像,iconfont,JS等。浏览器将重复1-5过程下载该资源。

14、请简单解释一下,arp协议和arp攻击

ARP地址解析协议:将IP地址解析为以太网MAC地址(物理地址)的协议。
ARP攻击的第一步就是ARP欺骗。ARP协议基本没有对网络的安全性做任何思考,当时人们考虑的重点是如何保证网络通信能够正确和快速的完成——ARP协议工作的前提是默认了其所在的网络是一个善良的网络,每台主机在向网络中发送应答信号时都是使用的真实身份。不过后来,人们发现ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。

15、什么是icmp协议,它的作用是什么?

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

16、请你讲一下路由器和交换机的区别?

1、工作层次不同:交换机比路由器更简单,路由器比交换器能获取更多信息

交换机工作在数据链路层,而路由器工作在网络层

2、数据转发所依据的对象不同

交换机的数据转发依据是利用物理地址或者说MAC地址来确定转发数据的目的地址

而路由器是依据ip地址进行工作的

3、传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

17、请你谈谈DNS的寻址过程

(1)检查浏览器缓存、检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。

(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。

(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:

如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性。

如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性。

(4)如果本地DNS服务器也失效:

如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如http://baidu.com)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成。

如果采用转发模式(递归),则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成。

18、请你简单讲解一下,负载均衡 反向代理模式的优点、缺点

扩展:秒懂负载均衡与反向代理Link
(1)反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

(2)反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

(3)反向代理负载均衡能以软件方式来实现,如apache mod_proxy、netscape proxy等,也可以在高速缓存器、负载均衡器等硬件设备上实现。反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度,提供有益的性能;由于网络外部用户不能直接访问真实的服务器,具备额外的安全性(同理,NAT负载均衡技术也有此优点)。

(4)其缺点主要表现在以下两个方面

反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。

针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈。

一般来讲,可以用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,如search等。

计算机网络面试_笔试_牛客网总结相关推荐

  1. 校招linux基础知识,校招笔试整理 牛客网 2020小米校招(1)

    前端 笔试 选择 牛客网 2020小米校招(1) 2020小米校招 localStorage和cookie 在现代浏览器中, cookie可以在跨域请求中被携带在请求头中 localStorage被设 ...

  2. 产品真题笔试题目--牛客网

    顺丰科技–产品 你为什么想做产品经理,从性格.兴趣.目标三方面简要描述. 我适合产品经理这种工作性质, 1.性格: 喜欢并善于与人交际,管理过团队,能协调好伙伴的工作和情绪(认知班长,学院学生会副部长 ...

  3. 牛客网刷算法题的输入输出(C++)

    内容简述 该篇文章将对牛客网刷题中关于输入输出的一些问题作一个总结.每年互联网公司的招聘都必不可少会有算法题,因此平时很多人都会去一些刷题网站进行刷题来学习.这里面用的比较多的刷题网站是leetcod ...

  4. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取

    牛客网--字节跳动面试题--特征提取 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:特征提取 来源:牛客网 题目 ...

  5. Java牛客项目课_仿牛客网讨论区_第八章

    文章目录 第八章.项目发布与总结 8.1. 单元测试 8.2.项目监控 8.3.项目部署 宝塔面板.yum.rpm.压缩包 安装 unzip.Java1.8.Maven.MySQL.Redis.Kaf ...

  6. 牛客网_Go语言相关练习_选择题(2)

    注:题目来源均出自牛客网. 一.选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用. Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有. C选项函数声明语法有 ...

  7. HJ6 质数因子_牛客网_华为机试题

    描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) 数据范围: 输入描述: 输入一个整数 输出描述: 按照从小到大的顺序输出它 ...

  8. 牛客网算法——名企面试的笔试(6)

    NC155牛牛的递增数列 package 牛客网名企面试笔试问题2021;import org.junit.Test;/*** @Classname NC155牛牛的数列* @Description ...

  9. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  10. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

最新文章

  1. TCP/IP 广播的发送和接收
  2. python打开方式包括_python打开文件的方式有哪些
  3. 第一个python小游戏
  4. (转)随机数生成工具
  5. php分割文本读入数组,PHP fgets按行读取字符串和explode分割字符串为数组
  6. 区块链宠物社区Pawtocol与去中心化社交网络memeunity达成合作
  7. 低解密指数攻击_CTF中RSA的一些攻击思路
  8. UIScrollView偏移问题
  9. 阿里终面:优秀的代码都是如何分层的?
  10. 《京东大鼓——老年迪斯科》(董湘昆)(唱词文本)
  11. how to use 1checker_vim command
  12. 最简单易懂的ios p12证书 和描述文件的创建,IPA上传,最完整的ios上架苹果商店教程
  13. python:类基础
  14. 【目标检测】|RFB ECCV2018
  15. CSS笔记(菜鸟教程)
  16. 互联网开放医疗之中医
  17. Django 项目管理
  18. Character.UnicodeBlock中cjk的说明
  19. ocx 访问 html,HTML 加载ocx VB编写的控件
  20. 清华“差生”10年奋斗经历:只写事业,不写女人

热门文章

  1. openerp 打印报表pdf中文乱码解决办法
  2. 数据结构第一章绪论知识总结(严蔚敏)
  3. 智能指针的标准之争:Boost vs. Loki (转载)
  4. 微软亚洲研究院多模态模型NÜWA:以自然语言创造视觉内容
  5. linux各个版本简介 (未完待续)
  6. python xlrd pandas_Python:Pandas pd.read_excel提供ImportError:为Excel supp安装xlrd = 0.9.0
  7. MacBook 版 IDEA- 2022.2 新版本UI插件
  8. OSChina 周三乱弹 —— 有种思念叫忘穿秋裤
  9. 太空大战2d游戏制作
  10. android 科大讯飞语音播报简单集成