常见网络面试题总结

1.网页访问及访问推送

1.1 浏览器输入网址访问网页全过程

当我们在浏览器中输入一个网址,比如www.baidu.com,浏览器就会加载出百度的主页。那么浏览器背后完成的具体是怎么样的呢?

总结起来大概的流程是这样的:
(1)浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP
(2)然后通过IP地址找到IP对应的服务器后,请求建立TCP连接
(3)浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后开始处理请求包
(4)在服务器收到请求之后,服务器调用自身服务,返回HTTP Response(响应)包给客户端
(5)客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。

1.2 服务器推送的好处是什么?

当浏览器请求一个网页时,服务器将会发回HTML,在服务器开始发送JavaScript、图片和CSS前,服务器需要等待浏览器解析HTML和发送所有内嵌资源的请求。服务器推送服务通过“推送”那些它认为客户端将会需要的内容到客户端的缓存中,以此来避免往返的延迟。

2.HTTP协议

2.1 HTTP/2相关问题

2.1.1 什么是HTTP/2

HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议(是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验)。

2.1.2 HTTP/2与HTTP/1.1区别

HTTP2.0与HTTP1.1相比,主要区别包括:

HTTP/2采用二进制格式而非文本格式;

HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行;
使用报头压缩,HTTP/2降低了开销;
HTTP/2让服务器可以将响应主动“推送”到客户端缓存中;

2.1.3 HTTP/2为什么是二进制

比起像HTTP/1.x这样的文本协议,二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。

2.1.4 为什么 HTTP/2 需要多路传输

HTTP/1.x 有个问题叫线端阻塞(head-of-line blocking), 它是指一个连接(connection)一次只提交一个请求的效率比较高, 多了就会变慢。 HTTP/1.1 试过用流水线(pipelining)来解决这个问题, 但是效果并不理想(数据量较大或者速度较慢的响应, 会阻碍排在他后面的请求)。此外, 由于网络媒介(intermediary )和服务器不能很好的支持流水线, 导致部署起来困难重重。

而多路传输(Multiplexing)能很好的解决这些问题, 因为它能同时处理多个消息的请求和响应; 甚至可以在传输过程中将一个消息跟另外一个掺杂在一起。所以客户端只需要一个连接就能加载一个页面。

2.2 HTTP与HTTPS区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

更多信息,可以参看:
HTTPS 与 HTTP2 协议分析:https://blog.csdn.net/csdnvr/article/details/80128655
HTTP2和HTTPS来不来了解一下?https://www.jianshu.com/p/11c2614ef3f2

3.HTTP请求与响应

3.1 HTTP请求方法

GET     通过请求URI得到资源
POST    用于添加新的内容
PUT     用于修改某个内容
DELETE  删除某个内容
OPTIONS 询问可以执行哪些方法
HEAD    类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
TRACE   用于远程诊断服务器
CONNECT 用于代理进行传输,如使用SSL

PATCH   部分文档更改
PROPFIND  查看属性
PROPPATCH 设置属性
MKCOL     创建集合(文件夹)
COPY      拷贝
MOVE      移动
LOCK      加锁
UNLOCK    解锁

3.2 HTTP响应

HTTP状态码分类,及详细描述如下:

3.2.1 状态码分类

1**		信息,服务器收到请求,需要请求者继续执行操作

2**		成功,操作被成功接收并处理
3**		重定向,需要进一步的操作以完成请求
4**		客户端错误,请求包含语法错误或无法完成请求
5**		服务器错误,服务器在处理请求的过程中发生了错误

3.2.2 HTTP状态码列表

状态码		状态码英文名称							中文描述
1**			信息,服务器收到请求,需要请求者继续执行操作
100			Continue						继续。客户端应继续其请求
101			Switching Protocols				切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

2**			成功,操作被成功接收并处理
200	*		OK								请求成功。常用于GET与POST请求
201	*		Created							已创建。成功请求并创建了新的资源
202	*		Accepted						已接受。已经接受请求,但未处理完成
203	*		Non-Authoritative Information	非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204			No Content						无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205			Reset Content					重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206			Partial Content					部分内容。服务器成功处理了部分GET请求
 
3**			重定向,需要进一步的操作以完成请求
300	*		Multiple Choices				多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301	*		Moved Permanently				永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302			Found							临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303			See Other						查看其它地址。与301类似。使用GET和POST请求查看
304	*		Not Modified					未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305	*		Use Proxy						使用代理。所请求的资源必须通过代理访问
306			Unused							已经被废弃的HTTP状态码
307			Temporary Redirect				临时重定向。与302类似。使用GET请求重定向
 
4**			客户端错误,请求包含语法错误或无法完成请求
400	*		Bad Request						客户端请求的语法错误,服务器无法理解
401	*		Unauthorized					请求要求用户的身份认证
402			Payment Required				保留,将来使用
403	*		Forbidden						服务拒绝。服务器理解请求客户端的请求,但是拒绝执行此请求
404	*		Not Found						找不到资源。服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405			Method Not Allowed				客户端请求中的方法被禁止
406			Not Acceptable					服务器无法根据客户端请求的内容特性完成请求
407			Proxy Authentication Required	请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408			Request Time-out				服务器等待客户端发送的请求时间过长,超时
409			Conflict						服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突
410			Gone							客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411			Length Required					服务器无法处理客户端发送的不带Content-Length的请求信息
412			Precondition Failed				客户端请求信息的先决条件错误
413			Request Entity Too Large		由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414			Request-URI Too Large			请求的URI过长(URI通常为网址),服务器无法处理
415			Unsupported Media Type			服务器无法处理请求附带的媒体格式
416			Requested range not satisfiable	客户端请求的范围无效
417			Expectation Failed				服务器无法满足Expect的请求头信息
 
5**			服务器错误,服务器在处理请求的过程中发生了错误
500			Internal Server Error			服务器内部错误,无法完成请求
501			Not Implemented					服务器不支持请求的功能,无法完成请求
502			Bad Gateway						充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503			Service Unavailable				由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504			Gateway Time-out				充当网关或代理的服务器,未及时从远端服务器获取请求
505			HTTP Version not supported		服务器不支持请求的HTTP协议的版本,无法完成处理

4.网络七层模型

4.1网络七层模型对应协议及物理设备

层级            		网络协议              				对应物理设备
物理层:RJ45、CLOCK、IEEE802.3       				(中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC  				(网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP  (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASCII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

注:应用层与传输层之间的关系以及端口号起到的作用。

常用协议对应的端口号

应用程序FTPTFTPTELNETSMTPDNSHTTPSSHMYSQL
熟知端口21,206923255380223306
传输层协议TCPUDPTCPTCPUDPTCPTCPTCP

4.2 TCP和UDP协议

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于将广播和细节控制交给应用的通信传输中,是不可靠传输。

两者的区别大致如下:

TCP面向连接;UDP面向非连接,即发送数据前不需要建立链接。
TCP提供可靠的服务(数据传输),UDP无法保证服务的可靠性。
TCP面向字节流,UDP面向报文。
TCP数据传输慢,UDP数据传输快。
TCP提供一种面向连接的、可靠的字节流服务
在一个TCP连接中,仅有两方进行彼此通信,因此广播和多播不能用于TCP
TCP使用校验和,确认和重传机制来保证可靠传输
TCP使用累积确认
TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love666666shen

谢谢您的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值