《熬夜整理的20道计算机网络面试题.docx》由会员分享,可在线阅读,更多相关《熬夜整理的20道计算机网络面试题.docx(18页珍藏版)》请在第一文库网上搜索。
1、熬夜整理的20道计算机网络面试题在面试中计算机网络是面试官最喜欢考察的内容之一,下面这夺命20问一定要掌握哟!网络分层1、说说OSI七层、TCP/IP四层的关系和区别?OSI七层从下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。一张图给你整明白:r NFSRSTATMP、!U阳匕“MJNADuewtfW1M|iSM SUNHi4收FRUDPtr才果成la(图片来源于网络)TCP/IP四层从下往上依次是:网络接口层、网络层、传输层、应用层。与OSI七层的映射关系如下:TCP/IP模型应用层传输层网络层网络接口层特点:层与层之间相互独立又相互依靠上层依赖于下层,下层为上层
2、提供服务敲黑板:TCP/IP四层是OSI七层的简化版,已经成为实事国际标准。TCP/IP2、说说TCP与UDP的区别?先上一张对比图:UDP是否连接无连接6是否可靠不可靠传输,不使用流量控制和拥塞控制E连接对象个数 支持一对一,一对多,多对一和多对多交互通信 J传输方式面向报文G首部开销首部开销小,仅8字节适用场景适用于实时应用(IP电话、视频会议、直播等)总结TCP向上层提供面向连接的可靠服务,UDP向上层提供无连接不可靠服务。UDP没有TCP传输可靠,但是可以在实时性要求搞的地方有所作为。对数据准确性要求高,速度可以相对较慢的,可以选用TCP。3、TCP是如何实现数据的可靠性?一句话:通过
3、校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制等机制来保证可靠性。(1)校验和在数据传输过程中,将发送的数据段都当做一个16位的整数,将这些整数加起来,并且前面的进位不能丢弃,补在最后,然后取反,得到校验和。发送方:在发送数据之前计算校验和,并进行校验和的填充。接收方:收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方进行比较。(2)序列号TCP传输时将每个字节的数据都进行了编号,这就是序列号。序列号的作用不仅仅是应答作用,有了序列号能够将接收到的数据根据序列号进行排序,并且去掉重复的数据。(3)确认应答TCP传输过程中,每次接收方接收到数据后,都会对传输方进行确认
4、应答,也就是发送ACK报文,这个ACK报文中带有对应的确认序列号,告诉发送方,接收了哪些数据,下一次数据从哪里传。(4)超时重传在进行TCP传输时,由于存在确认应答与序列号机制,也就是说发送方发送一部分数据后,都会等待接收方发送的ACK报文,并解析ACK报文,判断数据是否传输成功。如果发送方发送完数据后,迟迟都没有接收到接收方传来的ACK报文,那么就对刚刚发送的数据进行重发。(5)连接管理就是指三次握手、四次挥手的过程。(6)流量控制如果发送方的发送速度太快,会导致接收方的接收缓冲区填充满了,这时候继续传输数据,就会造成大量丢包,进而引起丢包重传等等一系列问题。TCP支持根据接收端的处理能力来
5、决定发送端的发送速度,这就是流量控制机制。具体实现方式:接收端将自己的接收缓冲区大小放入TCP首部的窗口大小字段中,通过ACK通知发送端。(7)拥塞控制TCP传输过程中一开始就发送大量数据,如果当时网络非常拥堵,可能会造成拥堵加剧。所以TCP引入了慢启动机制,在开始发送数据的时候,先发少量的数据探探路。4、说说TCP协议如何提高传输效率?一句话:TCP协议提高效率的方式有滑动窗口、快重传、延迟应答、捎带应答等。(1)滑动窗口如果每一个发送的数据段,都耍收到ACK应答之后再发送下一个数据段,这样的话我们效率很低,大部分时间都用在了等待ACK应答上了。为了提高效率我们可以一次发送多条数据,这样就能
6、使等待时间大大减少,从而提高性能。窗口大小指的是无需等待确认应答而可以继续发送数据的最大值。(2)快重传快重传也叫高速重发控制。那么如果出现了丢包,需要进行重传。一般分为两种情况:情况一:数据包已经抵达,ACK被丢了。这种情况下,部分ACK丢了并不影响,因为可以通过后续的ACK进行确认;情况二:数据包直接丢了。发送端会连续收到多个相同的ACK确认,发送端立即将对应丢失的数据重传。(3)延迟应答如果接收数据的主机立刻返回ACK应答,这时候返回的窗口大小可能比较小。假设接收端缓冲区为1M,一次收到了 512K的数据;如果立刻应答,返回的窗口就是512K;但实际上可能处理端处理速度很快,10ms之内
7、就把512K的数据从缓存区消费掉了;在这种情况下,接收端处理还远没有达到自己的极限,即使窗口再放大一些,也能处理过来;如果接收端稍微等一会在应答,比如等待200nls再应答,那么这个时候返回的窗口大小就是1M;窗口越大,网络吞吐量就越大,传输效率就越高;我们的H标是在保证网络不拥塞的情况下尽量提高传输效率。(4)捎带应答在延迟应答的基础匕很多情况下,客户端服务器在应用层也是一发一收的。这时候常常采用捎带应答的方式来提高效率,而ACK响应常常伴随着数据报文共同传输。如:三次握手。5、你知道TCP如何处理拥塞吗?网络拥塞现象是指到达通信网络中某一部分的分组数量过多,使得该部分网络来不及处理,以致引
8、起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。拥塞控制是处理网络拥塞现象的一种机制。拥塞控制的四个阶段:慢启动拥塞避免快速重传快速恢复6、讲一下三次握手和四次挥手全过程客户端三次握手的过程给面试官甩一张图:服务器端四次挥手的过程再给面试官甩一张图:应用程序关闭连接发送FIN报文段接收ACK报文段发送方AFIN+ACK接收FIN+ACK文段,发为ACK报文段,seq=v+lACK=1,确认号=w+l7、为什么TCP链接需要三次握手,两次不可以么,为什么?两次握手只能保证单向连接是畅通的第一步,客户端给服务端发送一条消息:你好,服务端。第二步,服务端收到
9、消息,同时给客户端回复一条消息:收到!你好客户端。这样的两次握手过程,客户端给服务端打招呼,服务端收到了,说明客户端可以正常给服务端发送数据。但是服务端给客户端打招呼,服务端没有收到反馈,也就不能确保服务端是否能正常给客户端发送消息。只有经过第三次握手,才能确保双向都可以接收到对方的发送的数据 第三步,客户端收到服务端发送的消息,问复:收到!这样就证明了客户端能正常收到服务端的消息。8、IP地址是怎样分类的,你知道吗?先说一下IP的基本特点:IP地址由四段组成,每个字段是一个字节,8位,最大值是255。TP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表
10、示其属于该网络中的哪一台主机。IP地址主要分为A、B、C三类及特殊地址D、E这五类,甩一张图:7位A类|。|网络号|:14位B类 | 1 | 0 | 网络号 | 一21位C类 | 1 | 1 | o |网络号d 类 10多E类1 I 1 1 1 0A类:(1.0.0. 0-126. 0. 0. 0)一般用于大型网络。B类:(128. 0. 0. 0-191. 255. 0. 0)一般用于中等规模网络。C 类:(192. 0. 0. 0-223. 255. 255. 0) 一般用于小型网络。D类:是多播地址,地址的网络号取值于224239之间,一般用于多路广播用户。E类:是保留地址。地址的网络号
11、取值于240、255之间。HTTP协议9讲一下httpl. 1和http2有什么区别?HTTP1. 1持久连接请求管道化增加缓存处理(新的字段如cache-control)增加Host字段、支持断点传输等HTTP2.0二进制分帧多路复用(或连接共享)头部压缩服务器推送10、说说HTTP和HTTPS的区别?(1) HTTPS协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。(2) HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。(3) HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。(4) HTTP的连
12、接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。11、你知道对称加密和非对称加密的区别和原理吗?对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。由于非对称加密的方式不需耍发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它比较慢,所以我们还是要用对称加密来传送消息,但对
13、称加密所使用的密钥我们可以通过非对称加密的方式发送出去。12、常见的状态码有哪些?1XX :请求处理中,请求已被接受,正在处理2XX :请求成功,请求被成功处理200 0K3XX :重定向,要完成请求必须进行进一步处理301 :永久性转移302 :暂时性转移304 :己缓存4 X X :客户端错误,请求不合法400: Bad Request,请求有语法问题403:拒绝请求404:客户端所访问的页面不存在5XX :服务器端错误,服务器不能处理合法请求500 :服务器内部错误503 :服务不可用,稍等13、http中常见的header字段有哪些?cookie,请求时传递给服务端的cookie信息s
14、et-cookie,响应报文首部设置要传递给客户端的cookie信息al 1 ow,支持什么HTTP方法last-modified,资源的最后修改时间expires,设置资源缓存的失败日期content-language,实体的资源语言content-encoding,实体的编码格式content-length,实体主体部分的大小单位是字节content-range ,返回的实体的哪些范围content - type ,哪些类型accept-ranges ,处理的范围请求age,告诉客户端服务器在多久前创建了响应vary,代理服务器的缓存信息location,用于指定重定向后的URI If-Match,值是资源的唯一标识User-Agent,将创建请求的浏览器和用户代理名称等信息传递给服务器Transfer-Encoding,传输报文的主体编码方式connection,管理持久连接,keep-alive , close Cache-Control,控制浏览器的强缓存14、Get与POST的区别(1)GET 一般用来从服务器上获取资源,POST 一般用来创建资源;(2) GET是基等的,即读取同一个资源,总是得到相同的数据,而POST不是暴等的。GET不会改变服务器上的资源,而POST会对服务器资源进行改变;(3)从请